Merge branch 'jk/help-unknown-ref-fix'
authorJunio C Hamano <gitster@pobox.com>
Thu, 13 Jun 2019 20:19:42 +0000 (13:19 -0700)
committerJunio C Hamano <gitster@pobox.com>
Thu, 13 Jun 2019 20:19:42 +0000 (13:19 -0700)
Improve the code to show args with potential typo that cannot be
interpreted as a commit-ish.

* jk/help-unknown-ref-fix:
help_unknown_ref(): check for refname ambiguity
help_unknown_ref(): duplicate collected refnames

1  2 
help.c
t/t7600-merge.sh
diff --cc help.c
Simple merge
index 3e16aaed3b775b6e02f7cd6708f07746841271eb,36b2c8c91ffdf57d192281857a075e12b5eb801f..612ebe7d8289d10fe35a72945b5991dca169c1c2
@@@ -867,30 -822,24 +867,50 @@@ test_expect_success EXECKEEPSPID 'kille
        verify_parents $c0 $c1
  '
  
 +test_expect_success 'merge --quit' '
 +      git init merge-quit &&
 +      (
 +              cd merge-quit &&
 +              test_commit base &&
 +              echo one >>base.t &&
 +              git commit -am one &&
 +              git branch one &&
 +              git checkout base &&
 +              echo two >>base.t &&
 +              git commit -am two &&
 +              test_must_fail git -c rerere.enabled=true merge one &&
 +              test_path_is_file .git/MERGE_HEAD &&
 +              test_path_is_file .git/MERGE_MODE &&
 +              test_path_is_file .git/MERGE_MSG &&
 +              git rerere status >rerere.before &&
 +              git merge --quit &&
 +              test_path_is_missing .git/MERGE_HEAD &&
 +              test_path_is_missing .git/MERGE_MODE &&
 +              test_path_is_missing .git/MERGE_MSG &&
 +              git rerere status >rerere.after &&
 +              test_must_be_empty rerere.after &&
 +              ! test_cmp rerere.after rerere.before
 +      )
 +'
 +
+ test_expect_success 'merge suggests matching remote refname' '
+       git commit --allow-empty -m not-local &&
+       git update-ref refs/remotes/origin/not-local HEAD &&
+       git reset --hard HEAD^ &&
+       # This is white-box testing hackery; we happen to know
+       # that reading packed refs is more picky about the memory
+       # ownership of strings we pass to for_each_ref() callbacks.
+       git pack-refs --all --prune &&
+       test_must_fail git merge not-local 2>stderr &&
+       grep origin/not-local stderr
+ '
+ test_expect_success 'suggested names are not ambiguous' '
+       git update-ref refs/heads/origin/not-local HEAD &&
+       test_must_fail git merge not-local 2>stderr &&
+       grep remotes/origin/not-local stderr
+ '
  test_done