Code

Add --annotate option, and create recognizable file content during tests.
authorAvery Pennarun <apenwarr@gmail.com>
Sun, 26 Apr 2009 12:59:12 +0000 (08:59 -0400)
committerAvery Pennarun <apenwarr@gmail.com>
Sun, 26 Apr 2009 12:59:12 +0000 (08:59 -0400)
git-subtree.sh
test.sh

index aeafadac95d4bb25e38d90ee58d0d9ba4f85d59f..e54651c33632b91d18b17adf43b420be7e77496d 100755 (executable)
@@ -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"
 }
diff --git a/test.sh b/test.sh
index 16fb8f217e17d4dfcf4e652d0ea633a33d559737..85ed7ce549be94c6fc33a6bcbfd16d5d81a03bda 100755 (executable)
--- a/test.sh
+++ b/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