зеркало из https://github.com/microsoft/git.git
Merge branch 'sb/maint-octopus' into maint
* sb/maint-octopus: octopus: remove dead code octopus: reenable fast-forward merges octopus: make merge process simpler to follow Conflicts: git-merge-octopus.sh
This commit is contained in:
Коммит
ce67b3eed8
|
@ -44,9 +44,8 @@ esac
|
||||||
# MRC is the current "merge reference commit"
|
# MRC is the current "merge reference commit"
|
||||||
# MRT is the current "merge result tree"
|
# MRT is the current "merge result tree"
|
||||||
|
|
||||||
MRC=$head MSG= PARENT="-p $head"
|
MRC=$(git rev-parse --verify -q $head)
|
||||||
MRT=$(git write-tree)
|
MRT=$(git write-tree)
|
||||||
CNT=1 ;# counting our head
|
|
||||||
NON_FF_MERGE=0
|
NON_FF_MERGE=0
|
||||||
OCTOPUS_FAILURE=0
|
OCTOPUS_FAILURE=0
|
||||||
for SHA1 in $remotes
|
for SHA1 in $remotes
|
||||||
|
@ -61,19 +60,17 @@ do
|
||||||
exit 2
|
exit 2
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
eval pretty_name=\${GITHEAD_$SHA1:-$SHA1}
|
||||||
common=$(git merge-base --all $SHA1 $MRC) ||
|
common=$(git merge-base --all $SHA1 $MRC) ||
|
||||||
die "Unable to find common commit with $SHA1"
|
die "Unable to find common commit with $pretty_name"
|
||||||
|
|
||||||
case "$LF$common$LF" in
|
case "$LF$common$LF" in
|
||||||
*"$LF$SHA1$LF"*)
|
*"$LF$SHA1$LF"*)
|
||||||
echo "Already up-to-date with $SHA1"
|
echo "Already up-to-date with $pretty_name"
|
||||||
continue
|
continue
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
CNT=`expr $CNT + 1`
|
|
||||||
PARENT="$PARENT -p $SHA1"
|
|
||||||
|
|
||||||
if test "$common,$NON_FF_MERGE" = "$MRC,0"
|
if test "$common,$NON_FF_MERGE" = "$MRC,0"
|
||||||
then
|
then
|
||||||
# The first head being merged was a fast-forward.
|
# The first head being merged was a fast-forward.
|
||||||
|
@ -81,7 +78,7 @@ do
|
||||||
# tree as the intermediate result of the merge.
|
# tree as the intermediate result of the merge.
|
||||||
# We still need to count this as part of the parent set.
|
# We still need to count this as part of the parent set.
|
||||||
|
|
||||||
echo "Fast-forwarding to: $SHA1"
|
echo "Fast-forwarding to: $pretty_name"
|
||||||
git read-tree -u -m $head $SHA1 || exit
|
git read-tree -u -m $head $SHA1 || exit
|
||||||
MRC=$SHA1 MRT=$(git write-tree)
|
MRC=$SHA1 MRT=$(git write-tree)
|
||||||
continue
|
continue
|
||||||
|
@ -89,7 +86,7 @@ do
|
||||||
|
|
||||||
NON_FF_MERGE=1
|
NON_FF_MERGE=1
|
||||||
|
|
||||||
echo "Trying simple merge with $SHA1"
|
echo "Trying simple merge with $pretty_name"
|
||||||
git read-tree -u -m --aggressive $common $MRT $SHA1 || exit 2
|
git read-tree -u -m --aggressive $common $MRT $SHA1 || exit 2
|
||||||
next=$(git write-tree 2>/dev/null)
|
next=$(git write-tree 2>/dev/null)
|
||||||
if test $? -ne 0
|
if test $? -ne 0
|
||||||
|
|
|
@ -49,4 +49,55 @@ test_expect_success 'merge c1 with c2, c3, c4, ... c29' '
|
||||||
done
|
done
|
||||||
'
|
'
|
||||||
|
|
||||||
|
cat >expected <<\EOF
|
||||||
|
Trying simple merge with c2
|
||||||
|
Trying simple merge with c3
|
||||||
|
Trying simple merge with c4
|
||||||
|
Merge made by octopus.
|
||||||
|
c2.c | 1 +
|
||||||
|
c3.c | 1 +
|
||||||
|
c4.c | 1 +
|
||||||
|
3 files changed, 3 insertions(+), 0 deletions(-)
|
||||||
|
create mode 100644 c2.c
|
||||||
|
create mode 100644 c3.c
|
||||||
|
create mode 100644 c4.c
|
||||||
|
EOF
|
||||||
|
|
||||||
|
test_expect_success 'merge output uses pretty names' '
|
||||||
|
git reset --hard c1 &&
|
||||||
|
git merge c2 c3 c4 >actual &&
|
||||||
|
test_cmp actual expected
|
||||||
|
'
|
||||||
|
|
||||||
|
cat >expected <<\EOF
|
||||||
|
Already up-to-date with c4
|
||||||
|
Trying simple merge with c5
|
||||||
|
Merge made by octopus.
|
||||||
|
c5.c | 1 +
|
||||||
|
1 files changed, 1 insertions(+), 0 deletions(-)
|
||||||
|
create mode 100644 c5.c
|
||||||
|
EOF
|
||||||
|
|
||||||
|
test_expect_success 'merge up-to-date output uses pretty names' '
|
||||||
|
git merge c4 c5 >actual &&
|
||||||
|
test_cmp actual expected
|
||||||
|
'
|
||||||
|
|
||||||
|
cat >expected <<\EOF
|
||||||
|
Fast-forwarding to: c1
|
||||||
|
Trying simple merge with c2
|
||||||
|
Merge made by octopus.
|
||||||
|
c1.c | 1 +
|
||||||
|
c2.c | 1 +
|
||||||
|
2 files changed, 2 insertions(+), 0 deletions(-)
|
||||||
|
create mode 100644 c1.c
|
||||||
|
create mode 100644 c2.c
|
||||||
|
EOF
|
||||||
|
|
||||||
|
test_expect_success 'merge fast-forward output uses pretty names' '
|
||||||
|
git reset --hard c0 &&
|
||||||
|
git merge c1 c2 >actual &&
|
||||||
|
test_cmp actual expected
|
||||||
|
'
|
||||||
|
|
||||||
test_done
|
test_done
|
||||||
|
|
Загрузка…
Ссылка в новой задаче