From: Avery Pennarun Date: Sun, 26 Apr 2009 12:59:12 +0000 (-0400) Subject: Add --annotate option, and create recognizable file content during tests. X-Git-Tag: v1.7.11-rc0~176^2~74 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=d0eb1b1417b855b262b5ad31d025840ea6e52094;p=git.git Add --annotate option, and create recognizable file content during tests. --- diff --git a/git-subtree.sh b/git-subtree.sh index aeafadac9..e54651c33 100755 --- a/git-subtree.sh +++ b/git-subtree.sh @@ -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 16fb8f217..85ed7ce54 100755 --- 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