You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
79 lines
1.7 KiB
79 lines
1.7 KiB
#!/bin/sh |
|
|
|
test_description='subtree merge strategy' |
|
|
|
. ./test-lib.sh |
|
|
|
test_expect_success setup ' |
|
|
|
s="1 2 3 4 5 6 7 8" |
|
for i in $s; do echo $i; done >hello && |
|
git add hello && |
|
git commit -m initial && |
|
git checkout -b side && |
|
echo >>hello world && |
|
git add hello && |
|
git commit -m second && |
|
git checkout master && |
|
for i in mundo $s; do echo $i; done >hello && |
|
git add hello && |
|
git commit -m master |
|
|
|
' |
|
|
|
test_expect_success 'subtree available and works like recursive' ' |
|
|
|
git merge -s subtree side && |
|
for i in mundo $s world; do echo $i; done >expect && |
|
test_cmp expect hello |
|
|
|
' |
|
|
|
test_expect_success 'setup' ' |
|
mkdir git-gui && |
|
cd git-gui && |
|
git init && |
|
echo git-gui > git-gui.sh && |
|
o1=$(git hash-object git-gui.sh) && |
|
git add git-gui.sh && |
|
git commit -m "initial git-gui" && |
|
cd .. && |
|
mkdir git && |
|
cd git && |
|
git init && |
|
echo git >git.c && |
|
o2=$(git hash-object git.c) && |
|
git add git.c && |
|
git commit -m "initial git" |
|
' |
|
|
|
test_expect_success 'initial merge' ' |
|
git remote add -f gui ../git-gui && |
|
git merge -s ours --no-commit gui/master && |
|
git read-tree --prefix=git-gui/ -u gui/master && |
|
git commit -m "Merge git-gui as our subdirectory" && |
|
git ls-files -s >actual && |
|
( |
|
echo "100644 $o1 0 git-gui/git-gui.sh" |
|
echo "100644 $o2 0 git.c" |
|
) >expected && |
|
git diff -u expected actual |
|
' |
|
|
|
test_expect_success 'merge update' ' |
|
cd ../git-gui && |
|
echo git-gui2 > git-gui.sh && |
|
o3=$(git hash-object git-gui.sh) && |
|
git add git-gui.sh && |
|
git commit -m "update git-gui" && |
|
cd ../git && |
|
git pull -s subtree gui master && |
|
git ls-files -s >actual && |
|
( |
|
echo "100644 $o3 0 git-gui/git-gui.sh" |
|
echo "100644 $o2 0 git.c" |
|
) >expected && |
|
git diff -u expected actual |
|
' |
|
|
|
test_done
|
|
|