mirror of
https://github.com/git/git
synced 2024-08-25 02:35:46 +00:00
![Junio C Hamano](/assets/img/avatar_default.png)
We had this in "git merge" manual for eternity: 'git merge' <msg> HEAD <commit>... [This] syntax (<msg> `HEAD` <commit>...) is supported for historical reasons. Do not use it from the command line or in new scripts. It is the same as `git merge -m <msg> <commit>...`. With the update to "git merge" to make it understand what is recorded in FETCH_HEAD directly, including Octopus merge cases, we now can rewrite the use of this syntax in "git pull" with a simple "git merge FETCH_HEAD". Also there are quite a few fallouts in the test scripts, and it turns out that "git cvsimport" also uses this old syntax to record a merge. Judging from this result, I would not be surprised if dropping the support of the old syntax broke scripts people have written and been relying on for the past ten years. But at least we can start the deprecation process by throwing a warning message when the syntax is used. With luck, we might be able to drop the support in a few years. Signed-off-by: Junio C Hamano <gitster@pobox.com>
97 lines
1.3 KiB
Bash
Executable file
97 lines
1.3 KiB
Bash
Executable file
#!/bin/sh
|
|
#
|
|
# Copyright (c) 2005 Fredrik Kuivinen
|
|
#
|
|
|
|
# See http://marc.info/?l=git&m=111463358500362&w=2 for a
|
|
# nice description of what this is about.
|
|
|
|
|
|
test_description='Test criss-cross merge'
|
|
. ./test-lib.sh
|
|
|
|
test_expect_success 'prepare repository' \
|
|
'echo "1
|
|
2
|
|
3
|
|
4
|
|
5
|
|
6
|
|
7
|
|
8
|
|
9" > file &&
|
|
git add file &&
|
|
git commit -m "Initial commit" file &&
|
|
git branch A &&
|
|
git branch B &&
|
|
git checkout A &&
|
|
echo "1
|
|
2
|
|
3
|
|
4
|
|
5
|
|
6
|
|
7
|
|
8 changed in B8, branch A
|
|
9" > file &&
|
|
git commit -m "B8" file &&
|
|
git checkout B &&
|
|
echo "1
|
|
2
|
|
3 changed in C3, branch B
|
|
4
|
|
5
|
|
6
|
|
7
|
|
8
|
|
9
|
|
" > file &&
|
|
git commit -m "C3" file &&
|
|
git branch C3 &&
|
|
git merge -m "pre E3 merge" A &&
|
|
echo "1
|
|
2
|
|
3 changed in E3, branch B. New file size
|
|
4
|
|
5
|
|
6
|
|
7
|
|
8 changed in B8, branch A
|
|
9
|
|
" > file &&
|
|
git commit -m "E3" file &&
|
|
git checkout A &&
|
|
git merge -m "pre D8 merge" C3 &&
|
|
echo "1
|
|
2
|
|
3 changed in C3, branch B
|
|
4
|
|
5
|
|
6
|
|
7
|
|
8 changed in D8, branch A. New file size 2
|
|
9" > file &&
|
|
git commit -m D8 file'
|
|
|
|
test_expect_success 'Criss-cross merge' 'git merge -m "final merge" B'
|
|
|
|
cat > file-expect <<EOF
|
|
1
|
|
2
|
|
3 changed in E3, branch B. New file size
|
|
4
|
|
5
|
|
6
|
|
7
|
|
8 changed in D8, branch A. New file size 2
|
|
9
|
|
EOF
|
|
|
|
test_expect_success 'Criss-cross merge result' 'cmp file file-expect'
|
|
|
|
test_expect_success 'Criss-cross merge fails (-s resolve)' \
|
|
'git reset --hard A^ &&
|
|
test_must_fail git merge -s resolve -m "final merge" B'
|
|
|
|
test_done
|