Quick test script for generating reasonably complex merge scenarios.
This commit is contained in:
parent
768d6d1005
commit
847e868167
@ -149,6 +149,7 @@ copy_commit()
|
|||||||
GIT_COMMITTER_NAME \
|
GIT_COMMITTER_NAME \
|
||||||
GIT_COMMITTER_EMAIL \
|
GIT_COMMITTER_EMAIL \
|
||||||
GIT_COMMITTER_DATE
|
GIT_COMMITTER_DATE
|
||||||
|
(echo -n '*'; cat ) | # FIXME
|
||||||
git commit-tree "$2" $3 # reads the rest of stdin
|
git commit-tree "$2" $3 # reads the rest of stdin
|
||||||
) || die "Can't copy commit $1"
|
) || die "Can't copy commit $1"
|
||||||
}
|
}
|
||||||
@ -199,7 +200,7 @@ cmd_split()
|
|||||||
cache_setup || exit $?
|
cache_setup || exit $?
|
||||||
|
|
||||||
if [ -n "$onto" ]; then
|
if [ -n "$onto" ]; then
|
||||||
echo "Reading history for --onto=$onto..."
|
debug "Reading history for --onto=$onto..."
|
||||||
git rev-list $onto |
|
git rev-list $onto |
|
||||||
while read rev; do
|
while read rev; do
|
||||||
# the 'onto' history is already just the subdir, so
|
# the 'onto' history is already just the subdir, so
|
||||||
@ -254,7 +255,7 @@ cmd_split()
|
|||||||
latest_old=$(cache_get latest_old)
|
latest_old=$(cache_get latest_old)
|
||||||
git merge -s ours \
|
git merge -s ours \
|
||||||
-m "$(merge_msg $dir $latest_old $latest_new)" \
|
-m "$(merge_msg $dir $latest_old $latest_new)" \
|
||||||
$latest_new
|
$latest_new >&2
|
||||||
fi
|
fi
|
||||||
echo $latest_new
|
echo $latest_new
|
||||||
exit 0
|
exit 0
|
||||||
|
96
test.sh
Executable file
96
test.sh
Executable file
@ -0,0 +1,96 @@
|
|||||||
|
#!/bin/bash -x
|
||||||
|
. shellopts.sh
|
||||||
|
set -e
|
||||||
|
|
||||||
|
rm -rf mainline subproj
|
||||||
|
mkdir mainline subproj
|
||||||
|
|
||||||
|
cd subproj
|
||||||
|
git init
|
||||||
|
|
||||||
|
touch sub1
|
||||||
|
git add sub1
|
||||||
|
git commit -m 'sub-1'
|
||||||
|
git branch sub1
|
||||||
|
git branch -m master subproj
|
||||||
|
|
||||||
|
touch sub2
|
||||||
|
git add sub2
|
||||||
|
git commit -m 'sub-2'
|
||||||
|
git branch sub2
|
||||||
|
|
||||||
|
touch sub3
|
||||||
|
git add sub3
|
||||||
|
git commit -m 'sub-3'
|
||||||
|
git branch sub3
|
||||||
|
|
||||||
|
cd ../mainline
|
||||||
|
git init
|
||||||
|
touch main1
|
||||||
|
git add main1
|
||||||
|
git commit -m 'main-1'
|
||||||
|
git branch -m master mainline
|
||||||
|
|
||||||
|
git fetch ../subproj sub1
|
||||||
|
git branch sub1 FETCH_HEAD
|
||||||
|
git read-tree --prefix=subdir FETCH_HEAD
|
||||||
|
git checkout subdir
|
||||||
|
git commit -m 'initial-subdir-merge'
|
||||||
|
|
||||||
|
git merge -m 'merge -s -ours' -s ours FETCH_HEAD
|
||||||
|
|
||||||
|
touch subdir/main-sub3
|
||||||
|
git add subdir/main-sub3
|
||||||
|
git commit -m 'main-sub3'
|
||||||
|
|
||||||
|
touch main-2
|
||||||
|
git add main-2
|
||||||
|
git commit -m 'main-2 boring'
|
||||||
|
|
||||||
|
touch subdir/main-sub4
|
||||||
|
git add subdir/main-sub4
|
||||||
|
git commit -m 'main-sub4'
|
||||||
|
|
||||||
|
git fetch ../subproj sub2
|
||||||
|
git branch sub2 FETCH_HEAD
|
||||||
|
git merge -s subtree FETCH_HEAD
|
||||||
|
git branch pre-split
|
||||||
|
|
||||||
|
split1=$(git subtree split --onto FETCH_HEAD subdir --rejoin)
|
||||||
|
echo "split1={$split1}"
|
||||||
|
git branch split1 "$split1"
|
||||||
|
|
||||||
|
touch subdir/main-sub5
|
||||||
|
git add subdir/main-sub5
|
||||||
|
git commit -m 'main-sub5'
|
||||||
|
|
||||||
|
cd ../subproj
|
||||||
|
git fetch ../mainline split1
|
||||||
|
git branch split1 FETCH_HEAD
|
||||||
|
git merge FETCH_HEAD
|
||||||
|
|
||||||
|
touch sub6
|
||||||
|
git add sub6
|
||||||
|
git commit -m 'sub6'
|
||||||
|
|
||||||
|
cd ../mainline
|
||||||
|
split2=$(git subtree split subdir --rejoin)
|
||||||
|
git branch split2 "$split2"
|
||||||
|
|
||||||
|
touch subdir/main-sub7
|
||||||
|
git add subdir/main-sub7
|
||||||
|
git commit -m 'main-sub7'
|
||||||
|
|
||||||
|
split3=$(git subtree split subdir --rejoin)
|
||||||
|
git branch split3 "$split3"
|
||||||
|
|
||||||
|
cd ../subproj
|
||||||
|
git fetch ../mainline split3
|
||||||
|
git branch split3 FETCH_HEAD
|
||||||
|
git merge FETCH_HEAD
|
||||||
|
git branch subproj-merge-split3
|
||||||
|
|
||||||
|
cd ../mainline
|
||||||
|
git fetch ../subproj subproj-merge-split3
|
||||||
|
git branch subproj-merge-split3 FETCH_HEAD
|
||||||
|
git merge subproj-merge-split3
|
Loading…
Reference in New Issue
Block a user