Add --annotate option, and create recognizable file content during tests.
This commit is contained in:
parent
8c384754d8
commit
d0eb1b1417
@ -17,6 +17,7 @@ h,help show the help
|
||||
q quiet
|
||||
prefix= the name of the subdir to split out
|
||||
options for 'split'
|
||||
annotate= add a prefix to commit message of new commits
|
||||
onto= try connecting new tree to an existing one
|
||||
rejoin merge the new branch back into HEAD
|
||||
ignore-joins ignore prior --rejoin commits
|
||||
@ -30,6 +31,7 @@ command=
|
||||
onto=
|
||||
rejoin=
|
||||
ignore_joins=
|
||||
annotate=
|
||||
|
||||
debug()
|
||||
{
|
||||
@ -55,6 +57,8 @@ while [ $# -gt 0 ]; do
|
||||
shift
|
||||
case "$opt" in
|
||||
-q) quiet=1 ;;
|
||||
--annotate) annotate="$1"; shift ;;
|
||||
--no-annotate) annotate= ;;
|
||||
--prefix) prefix="$1"; shift ;;
|
||||
--no-prefix) prefix= ;;
|
||||
--onto) onto="$1"; shift ;;
|
||||
@ -178,7 +182,7 @@ copy_commit()
|
||||
GIT_COMMITTER_NAME \
|
||||
GIT_COMMITTER_EMAIL \
|
||||
GIT_COMMITTER_DATE
|
||||
(echo -n '*'; cat ) | # FIXME
|
||||
(echo -n "$annotate"; cat ) |
|
||||
git commit-tree "$2" $3 # reads the rest of stdin
|
||||
) || die "Can't copy commit $1"
|
||||
}
|
||||
|
67
test.sh
67
test.sh
@ -1,4 +1,11 @@
|
||||
#!/bin/bash -x
|
||||
create()
|
||||
{
|
||||
for d in 1 2 3 4 5 6 7 8 9 10; do
|
||||
echo "$1"
|
||||
done >"$1"
|
||||
}
|
||||
|
||||
. shellopts.sh
|
||||
set -e
|
||||
|
||||
@ -8,27 +15,27 @@ mkdir mainline subproj
|
||||
cd subproj
|
||||
git init
|
||||
|
||||
touch sub1
|
||||
create sub1
|
||||
git add sub1
|
||||
git commit -m 'sub-1'
|
||||
git commit -m 'sub1'
|
||||
git branch sub1
|
||||
git branch -m master subproj
|
||||
|
||||
touch sub2
|
||||
create sub2
|
||||
git add sub2
|
||||
git commit -m 'sub-2'
|
||||
git commit -m 'sub2'
|
||||
git branch sub2
|
||||
|
||||
touch sub3
|
||||
create sub3
|
||||
git add sub3
|
||||
git commit -m 'sub-3'
|
||||
git commit -m 'sub3'
|
||||
git branch sub3
|
||||
|
||||
cd ../mainline
|
||||
git init
|
||||
touch main1
|
||||
git add main1
|
||||
git commit -m 'main-1'
|
||||
create main4
|
||||
git add main4
|
||||
git commit -m 'main4'
|
||||
git branch -m master mainline
|
||||
|
||||
git fetch ../subproj sub1
|
||||
@ -38,49 +45,49 @@ git subtree add --prefix=subdir FETCH_HEAD
|
||||
# this shouldn't actually do anything, since FETCH_HEAD is already a parent
|
||||
git merge -m 'merge -s -ours' -s ours FETCH_HEAD
|
||||
|
||||
touch subdir/main-sub3
|
||||
git add subdir/main-sub3
|
||||
git commit -m 'main-sub3'
|
||||
create subdir/main-sub5
|
||||
git add subdir/main-sub5
|
||||
git commit -m 'main-sub5'
|
||||
|
||||
touch main-2
|
||||
git add main-2
|
||||
git commit -m 'main-2 boring'
|
||||
create main6
|
||||
git add main6
|
||||
git commit -m 'main6 boring'
|
||||
|
||||
touch subdir/main-sub4
|
||||
git add subdir/main-sub4
|
||||
git commit -m 'main-sub4'
|
||||
create subdir/main-sub7
|
||||
git add subdir/main-sub7
|
||||
git commit -m 'main-sub7'
|
||||
|
||||
git fetch ../subproj sub2
|
||||
git branch sub2 FETCH_HEAD
|
||||
git subtree merge --prefix=subdir FETCH_HEAD
|
||||
git branch pre-split
|
||||
|
||||
split1=$(git subtree split --prefix subdir --onto FETCH_HEAD --rejoin)
|
||||
split1=$(git subtree split --annotate='*' --prefix subdir --onto FETCH_HEAD --rejoin)
|
||||
echo "split1={$split1}"
|
||||
git branch split1 "$split1"
|
||||
|
||||
touch subdir/main-sub5
|
||||
git add subdir/main-sub5
|
||||
git commit -m 'main-sub5'
|
||||
create subdir/main-sub8
|
||||
git add subdir/main-sub8
|
||||
git commit -m 'main-sub8'
|
||||
|
||||
cd ../subproj
|
||||
git fetch ../mainline split1
|
||||
git branch split1 FETCH_HEAD
|
||||
git merge FETCH_HEAD
|
||||
|
||||
touch sub6
|
||||
git add sub6
|
||||
git commit -m 'sub6'
|
||||
create sub9
|
||||
git add sub9
|
||||
git commit -m 'sub9'
|
||||
|
||||
cd ../mainline
|
||||
split2=$(git subtree split --prefix subdir --rejoin)
|
||||
split2=$(git subtree split --annotate='*' --prefix subdir --rejoin)
|
||||
git branch split2 "$split2"
|
||||
|
||||
touch subdir/main-sub7
|
||||
git add subdir/main-sub7
|
||||
git commit -m 'main-sub7'
|
||||
create subdir/main-sub10
|
||||
git add subdir/main-sub10
|
||||
git commit -m 'main-sub10'
|
||||
|
||||
split3=$(git subtree split --prefix subdir --rejoin)
|
||||
split3=$(git subtree split --annotate='*' --prefix subdir --rejoin)
|
||||
git branch split3 "$split3"
|
||||
|
||||
cd ../subproj
|
||||
|
Loading…
Reference in New Issue
Block a user