Merge branch 'es/rebase-i-no-abbrev'
authorJunio C Hamano <gitster@pobox.com>
Wed, 11 Sep 2013 22:02:29 +0000 (15:02 -0700)
committerJunio C Hamano <gitster@pobox.com>
Wed, 11 Sep 2013 22:02:29 +0000 (15:02 -0700)
The commit object names in the insn sheet that was prepared at the
beginning of "rebase -i" session can become ambiguous as the
rebasing progresses and the repository gains more commits. Make
sure the internal record is kept with full 40-hex object names.

* es/rebase-i-no-abbrev:
rebase -i: fix short SHA-1 collision
t3404: rebase -i: demonstrate short SHA-1 collision
t3404: make tests more self-contained

1  2 
git-rebase--interactive.sh
t/t3404-rebase-interactive.sh
Simple merge
index 4dbeddb0de17eb9fa87fbed98daabcb180235555,6cdc2eadc7425f3c067b114460d2052d66402b2d..50e22b1cadff4252dfb552a4db930f49544952aa
@@@ -976,17 -1037,28 +1037,41 @@@ test_expect_success 'rebase -i with --s
        test $(cat file1) = Z
  '
  
 +test_expect_success 'rebase -i error on commits with \ in message' '
 +      current_head=$(git rev-parse HEAD)
 +      test_when_finished "git rebase --abort; git reset --hard $current_head; rm -f error" &&
 +      test_commit TO-REMOVE will-conflict old-content &&
 +      test_commit "\temp" will-conflict new-content dummy &&
 +      (
 +      EDITOR=true &&
 +      export EDITOR &&
 +      test_must_fail git rebase -i HEAD^ --onto HEAD^^ 2>error
 +      ) &&
 +      test_expect_code 1 grep  "      emp" error
 +'
 +
+ test_expect_success 'short SHA-1 setup' '
+       test_when_finished "git checkout master" &&
+       git checkout --orphan collide &&
+       git rm -rf . &&
+       (
+       unset test_tick &&
+       test_commit collide1 collide &&
+       test_commit --notick collide2 collide &&
+       test_commit --notick collide3 collide
+       )
+ '
+ test_expect_success 'short SHA-1 collide' '
+       test_when_finished "reset_rebase && git checkout master" &&
+       git checkout collide &&
+       (
+       unset test_tick &&
+       test_tick &&
+       set_fake_editor &&
+       FAKE_COMMIT_MESSAGE="collide2 ac4f2ee" \
+       FAKE_LINES="reword 1 2" git rebase -i HEAD~2
+       )
+ '
  test_done