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