git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
* Revised git-subtree Patches
@ 2013-01-08 12:09 David A. Greene
  2013-01-08 12:09 ` [PATCH 1/7] Remove Test Number Comments David A. Greene
                   ` (6 more replies)
  0 siblings, 7 replies; 22+ messages in thread
From: David A. Greene @ 2013-01-08 12:09 UTC (permalink / raw)
  To: git

Here is the set of revised patches to git-subtree.  I think I've
got everything cleaned up now.

^ permalink raw reply	[flat|nested] 22+ messages in thread

* [PATCH 1/7] Remove Test Number Comments
  2013-01-08 12:09 Revised git-subtree Patches David A. Greene
@ 2013-01-08 12:09 ` David A. Greene
  2013-01-08 12:09 ` [PATCH 2/7] contrib/subtree: Use %B for Split Subject/Body David A. Greene
                   ` (5 subsequent siblings)
  6 siblings, 0 replies; 22+ messages in thread
From: David A. Greene @ 2013-01-08 12:09 UTC (permalink / raw)
  To: git; +Cc: David A. Greene

From: "David A. Greene" <greened@obbligato.org>

Delete the comments indicating test numbers as it causes maintenance
headaches.  t*.sh -i will help us find any broken tests.

Signed-off-by: David A. Greene <greened@obbligato.org>
---
 contrib/subtree/t/t7900-subtree.sh |   55 ------------------------------------
 1 file changed, 55 deletions(-)

diff --git a/contrib/subtree/t/t7900-subtree.sh b/contrib/subtree/t/t7900-subtree.sh
index bc2eeb0..6cf9fb9 100755
--- a/contrib/subtree/t/t7900-subtree.sh
+++ b/contrib/subtree/t/t7900-subtree.sh
@@ -60,7 +60,6 @@ last_commit_message()
 	git log --pretty=format:%s -1
 }
 
-# 1
 test_expect_success 'init subproj' '
         test_create_repo subproj
 '
@@ -68,7 +67,6 @@ test_expect_success 'init subproj' '
 # To the subproject!
 cd subproj
 
-# 2
 test_expect_success 'add sub1' '
         create sub1 &&
         git commit -m "sub1" &&
@@ -76,14 +74,12 @@ test_expect_success 'add sub1' '
         git branch -m master subproj
 '
 
-# 3
 test_expect_success 'add sub2' '
         create sub2 &&
         git commit -m "sub2" &&
         git branch sub2
 '
 
-# 4
 test_expect_success 'add sub3' '
         create sub3 &&
         git commit -m "sub3" &&
@@ -93,7 +89,6 @@ test_expect_success 'add sub3' '
 # Back to mainline
 cd ..
 
-# 5
 test_expect_success 'add main4' '
         create main4 &&
         git commit -m "main4" &&
@@ -101,101 +96,85 @@ test_expect_success 'add main4' '
         git branch subdir
 '
 
-# 6
 test_expect_success 'fetch subproj history' '
         git fetch ./subproj sub1 &&
         git branch sub1 FETCH_HEAD
 '
 
-# 7
 test_expect_success 'no subtree exists in main tree' '
         test_must_fail git subtree merge --prefix=subdir sub1
 '
 
-# 8
 test_expect_success 'no pull from non-existant subtree' '
         test_must_fail git subtree pull --prefix=subdir ./subproj sub1
 '
 
-# 9
 test_expect_success 'check if --message works for add' '
         git subtree add --prefix=subdir --message="Added subproject" sub1 &&
         check_equal ''"$(last_commit_message)"'' "Added subproject" &&
         undo
 '
 
-# 10
 test_expect_success 'check if --message works as -m and --prefix as -P' '
         git subtree add -P subdir -m "Added subproject using git subtree" sub1 &&
         check_equal ''"$(last_commit_message)"'' "Added subproject using git subtree" &&
         undo
 '
 
-# 11
 test_expect_success 'check if --message works with squash too' '
         git subtree add -P subdir -m "Added subproject with squash" --squash sub1 &&
         check_equal ''"$(last_commit_message)"'' "Added subproject with squash" &&
         undo
 '
 
-# 12
 test_expect_success 'add subproj to mainline' '
         git subtree add --prefix=subdir/ FETCH_HEAD &&
         check_equal ''"$(last_commit_message)"'' "Add '"'subdir/'"' from commit '"'"'''"$(git rev-parse sub1)"'''"'"'"
 '
 
-# 13
 # this shouldn't actually do anything, since FETCH_HEAD is already a parent
 test_expect_success 'merge fetched subproj' '
         git merge -m "merge -s -ours" -s ours FETCH_HEAD
 '
 
-# 14
 test_expect_success 'add main-sub5' '
         create subdir/main-sub5 &&
         git commit -m "main-sub5"
 '
 
-# 15
 test_expect_success 'add main6' '
         create main6 &&
         git commit -m "main6 boring"
 '
 
-# 16
 test_expect_success 'add main-sub7' '
         create subdir/main-sub7 &&
         git commit -m "main-sub7"
 '
 
-# 17
 test_expect_success 'fetch new subproj history' '
         git fetch ./subproj sub2 &&
         git branch sub2 FETCH_HEAD
 '
 
-# 18
 test_expect_success 'check if --message works for merge' '
         git subtree merge --prefix=subdir -m "Merged changes from subproject" sub2 &&
         check_equal ''"$(last_commit_message)"'' "Merged changes from subproject" &&
         undo
 '
 
-# 19
 test_expect_success 'check if --message for merge works with squash too' '
         git subtree merge --prefix subdir -m "Merged changes from subproject using squash" --squash sub2 &&
         check_equal ''"$(last_commit_message)"'' "Merged changes from subproject using squash" &&
         undo
 '
 
-# 20
 test_expect_success 'merge new subproj history into subdir' '
         git subtree merge --prefix=subdir FETCH_HEAD &&
         git branch pre-split &&
         check_equal ''"$(last_commit_message)"'' "Merge commit '"'"'"$(git rev-parse sub2)"'"'"' into mainline"
 '
 
-# 21
 test_expect_success 'Check that prefix argument is required for split' '
         echo "You must provide the --prefix option." > expected &&
         test_must_fail git subtree split > actual 2>&1 &&
@@ -207,7 +186,6 @@ test_expect_success 'Check that prefix argument is required for split' '
         rm -f expected actual
 '
 
-# 22
 test_expect_success 'Check that the <prefix> exists for a split' '
         echo "'"'"'non-existent-directory'"'"'" does not exist\; use "'"'"'git subtree add'"'"'" > expected &&
         test_must_fail git subtree split --prefix=non-existent-directory > actual 2>&1 &&
@@ -219,7 +197,6 @@ test_expect_success 'Check that the <prefix> exists for a split' '
 #        rm -f expected actual
 '
 
-# 23
 test_expect_success 'check if --message works for split+rejoin' '
         spl1=''"$(git subtree split --annotate='"'*'"' --prefix subdir --onto FETCH_HEAD --message "Split & rejoin" --rejoin)"'' &&
         git branch spl1 "$spl1" &&
@@ -227,7 +204,6 @@ test_expect_success 'check if --message works for split+rejoin' '
         undo
 '
 
-# 24
 test_expect_success 'check split with --branch' '
         spl1=$(git subtree split --annotate='"'*'"' --prefix subdir --onto FETCH_HEAD --message "Split & rejoin" --rejoin) &&
         undo &&
@@ -235,7 +211,6 @@ test_expect_success 'check split with --branch' '
         check_equal ''"$(git rev-parse splitbr1)"'' "$spl1"
 '
 
-# 25
 test_expect_success 'check split with --branch for an existing branch' '
         spl1=''"$(git subtree split --annotate='"'*'"' --prefix subdir --onto FETCH_HEAD --message "Split & rejoin" --rejoin)"'' &&
         undo &&
@@ -244,13 +219,10 @@ test_expect_success 'check split with --branch for an existing branch' '
         check_equal ''"$(git rev-parse splitbr2)"'' "$spl1"
 '
 
-# 26
 test_expect_success 'check split with --branch for an incompatible branch' '
         test_must_fail git subtree split --prefix subdir --onto FETCH_HEAD --branch subdir
 '
 
-
-# 27
 test_expect_success 'check split+rejoin' '
         spl1=''"$(git subtree split --annotate='"'*'"' --prefix subdir --onto FETCH_HEAD --message "Split & rejoin" --rejoin)"'' &&
         undo &&
@@ -258,7 +230,6 @@ test_expect_success 'check split+rejoin' '
         check_equal ''"$(last_commit_message)"'' "Split '"'"'subdir/'"'"' into commit '"'"'"$spl1"'"'"'"
 '
 
-# 28
 test_expect_success 'add main-sub8' '
         create subdir/main-sub8 &&
         git commit -m "main-sub8"
@@ -267,14 +238,12 @@ test_expect_success 'add main-sub8' '
 # To the subproject!
 cd ./subproj
 
-# 29
 test_expect_success 'merge split into subproj' '
         git fetch .. spl1 &&
         git branch spl1 FETCH_HEAD &&
         git merge FETCH_HEAD
 '
 
-# 30
 test_expect_success 'add sub9' '
         create sub9 &&
         git commit -m "sub9"
@@ -283,19 +252,16 @@ test_expect_success 'add sub9' '
 # Back to mainline
 cd ..
 
-# 31
 test_expect_success 'split for sub8' '
         split2=''"$(git subtree split --annotate='"'*'"' --prefix subdir/ --rejoin)"''
         git branch split2 "$split2"
 '
 
-# 32
 test_expect_success 'add main-sub10' '
         create subdir/main-sub10 &&
         git commit -m "main-sub10"
 '
 
-# 33
 test_expect_success 'split for sub10' '
         spl3=''"$(git subtree split --annotate='"'*'"' --prefix subdir --rejoin)"'' &&
         git branch spl3 "$spl3"
@@ -304,7 +270,6 @@ test_expect_success 'split for sub10' '
 # To the subproject!
 cd ./subproj
 
-# 34
 test_expect_success 'merge split into subproj' '
         git fetch .. spl3 &&
         git branch spl3 FETCH_HEAD &&
@@ -318,13 +283,11 @@ chkms_sub=$(echo $chkms | multiline | sed 's,^,subdir/,' | fixnl)
 chks="sub1 sub2 sub3 sub9"
 chks_sub=$(echo $chks | multiline | sed 's,^,subdir/,' | fixnl)
 
-# 35
 test_expect_success 'make sure exactly the right set of files ends up in the subproj' '
         subfiles=''"$(git ls-files | fixnl)"'' &&
         check_equal "$subfiles" "$chkms $chks"
 '
 
-# 36
 test_expect_success 'make sure the subproj history *only* contains commits that affect the subdir' '
         allchanges=''"$(git log --name-only --pretty=format:'"''"' | sort | fixnl)"'' &&
         check_equal "$allchanges" "$chkms $chks"
@@ -333,20 +296,17 @@ test_expect_success 'make sure the subproj history *only* contains commits that
 # Back to mainline
 cd ..
 
-# 37
 test_expect_success 'pull from subproj' '
         git fetch ./subproj subproj-merge-spl3 &&
         git branch subproj-merge-spl3 FETCH_HEAD &&
         git subtree pull --prefix=subdir ./subproj subproj-merge-spl3
 '
 
-# 38
 test_expect_success 'make sure exactly the right set of files ends up in the mainline' '
         mainfiles=''"$(git ls-files | fixnl)"'' &&
         check_equal "$mainfiles" "$chkm $chkms_sub $chks_sub"
 '
 
-# 39
 test_expect_success 'make sure each filename changed exactly once in the entire history' '
         # main-sub?? and /subdir/main-sub?? both change, because those are the
         # changes that were split into their own history.  And subdir/sub?? never
@@ -355,12 +315,10 @@ test_expect_success 'make sure each filename changed exactly once in the entire
         check_equal "$allchanges" ''"$(echo $chkms $chkm $chks $chkms_sub | multiline | sort | fixnl)"''
 '
 
-# 40
 test_expect_success 'make sure the --rejoin commits never make it into subproj' '
         check_equal ''"$(git log --pretty=format:'"'%s'"' HEAD^2 | grep -i split)"'' ""
 '
 
-# 41
 test_expect_success 'make sure no "git subtree" tagged commits make it into subproj' '
         # They are meaningless to subproj since one side of the merge refers to the mainline
         check_equal ''"$(git log --pretty=format:'"'%s%n%b'"' HEAD^2 | grep "git-subtree.*:")"'' ""
@@ -370,14 +328,12 @@ test_expect_success 'make sure no "git subtree" tagged commits make it into subp
 mkdir test2
 cd test2
 
-# 42
 test_expect_success 'init main' '
         test_create_repo main
 '
 
 cd main
 
-# 43
 test_expect_success 'add main1' '
         create main1 &&
         git commit -m "main1"
@@ -385,14 +341,12 @@ test_expect_success 'add main1' '
 
 cd ..
 
-# 44
 test_expect_success 'init sub' '
         test_create_repo sub
 '
 
 cd sub
 
-# 45
 test_expect_success 'add sub2' '
         create sub2 &&
         git commit -m "sub2"
@@ -402,7 +356,6 @@ cd ../main
 
 # check if split can find proper base without --onto
 
-# 46
 test_expect_success 'add sub as subdir in main' '
         git fetch ../sub master &&
         git branch sub2 FETCH_HEAD &&
@@ -411,7 +364,6 @@ test_expect_success 'add sub as subdir in main' '
 
 cd ../sub
 
-# 47
 test_expect_success 'add sub3' '
         create sub3 &&
         git commit -m "sub3"
@@ -419,20 +371,17 @@ test_expect_success 'add sub3' '
 
 cd ../main
 
-# 48
 test_expect_success 'merge from sub' '
         git fetch ../sub master &&
         git branch sub3 FETCH_HEAD &&
         git subtree merge --prefix subdir sub3
 '
 
-# 49
 test_expect_success 'add main-sub4' '
         create subdir/main-sub4 &&
         git commit -m "main-sub4"
 '
 
-# 50
 test_expect_success 'split for main-sub4 without --onto' '
         git subtree split --prefix subdir --branch mainsub4
 '
@@ -442,19 +391,16 @@ test_expect_success 'split for main-sub4 without --onto' '
 # have been sub3, but it was not, because its cache was not set to
 # itself)
 
-# 51
 test_expect_success 'check that the commit parent is sub3' '
         check_equal ''"$(git log --pretty=format:%P -1 mainsub4)"'' ''"$(git rev-parse sub3)"''
 '
 
-# 52
 test_expect_success 'add main-sub5' '
         mkdir subdir2 &&
         create subdir2/main-sub5 &&
         git commit -m "main-sub5"
 '
 
-# 53
 test_expect_success 'split for main-sub5 without --onto' '
         # also test that we still can split out an entirely new subtree
         # if the parent of the first commit in the tree is not empty,
@@ -487,7 +433,6 @@ joincommits()
 	echo "$commit $all"
 }
 
-# 54
 test_expect_success 'verify one file change per commit' '
         x= &&
         list=''"$(git log --pretty=format:'"'commit: %H'"' | joincommits)"'' &&
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [PATCH 2/7] contrib/subtree: Use %B for Split Subject/Body
  2013-01-08 12:09 Revised git-subtree Patches David A. Greene
  2013-01-08 12:09 ` [PATCH 1/7] Remove Test Number Comments David A. Greene
@ 2013-01-08 12:09 ` David A. Greene
  2013-01-08 18:29   ` Junio C Hamano
  2013-01-08 23:21   ` 郑文辉(Techlive Zheng)
  2013-01-08 12:09 ` [PATCH 3/7] contrib/subtree: Add --unannotate David A. Greene
                   ` (4 subsequent siblings)
  6 siblings, 2 replies; 22+ messages in thread
From: David A. Greene @ 2013-01-08 12:09 UTC (permalink / raw)
  To: git; +Cc: Techlive Zheng, David A. Greene

From: Techlive Zheng <techlivezheng@gmail.com>

Use %B to format the commit message and body to avoid an extra newline
if a commit only has a subject line.

Signed-off-by: Techlive Zheng <techlivezheng@gmail.com>

Signed-off-by: David A. Greene <greened@obbligato.org>
---
 contrib/subtree/git-subtree.sh     |    6 +++++-
 contrib/subtree/t/t7900-subtree.sh |   15 +++++++++++++++
 2 files changed, 20 insertions(+), 1 deletion(-)

diff --git a/contrib/subtree/git-subtree.sh b/contrib/subtree/git-subtree.sh
index 920c664..5341b36 100755
--- a/contrib/subtree/git-subtree.sh
+++ b/contrib/subtree/git-subtree.sh
@@ -296,7 +296,11 @@ copy_commit()
 	# We're going to set some environment vars here, so
 	# do it in a subshell to get rid of them safely later
 	debug copy_commit "{$1}" "{$2}" "{$3}"
-	git log -1 --pretty=format:'%an%n%ae%n%ad%n%cn%n%ce%n%cd%n%s%n%n%b' "$1" |
+	# Use %B rather than %s%n%n%b to handle the special case of a
+	# commit that only has a subject line.  We don't want to
+	# introduce a newline after the subject, causing generation of
+	# a new hash.
+	git log -1 --pretty=format:'%an%n%ae%n%ad%n%cn%n%ce%n%cd%n%B' "$1" |
 	(
 		read GIT_AUTHOR_NAME
 		read GIT_AUTHOR_EMAIL
diff --git a/contrib/subtree/t/t7900-subtree.sh b/contrib/subtree/t/t7900-subtree.sh
index 6cf9fb9..3f17f55 100755
--- a/contrib/subtree/t/t7900-subtree.sh
+++ b/contrib/subtree/t/t7900-subtree.sh
@@ -74,6 +74,10 @@ test_expect_success 'add sub1' '
         git branch -m master subproj
 '
 
+# Save this hash for testing later.
+
+subdir_hash=`git rev-parse HEAD`
+
 test_expect_success 'add sub2' '
         create sub2 &&
         git commit -m "sub2" &&
@@ -211,6 +215,17 @@ test_expect_success 'check split with --branch' '
         check_equal ''"$(git rev-parse splitbr1)"'' "$spl1"
 '
 
+test_expect_success 'check hash of split' '
+        spl1=$(git subtree split --prefix subdir) &&
+        undo &&
+        git subtree split --prefix subdir --branch splitbr1test &&
+        check_equal ''"$(git rev-parse splitbr1test)"'' "$spl1"
+        git checkout splitbr1test &&
+        new_hash=$(git rev-parse HEAD~2) &&
+        git checkout mainline &&
+        check_equal ''"$new_hash"'' "$subdir_hash"
+'
+
 test_expect_success 'check split with --branch for an existing branch' '
         spl1=''"$(git subtree split --annotate='"'*'"' --prefix subdir --onto FETCH_HEAD --message "Split & rejoin" --rejoin)"'' &&
         undo &&
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [PATCH 3/7] contrib/subtree: Add --unannotate
  2013-01-08 12:09 Revised git-subtree Patches David A. Greene
  2013-01-08 12:09 ` [PATCH 1/7] Remove Test Number Comments David A. Greene
  2013-01-08 12:09 ` [PATCH 2/7] contrib/subtree: Use %B for Split Subject/Body David A. Greene
@ 2013-01-08 12:09 ` David A. Greene
  2013-01-08 18:45   ` Junio C Hamano
  2013-01-08 12:09 ` [PATCH 4/7] contrib/subtree: Better Error Handling for add David A. Greene
                   ` (3 subsequent siblings)
  6 siblings, 1 reply; 22+ messages in thread
From: David A. Greene @ 2013-01-08 12:09 UTC (permalink / raw)
  To: git; +Cc: James Nylen, David A. Greene

From: James Nylen <jnylen@gmail.com>

Teach git-subtree about --unannotate.  This option strips a prefix
from a commit message when doing a subtree split.

Signed-off-by: James Nylen <jnylen@gmail.com>

Signed-off-by: David A. Greene <greened@obbligato.org>
---
 contrib/subtree/git-subtree.sh     |   11 +++++++++--
 contrib/subtree/git-subtree.txt    |   15 +++++++++++++++
 contrib/subtree/t/t7900-subtree.sh |   12 ++++++++++--
 3 files changed, 34 insertions(+), 4 deletions(-)

diff --git a/contrib/subtree/git-subtree.sh b/contrib/subtree/git-subtree.sh
index 5341b36..cac0680 100755
--- a/contrib/subtree/git-subtree.sh
+++ b/contrib/subtree/git-subtree.sh
@@ -21,6 +21,7 @@ P,prefix=     the name of the subdir to split out
 m,message=    use the given message as the commit message for the merge commit
  options for 'split'
 annotate=     add a prefix to commit message of new commits
+unannotate=   remove a prefix from new commit messages (supports bash globbing)
 b,branch=     create a new branch from the split subtree
 ignore-joins  ignore prior --rejoin commits
 onto=         try connecting new tree to an existing one
@@ -43,6 +44,7 @@ onto=
 rejoin=
 ignore_joins=
 annotate=
+unannotate=
 squash=
 message=
 
@@ -80,6 +82,8 @@ while [ $# -gt 0 ]; do
 		-d) debug=1 ;;
 		--annotate) annotate="$1"; shift ;;
 		--no-annotate) annotate= ;;
+		--unannotate) unannotate="$1"; shift ;;
+		--no-unannotate) unannotate= ;;
 		-b) branch="$1"; shift ;;
 		-P) prefix="$1"; shift ;;
 		-m) message="$1"; shift ;;
@@ -314,8 +318,11 @@ copy_commit()
 			GIT_COMMITTER_NAME \
 			GIT_COMMITTER_EMAIL \
 			GIT_COMMITTER_DATE
-		(echo -n "$annotate"; cat ) |
-		git commit-tree "$2" $3  # reads the rest of stdin
+		(
+			read FIRST_LINE
+			echo "$annotate${FIRST_LINE#$unannotate}"
+			cat  # reads the rest of stdin
+		) | git commit-tree "$2" $3
 	) || die "Can't copy commit $1"
 }
 
diff --git a/contrib/subtree/git-subtree.txt b/contrib/subtree/git-subtree.txt
index c5bce41..75aa690 100644
--- a/contrib/subtree/git-subtree.txt
+++ b/contrib/subtree/git-subtree.txt
@@ -198,6 +198,21 @@ OPTIONS FOR split
 	git subtree tries to make it work anyway, particularly
 	if you use --rejoin, but it may not always be effective.
 
+--unannotate=<annotation>::
+	This option is only valid for the split command.
+
+	When generating synthetic history, try to remove the prefix
+	<annotation> from each commit message (using bash's "strip
+	shortest match from beginning" command, which supports
+	globbing).  This makes sense if you format library commits
+	like "library: Change something or other" when you're working
+	in your project's repository, but you want to remove this
+	prefix when pushing back to the library's upstream repository.
+	(In this case --unannotate='*: ' would work well.)
+	
+	Like --annotate,  you need to use the same <annotation>
+	whenever you split, or you may run into problems.
+
 -b <branch>::
 --branch=<branch>::
 	This option is only valid for the split command.
diff --git a/contrib/subtree/t/t7900-subtree.sh b/contrib/subtree/t/t7900-subtree.sh
index 3f17f55..de45e34 100755
--- a/contrib/subtree/t/t7900-subtree.sh
+++ b/contrib/subtree/t/t7900-subtree.sh
@@ -143,7 +143,7 @@ test_expect_success 'merge fetched subproj' '
 
 test_expect_success 'add main-sub5' '
         create subdir/main-sub5 &&
-        git commit -m "main-sub5"
+        git commit -m "subproj: main-sub5"
 '
 
 test_expect_success 'add main6' '
@@ -153,7 +153,7 @@ test_expect_success 'add main6' '
 
 test_expect_success 'add main-sub7' '
         create subdir/main-sub7 &&
-        git commit -m "main-sub7"
+        git commit -m "subproj: main-sub7"
 '
 
 test_expect_success 'fetch new subproj history' '
@@ -226,6 +226,14 @@ test_expect_success 'check hash of split' '
         check_equal ''"$new_hash"'' "$subdir_hash"
 '
 
+test_expect_success 'check --unannotate' '
+        spl1=$(git subtree split --unannotate='"subproj:"' --prefix subdir --onto FETCH_HEAD --message "Split & rejoin" --rejoin) &&
+        undo &&
+        git subtree split --unannotate='"subproj:"' --prefix subdir --onto FETCH_HEAD --branch splitunann &&
+        check_equal ''"$(git rev-parse splitunann)"'' "$spl1" &&
+        check_equal ''"$(git log splitunann | grep subproj)"'' ""
+'
+
 test_expect_success 'check split with --branch for an existing branch' '
         spl1=''"$(git subtree split --annotate='"'*'"' --prefix subdir --onto FETCH_HEAD --message "Split & rejoin" --rejoin)"'' &&
         undo &&
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [PATCH 4/7] contrib/subtree: Better Error Handling for add
  2013-01-08 12:09 Revised git-subtree Patches David A. Greene
                   ` (2 preceding siblings ...)
  2013-01-08 12:09 ` [PATCH 3/7] contrib/subtree: Add --unannotate David A. Greene
@ 2013-01-08 12:09 ` David A. Greene
  2013-01-08 18:45   ` Junio C Hamano
  2013-01-08 12:09 ` [PATCH 5/7] contrib/subtree: Fix Synopsis David A. Greene
                   ` (2 subsequent siblings)
  6 siblings, 1 reply; 22+ messages in thread
From: David A. Greene @ 2013-01-08 12:09 UTC (permalink / raw)
  To: git; +Cc: David A. Greene

From: "David A. Greene" <greened@obbligato.org>

Check refspecs for validity before passing them on to other commands.
This lets us generate more helpful error messages.

Signed-off-by: David A. Greene <greened@obbligato.org>
---
 contrib/subtree/git-subtree.sh |   12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/contrib/subtree/git-subtree.sh b/contrib/subtree/git-subtree.sh
index cac0680..d53eaee 100755
--- a/contrib/subtree/git-subtree.sh
+++ b/contrib/subtree/git-subtree.sh
@@ -508,12 +508,18 @@ cmd_add()
 	ensure_clean
 	
 	if [ $# -eq 1 ]; then
-		"cmd_add_commit" "$@"
+	    git rev-parse -q --verify "$1^{commit}" >/dev/null ||
+            die "'$1' does not refer to a commit"
+
+	    "cmd_add_commit" "$@"
 	elif [ $# -eq 2 ]; then
-		"cmd_add_repository" "$@"
+	    git rev-parse -q --verify "$2^{commit}" >/dev/null ||
+            die "'$2' does not refer to a commit"
+
+	    "cmd_add_repository" "$@"
 	else
 	    say "error: parameters were '$@'"
-	    die "Provide either a refspec or a repository and refspec."
+	    die "Provide either a commit or a repository and commit."
 	fi
 }
 
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [PATCH 5/7] contrib/subtree: Fix Synopsis
  2013-01-08 12:09 Revised git-subtree Patches David A. Greene
                   ` (3 preceding siblings ...)
  2013-01-08 12:09 ` [PATCH 4/7] contrib/subtree: Better Error Handling for add David A. Greene
@ 2013-01-08 12:09 ` David A. Greene
  2013-01-08 12:09 ` [PATCH 6/7] contrib/subtree: Honor DESTDIR David A. Greene
  2013-01-08 12:09 ` [PATCH 7/7] contrib/subtree: Make the Manual Directory if Needed David A. Greene
  6 siblings, 0 replies; 22+ messages in thread
From: David A. Greene @ 2013-01-08 12:09 UTC (permalink / raw)
  To: git; +Cc: David A. Greene

From: "David A. Greene" <greened@obbligato.org>

Fix the documentation of add to show that a repository can be
specified along with a commit.

Suggested by Yann Dirson <dirson@bertin.fr>.

Signed-off-by: David A. Greene <greened@obbligato.org>
---
 contrib/subtree/git-subtree.sh  |    6 ++++++
 contrib/subtree/git-subtree.txt |    3 ++-
 2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/contrib/subtree/git-subtree.sh b/contrib/subtree/git-subtree.sh
index d53eaee..0e9ea0f 100755
--- a/contrib/subtree/git-subtree.sh
+++ b/contrib/subtree/git-subtree.sh
@@ -9,6 +9,7 @@ if [ $# -eq 0 ]; then
 fi
 OPTS_SPEC="\
 git subtree add   --prefix=<prefix> <commit>
+git subtree add   --prefix=<prefix> <repository> <commit>
 git subtree merge --prefix=<prefix> <commit>
 git subtree pull  --prefix=<prefix> <repository> <refspec...>
 git subtree push  --prefix=<prefix> <repository> <refspec...>
@@ -513,6 +514,11 @@ cmd_add()
 
 	    "cmd_add_commit" "$@"
 	elif [ $# -eq 2 ]; then
+	    # Technically we could accept a refspec here but we're
+	    # just going to turn around and add FETCH_HEAD under the
+	    # specified directory.  Allowing a refspec might be
+	    # misleading because we won't do anything with any other
+	    # branches fetched via the refspec.
 	    git rev-parse -q --verify "$2^{commit}" >/dev/null ||
             die "'$2' does not refer to a commit"
 
diff --git a/contrib/subtree/git-subtree.txt b/contrib/subtree/git-subtree.txt
index 75aa690..078d4ac 100644
--- a/contrib/subtree/git-subtree.txt
+++ b/contrib/subtree/git-subtree.txt
@@ -9,7 +9,8 @@ git-subtree - Merge subtrees together and split repository into subtrees
 SYNOPSIS
 --------
 [verse]
-'git subtree' add   -P <prefix> <commit>
+'git subtree' add   -P <prefix> <refspec>
+'git subtree' add   -P <prefix> <repository> <refspec>
 'git subtree' pull  -P <prefix> <repository> <refspec...>
 'git subtree' push  -P <prefix> <repository> <refspec...>
 'git subtree' merge -P <prefix> <commit>
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [PATCH 6/7] contrib/subtree: Honor DESTDIR
  2013-01-08 12:09 Revised git-subtree Patches David A. Greene
                   ` (4 preceding siblings ...)
  2013-01-08 12:09 ` [PATCH 5/7] contrib/subtree: Fix Synopsis David A. Greene
@ 2013-01-08 12:09 ` David A. Greene
  2013-01-08 12:09 ` [PATCH 7/7] contrib/subtree: Make the Manual Directory if Needed David A. Greene
  6 siblings, 0 replies; 22+ messages in thread
From: David A. Greene @ 2013-01-08 12:09 UTC (permalink / raw)
  To: git; +Cc: Adam Tkac, David A. Greene

From: Adam Tkac <atkac@redhat.com>

Teach git-subtree's Makefile to honor DESTDIR.

Signed-off-by: Adam Tkac <atkac@redhat.com>

Signed-off-by: David A. Greene <greened@obbligato.org>
---
 contrib/subtree/Makefile |    4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/contrib/subtree/Makefile b/contrib/subtree/Makefile
index 05cdd5c..36ae3e4 100644
--- a/contrib/subtree/Makefile
+++ b/contrib/subtree/Makefile
@@ -30,12 +30,12 @@ $(GIT_SUBTREE): $(GIT_SUBTREE_SH)
 doc: $(GIT_SUBTREE_DOC)
 
 install: $(GIT_SUBTREE)
-	$(INSTALL) -m 755 $(GIT_SUBTREE) $(libexecdir)
+	$(INSTALL) -m 755 $(GIT_SUBTREE) $(DESTDIR)$(libexecdir)
 
 install-doc: install-man
 
 install-man: $(GIT_SUBTREE_DOC)
-	$(INSTALL) -m 644 $^ $(man1dir)
+	$(INSTALL) -m 644 $^ $(DESTDIR)$(man1dir)
 
 $(GIT_SUBTREE_DOC): $(GIT_SUBTREE_XML)
 	xmlto -m $(MANPAGE_NORMAL_XSL)  man $^
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 22+ messages in thread

* [PATCH 7/7] contrib/subtree: Make the Manual Directory if Needed
  2013-01-08 12:09 Revised git-subtree Patches David A. Greene
                   ` (5 preceding siblings ...)
  2013-01-08 12:09 ` [PATCH 6/7] contrib/subtree: Honor DESTDIR David A. Greene
@ 2013-01-08 12:09 ` David A. Greene
  6 siblings, 0 replies; 22+ messages in thread
From: David A. Greene @ 2013-01-08 12:09 UTC (permalink / raw)
  To: git; +Cc: Jesper L. Nielsen, David A. Greene

From: "Jesper L. Nielsen" <lyager@gmail.com>

Before install git-subtree documentation, make sure the manpage
directory exists.

Signed-off-by: Jesper L. Nielsen <lyager@gmail.com>

Signed-off-by: David A. Greene <greened@obbligato.org>
---
 contrib/subtree/Makefile |    1 +
 1 file changed, 1 insertion(+)

diff --git a/contrib/subtree/Makefile b/contrib/subtree/Makefile
index 36ae3e4..b507505 100644
--- a/contrib/subtree/Makefile
+++ b/contrib/subtree/Makefile
@@ -35,6 +35,7 @@ install: $(GIT_SUBTREE)
 install-doc: install-man
 
 install-man: $(GIT_SUBTREE_DOC)
+	$(INSTALL) -d -m 755 $(DESTDIR)$(man1dir)
 	$(INSTALL) -m 644 $^ $(DESTDIR)$(man1dir)
 
 $(GIT_SUBTREE_DOC): $(GIT_SUBTREE_XML)
-- 
1.7.10.4

^ permalink raw reply related	[flat|nested] 22+ messages in thread

* Re: [PATCH 2/7] contrib/subtree: Use %B for Split Subject/Body
  2013-01-08 12:09 ` [PATCH 2/7] contrib/subtree: Use %B for Split Subject/Body David A. Greene
@ 2013-01-08 18:29   ` Junio C Hamano
  2013-01-16  3:14     ` greened
  2013-01-08 23:21   ` 郑文辉(Techlive Zheng)
  1 sibling, 1 reply; 22+ messages in thread
From: Junio C Hamano @ 2013-01-08 18:29 UTC (permalink / raw)
  To: David A. Greene; +Cc: git, Techlive Zheng

"David A. Greene" <greened@obbligato.org> writes:

> From: Techlive Zheng <techlivezheng@gmail.com>
>
> Use %B to format the commit message and body to avoid an extra newline
> if a commit only has a subject line.
>
> Signed-off-by: Techlive Zheng <techlivezheng@gmail.com>
>
> Signed-off-by: David A. Greene <greened@obbligato.org>
> ---

This time (only), I'll try to fix them up at my end, but please
check your toolchain, find out where the extra blank line between
S-o-b: lines we see above come from, and fix that, so that I won't
have to do so again.

>  contrib/subtree/git-subtree.sh     |    6 +++++-
>  contrib/subtree/t/t7900-subtree.sh |   15 +++++++++++++++
>  2 files changed, 20 insertions(+), 1 deletion(-)
>
> diff --git a/contrib/subtree/git-subtree.sh b/contrib/subtree/git-subtree.sh
> index 920c664..5341b36 100755
> --- a/contrib/subtree/git-subtree.sh
> +++ b/contrib/subtree/git-subtree.sh
> @@ -296,7 +296,11 @@ copy_commit()
>  	# We're going to set some environment vars here, so
>  	# do it in a subshell to get rid of them safely later
>  	debug copy_commit "{$1}" "{$2}" "{$3}"
> -	git log -1 --pretty=format:'%an%n%ae%n%ad%n%cn%n%ce%n%cd%n%s%n%n%b' "$1" |
> +	# Use %B rather than %s%n%n%b to handle the special case of a
> +	# commit that only has a subject line.  We don't want to
> +	# introduce a newline after the subject, causing generation of
> +	# a new hash.
> +	git log -1 --pretty=format:'%an%n%ae%n%ad%n%cn%n%ce%n%cd%n%B' "$1" |

The new format template is fine, but I do not think the comment
should be there.  It does not give any useful information to people
who are reading the end result of applying this patch and is useful
only in the context of comparing the old and new templates, iow, it
belongs to the commit log message.

>  	(
>  		read GIT_AUTHOR_NAME
>  		read GIT_AUTHOR_EMAIL
> diff --git a/contrib/subtree/t/t7900-subtree.sh b/contrib/subtree/t/t7900-subtree.sh
> index 6cf9fb9..3f17f55 100755
> --- a/contrib/subtree/t/t7900-subtree.sh
> +++ b/contrib/subtree/t/t7900-subtree.sh
> @@ -74,6 +74,10 @@ test_expect_success 'add sub1' '
>          git branch -m master subproj
>  '
>  
> +# Save this hash for testing later.
> +
> +subdir_hash=`git rev-parse HEAD`
> +
>  test_expect_success 'add sub2' '
>          create sub2 &&
>          git commit -m "sub2" &&
> @@ -211,6 +215,17 @@ test_expect_success 'check split with --branch' '
>          check_equal ''"$(git rev-parse splitbr1)"'' "$spl1"
>  '
>  
> +test_expect_success 'check hash of split' '
> +        spl1=$(git subtree split --prefix subdir) &&
> +        undo &&
> +        git subtree split --prefix subdir --branch splitbr1test &&
> +        check_equal ''"$(git rev-parse splitbr1test)"'' "$spl1"

We'd need to clean up these no-op '' from this, but not doing so in
this patch is perfectly fine (and is even preferred).

> +        git checkout splitbr1test &&
> +        new_hash=$(git rev-parse HEAD~2) &&
> +        git checkout mainline &&
> +        check_equal ''"$new_hash"'' "$subdir_hash"
> +'
> +
>  test_expect_success 'check split with --branch for an existing branch' '
>          spl1=''"$(git subtree split --annotate='"'*'"' --prefix subdir --onto FETCH_HEAD --message "Split & rejoin" --rejoin)"'' &&
>          undo &&

Thanks.

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH 3/7] contrib/subtree: Add --unannotate
  2013-01-08 12:09 ` [PATCH 3/7] contrib/subtree: Add --unannotate David A. Greene
@ 2013-01-08 18:45   ` Junio C Hamano
  2013-01-16  3:20     ` greened
  0 siblings, 1 reply; 22+ messages in thread
From: Junio C Hamano @ 2013-01-08 18:45 UTC (permalink / raw)
  To: David A. Greene; +Cc: git, James Nylen

"David A. Greene" <greened@obbligato.org> writes:

> diff --git a/contrib/subtree/git-subtree.txt b/contrib/subtree/git-subtree.txt
> index c5bce41..75aa690 100644
> --- a/contrib/subtree/git-subtree.txt
> +++ b/contrib/subtree/git-subtree.txt
> @@ -198,6 +198,21 @@ OPTIONS FOR split
>  	git subtree tries to make it work anyway, particularly
>  	if you use --rejoin, but it may not always be effective.
>  
> +--unannotate=<annotation>::
> +	This option is only valid for the split command.
> +
> +	When generating synthetic history, try to remove the prefix
> +	<annotation> from each commit message (using bash's "strip
> +	shortest match from beginning" command, which supports
> +	globbing).  This makes sense if you format library commits
> +	like "library: Change something or other" when you're working
> +	in your project's repository, but you want to remove this
> +	prefix when pushing back to the library's upstream repository.
> +	(In this case --unannotate='*: ' would work well.)
> +	
> +	Like --annotate,  you need to use the same <annotation>
> +	whenever you split, or you may run into problems.

I think this paragraph inherits existing breakage from the beginning
of time, but I do not think the above will format the second and
subsequent paragraphs correctly.

I've applied all seven patches in the series with minor fix-ups, and
will merge it to 'pu'.

Thanks.

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH 4/7] contrib/subtree: Better Error Handling for add
  2013-01-08 12:09 ` [PATCH 4/7] contrib/subtree: Better Error Handling for add David A. Greene
@ 2013-01-08 18:45   ` Junio C Hamano
  2013-01-16  3:21     ` greened
  0 siblings, 1 reply; 22+ messages in thread
From: Junio C Hamano @ 2013-01-08 18:45 UTC (permalink / raw)
  To: David A. Greene; +Cc: git

"David A. Greene" <greened@obbligato.org> writes:

> From: "David A. Greene" <greened@obbligato.org>
>
> Check refspecs for validity before passing them on to other commands.
> This lets us generate more helpful error messages.
>
> Signed-off-by: David A. Greene <greened@obbligato.org>
> ---
>  contrib/subtree/git-subtree.sh |   12 +++++++++---
>  1 file changed, 9 insertions(+), 3 deletions(-)
>
> diff --git a/contrib/subtree/git-subtree.sh b/contrib/subtree/git-subtree.sh
> index cac0680..d53eaee 100755
> --- a/contrib/subtree/git-subtree.sh
> +++ b/contrib/subtree/git-subtree.sh
> @@ -508,12 +508,18 @@ cmd_add()
>  	ensure_clean
>  	
>  	if [ $# -eq 1 ]; then
> -		"cmd_add_commit" "$@"
> +	    git rev-parse -q --verify "$1^{commit}" >/dev/null ||
> +            die "'$1' does not refer to a commit"

Where do these uneven indentation come from?  Is it mimicking
existing breakage in the script?

> +
> +	    "cmd_add_commit" "$@"
>  	elif [ $# -eq 2 ]; then
> -		"cmd_add_repository" "$@"
> +	    git rev-parse -q --verify "$2^{commit}" >/dev/null ||
> +            die "'$2' does not refer to a commit"
> +
> +	    "cmd_add_repository" "$@"
>  	else
>  	    say "error: parameters were '$@'"
> -	    die "Provide either a refspec or a repository and refspec."
> +	    die "Provide either a commit or a repository and commit."
>  	fi
>  }

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH 2/7] contrib/subtree: Use %B for Split Subject/Body
  2013-01-08 12:09 ` [PATCH 2/7] contrib/subtree: Use %B for Split Subject/Body David A. Greene
  2013-01-08 18:29   ` Junio C Hamano
@ 2013-01-08 23:21   ` 郑文辉(Techlive Zheng)
  2013-01-09  0:41     ` Junio C Hamano
  1 sibling, 1 reply; 22+ messages in thread
From: 郑文辉(Techlive Zheng) @ 2013-01-08 23:21 UTC (permalink / raw)
  To: David A. Greene; +Cc: git

2013/1/8 David A. Greene <greened@obbligato.org>:
> From: Techlive Zheng <techlivezheng@gmail.com>
>
> Use %B to format the commit message and body to avoid an extra newline
> if a commit only has a subject line.
>
> Signed-off-by: Techlive Zheng <techlivezheng@gmail.com>
>
> Signed-off-by: David A. Greene <greened@obbligato.org>
> ---
>  contrib/subtree/git-subtree.sh     |    6 +++++-
>  contrib/subtree/t/t7900-subtree.sh |   15 +++++++++++++++
>  2 files changed, 20 insertions(+), 1 deletion(-)
>
> diff --git a/contrib/subtree/git-subtree.sh b/contrib/subtree/git-subtree.sh
> index 920c664..5341b36 100755
> --- a/contrib/subtree/git-subtree.sh
> +++ b/contrib/subtree/git-subtree.sh
> @@ -296,7 +296,11 @@ copy_commit()
>         # We're going to set some environment vars here, so
>         # do it in a subshell to get rid of them safely later
>         debug copy_commit "{$1}" "{$2}" "{$3}"
> -       git log -1 --pretty=format:'%an%n%ae%n%ad%n%cn%n%ce%n%cd%n%s%n%n%b' "$1" |
> +       # Use %B rather than %s%n%n%b to handle the special case of a
> +       # commit that only has a subject line.  We don't want to
> +       # introduce a newline after the subject, causing generation of
> +       # a new hash.
> +       git log -1 --pretty=format:'%an%n%ae%n%ad%n%cn%n%ce%n%cd%n%B' "$1" |
>         (
>                 read GIT_AUTHOR_NAME
>                 read GIT_AUTHOR_EMAIL
> diff --git a/contrib/subtree/t/t7900-subtree.sh b/contrib/subtree/t/t7900-subtree.sh
> index 6cf9fb9..3f17f55 100755
> --- a/contrib/subtree/t/t7900-subtree.sh
> +++ b/contrib/subtree/t/t7900-subtree.sh
> @@ -74,6 +74,10 @@ test_expect_success 'add sub1' '
>          git branch -m master subproj
>  '
>
> +# Save this hash for testing later.
> +
> +subdir_hash=`git rev-parse HEAD`
> +
>  test_expect_success 'add sub2' '
>          create sub2 &&
>          git commit -m "sub2" &&
> @@ -211,6 +215,17 @@ test_expect_success 'check split with --branch' '
>          check_equal ''"$(git rev-parse splitbr1)"'' "$spl1"
>  '
>
> +test_expect_success 'check hash of split' '
> +        spl1=$(git subtree split --prefix subdir) &&
> +        undo &&
> +        git subtree split --prefix subdir --branch splitbr1test &&
> +        check_equal ''"$(git rev-parse splitbr1test)"'' "$spl1"
> +        git checkout splitbr1test &&
> +        new_hash=$(git rev-parse HEAD~2) &&
> +        git checkout mainline &&
> +        check_equal ''"$new_hash"'' "$subdir_hash"
> +'
> +
This test is not test the correct thing, I am currently working on it.
>  test_expect_success 'check split with --branch for an existing branch' '
>          spl1=''"$(git subtree split --annotate='"'*'"' --prefix subdir --onto FETCH_HEAD --message "Split & rejoin" --rejoin)"'' &&
>          undo &&
> --
> 1.7.10.4
>

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH 2/7] contrib/subtree: Use %B for Split Subject/Body
  2013-01-08 23:21   ` 郑文辉(Techlive Zheng)
@ 2013-01-09  0:41     ` Junio C Hamano
  2013-01-16  3:18       ` greened
  0 siblings, 1 reply; 22+ messages in thread
From: Junio C Hamano @ 2013-01-09  0:41 UTC (permalink / raw)
  To: 郑文辉(Techlive Zheng); +Cc: David A. Greene, git

"郑文辉(Techlive Zheng)"  <techlivezheng@gmail.com> writes:

>> +test_expect_success 'check hash of split' '
>> +        spl1=$(git subtree split --prefix subdir) &&
>> +        undo &&
>> +        git subtree split --prefix subdir --branch splitbr1test &&
>> +        check_equal ''"$(git rev-parse splitbr1test)"'' "$spl1"
>> +        git checkout splitbr1test &&
>> +        new_hash=$(git rev-parse HEAD~2) &&
>> +        git checkout mainline &&
>> +        check_equal ''"$new_hash"'' "$subdir_hash"
>> +'
>> +
> This test is not test the correct thing, I am currently working on it.

Will keep the topic branch out of 'next' for now.

David, how would you like to handle a reroll of this piece?

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH 2/7] contrib/subtree: Use %B for Split Subject/Body
  2013-01-08 18:29   ` Junio C Hamano
@ 2013-01-16  3:14     ` greened
  0 siblings, 0 replies; 22+ messages in thread
From: greened @ 2013-01-16  3:14 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git, Techlive Zheng

Junio C Hamano <gitster@pobox.com> writes:

> "David A. Greene" <greened@obbligato.org> writes:
>
>> From: Techlive Zheng <techlivezheng@gmail.com>
>>
>> Use %B to format the commit message and body to avoid an extra newline
>> if a commit only has a subject line.
>>
>> Signed-off-by: Techlive Zheng <techlivezheng@gmail.com>
>>
>> Signed-off-by: David A. Greene <greened@obbligato.org>
>> ---
>
> This time (only), I'll try to fix them up at my end, but please
> check your toolchain, find out where the extra blank line between
> S-o-b: lines we see above come from, and fix that, so that I won't
> have to do so again.

Will do.

>>  contrib/subtree/git-subtree.sh     |    6 +++++-
>>  contrib/subtree/t/t7900-subtree.sh |   15 +++++++++++++++
>>  2 files changed, 20 insertions(+), 1 deletion(-)
>>
>> diff --git a/contrib/subtree/git-subtree.sh b/contrib/subtree/git-subtree.sh
>> index 920c664..5341b36 100755
>> --- a/contrib/subtree/git-subtree.sh
>> +++ b/contrib/subtree/git-subtree.sh
>> @@ -296,7 +296,11 @@ copy_commit()
>>  	# We're going to set some environment vars here, so
>>  	# do it in a subshell to get rid of them safely later
>>  	debug copy_commit "{$1}" "{$2}" "{$3}"
>> -	git log -1 --pretty=format:'%an%n%ae%n%ad%n%cn%n%ce%n%cd%n%s%n%n%b' "$1" |
>> +	# Use %B rather than %s%n%n%b to handle the special case of a
>> +	# commit that only has a subject line.  We don't want to
>> +	# introduce a newline after the subject, causing generation of
>> +	# a new hash.
>> +	git log -1 --pretty=format:'%an%n%ae%n%ad%n%cn%n%ce%n%cd%n%B' "$1" |
>
> The new format template is fine, but I do not think the comment
> should be there.  It does not give any useful information to people
> who are reading the end result of applying this patch and is useful
> only in the context of comparing the old and new templates, iow, it
> belongs to the commit log message.

I'll delete the comment.

                           -David

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH 2/7] contrib/subtree: Use %B for Split Subject/Body
  2013-01-09  0:41     ` Junio C Hamano
@ 2013-01-16  3:18       ` greened
  2013-01-16 15:43         ` Junio C Hamano
  0 siblings, 1 reply; 22+ messages in thread
From: greened @ 2013-01-16  3:18 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: 郑文辉(Techlive Zheng), git

Junio C Hamano <gitster@pobox.com> writes:

> David, how would you like to handle a reroll of this piece?

I'll just get the test fix from Techlive Zheng, apply it to my
branch and re-send.

Are you incorporating the other patches?  Should I drop them
from my list?

                        -David

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH 3/7] contrib/subtree: Add --unannotate
  2013-01-08 18:45   ` Junio C Hamano
@ 2013-01-16  3:20     ` greened
  2013-01-16  4:06       ` greened
  0 siblings, 1 reply; 22+ messages in thread
From: greened @ 2013-01-16  3:20 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git, James Nylen

Junio C Hamano <gitster@pobox.com> writes:

> "David A. Greene" <greened@obbligato.org> writes:
>
>> diff --git a/contrib/subtree/git-subtree.txt b/contrib/subtree/git-subtree.txt
>> index c5bce41..75aa690 100644
>> --- a/contrib/subtree/git-subtree.txt
>> +++ b/contrib/subtree/git-subtree.txt
>> @@ -198,6 +198,21 @@ OPTIONS FOR split
>>  	git subtree tries to make it work anyway, particularly
>>  	if you use --rejoin, but it may not always be effective.
>>  
>> +--unannotate=<annotation>::
>> +	This option is only valid for the split command.
>> +
>> +	When generating synthetic history, try to remove the prefix
>> +	<annotation> from each commit message (using bash's "strip
>> +	shortest match from beginning" command, which supports
>> +	globbing).  This makes sense if you format library commits
>> +	like "library: Change something or other" when you're working
>> +	in your project's repository, but you want to remove this
>> +	prefix when pushing back to the library's upstream repository.
>> +	(In this case --unannotate='*: ' would work well.)
>> +	
>> +	Like --annotate,  you need to use the same <annotation>
>> +	whenever you split, or you may run into problems.
>
> I think this paragraph inherits existing breakage from the beginning
> of time, but I do not think the above will format the second and
> subsequent paragraphs correctly.

Ok, I'll take a look.

> I've applied all seven patches in the series with minor fix-ups, and
> will merge it to 'pu'.

Thanks!

                          -David

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH 4/7] contrib/subtree: Better Error Handling for add
  2013-01-08 18:45   ` Junio C Hamano
@ 2013-01-16  3:21     ` greened
  0 siblings, 0 replies; 22+ messages in thread
From: greened @ 2013-01-16  3:21 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git

Junio C Hamano <gitster@pobox.com> writes:

> "David A. Greene" <greened@obbligato.org> writes:
>
>> From: "David A. Greene" <greened@obbligato.org>
>>
>> Check refspecs for validity before passing them on to other commands.
>> This lets us generate more helpful error messages.
>>
>> Signed-off-by: David A. Greene <greened@obbligato.org>
>> ---
>>  contrib/subtree/git-subtree.sh |   12 +++++++++---
>>  1 file changed, 9 insertions(+), 3 deletions(-)
>>
>> diff --git a/contrib/subtree/git-subtree.sh b/contrib/subtree/git-subtree.sh
>> index cac0680..d53eaee 100755
>> --- a/contrib/subtree/git-subtree.sh
>> +++ b/contrib/subtree/git-subtree.sh
>> @@ -508,12 +508,18 @@ cmd_add()
>>  	ensure_clean
>>  	
>>  	if [ $# -eq 1 ]; then
>> -		"cmd_add_commit" "$@"
>> +	    git rev-parse -q --verify "$1^{commit}" >/dev/null ||
>> +            die "'$1' does not refer to a commit"
>
> Where do these uneven indentation come from?  Is it mimicking
> existing breakage in the script?

Huh.  I'm not sure how that happened.  I'll fix it if you haven't got to
it already.

                            -David

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH 3/7] contrib/subtree: Add --unannotate
  2013-01-16  3:20     ` greened
@ 2013-01-16  4:06       ` greened
  2013-01-16  4:31         ` Junio C Hamano
  0 siblings, 1 reply; 22+ messages in thread
From: greened @ 2013-01-16  4:06 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git, James Nylen

greened@obbligato.org writes:

>> I think this paragraph inherits existing breakage from the beginning
>> of time, but I do not think the above will format the second and
>> subsequent paragraphs correctly.
>
> Ok, I'll take a look.

I don't know what "correctly" is but it is at least formatted in a
similar manner to the other options.

                          -David

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH 3/7] contrib/subtree: Add --unannotate
  2013-01-16  4:06       ` greened
@ 2013-01-16  4:31         ` Junio C Hamano
  2013-01-22  8:37           ` greened
  0 siblings, 1 reply; 22+ messages in thread
From: Junio C Hamano @ 2013-01-16  4:31 UTC (permalink / raw)
  To: greened; +Cc: git, James Nylen

greened@obbligato.org writes:

> greened@obbligato.org writes:
>
>>> I think this paragraph inherits existing breakage from the beginning
>>> of time, but I do not think the above will format the second and
>>> subsequent paragraphs correctly.
>>
>> Ok, I'll take a look.
>
> I don't know what "correctly" is but it is at least formatted in a
> similar manner to the other options.

That is what "inherits existing breakage" means ;-)

The first paragraph is typeset as body text, while the rest are
typeset in monospaced font, no?

It should be more like this, I think:

        --option::
                First paragraph
        +
        Second paragraph
        +
        And third paragraph

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH 2/7] contrib/subtree: Use %B for Split Subject/Body
  2013-01-16  3:18       ` greened
@ 2013-01-16 15:43         ` Junio C Hamano
  2013-01-22  8:39           ` greened
  0 siblings, 1 reply; 22+ messages in thread
From: Junio C Hamano @ 2013-01-16 15:43 UTC (permalink / raw)
  To: greened; +Cc: 郑文辉(Techlive Zheng), git

greened@obbligato.org writes:

> Are you incorporating the other patches?  Should I drop them
> from my list?

I actually was planning to accept patches to this subdirectory only
through you, hopefully as messages that forward others' changes with
your Acked-by: tagline.  That frees me from having to keeping track
of what goes on there ;-)

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH 3/7] contrib/subtree: Add --unannotate
  2013-01-16  4:31         ` Junio C Hamano
@ 2013-01-22  8:37           ` greened
  0 siblings, 0 replies; 22+ messages in thread
From: greened @ 2013-01-22  8:37 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: git, James Nylen

Junio C Hamano <gitster@pobox.com> writes:

> greened@obbligato.org writes:
>
>> greened@obbligato.org writes:
>>
>>>> I think this paragraph inherits existing breakage from the beginning
>>>> of time, but I do not think the above will format the second and
>>>> subsequent paragraphs correctly.
>>>
>>> Ok, I'll take a look.
>>
>> I don't know what "correctly" is but it is at least formatted in a
>> similar manner to the other options.
>
> That is what "inherits existing breakage" means ;-)

Ah.

> The first paragraph is typeset as body text, while the rest are
> typeset in monospaced font, no?
>
> It should be more like this, I think:
>
>         --option::
>                 First paragraph
>         +
>         Second paragraph
>         +
>         And third paragraph

Ok.

                          -David

^ permalink raw reply	[flat|nested] 22+ messages in thread

* Re: [PATCH 2/7] contrib/subtree: Use %B for Split Subject/Body
  2013-01-16 15:43         ` Junio C Hamano
@ 2013-01-22  8:39           ` greened
  0 siblings, 0 replies; 22+ messages in thread
From: greened @ 2013-01-22  8:39 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: 郑文辉(Techlive Zheng), git

Junio C Hamano <gitster@pobox.com> writes:

> greened@obbligato.org writes:
>
>> Are you incorporating the other patches?  Should I drop them
>> from my list?
>
> I actually was planning to accept patches to this subdirectory only
> through you, hopefully as messages that forward others' changes with
> your Acked-by: tagline.  That frees me from having to keeping track
> of what goes on there ;-)

Ok, just wanted to know the process.  Makes sense to me.

                         -David

^ permalink raw reply	[flat|nested] 22+ messages in thread

end of thread, other threads:[~2013-01-22  8:40 UTC | newest]

Thread overview: 22+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-01-08 12:09 Revised git-subtree Patches David A. Greene
2013-01-08 12:09 ` [PATCH 1/7] Remove Test Number Comments David A. Greene
2013-01-08 12:09 ` [PATCH 2/7] contrib/subtree: Use %B for Split Subject/Body David A. Greene
2013-01-08 18:29   ` Junio C Hamano
2013-01-16  3:14     ` greened
2013-01-08 23:21   ` 郑文辉(Techlive Zheng)
2013-01-09  0:41     ` Junio C Hamano
2013-01-16  3:18       ` greened
2013-01-16 15:43         ` Junio C Hamano
2013-01-22  8:39           ` greened
2013-01-08 12:09 ` [PATCH 3/7] contrib/subtree: Add --unannotate David A. Greene
2013-01-08 18:45   ` Junio C Hamano
2013-01-16  3:20     ` greened
2013-01-16  4:06       ` greened
2013-01-16  4:31         ` Junio C Hamano
2013-01-22  8:37           ` greened
2013-01-08 12:09 ` [PATCH 4/7] contrib/subtree: Better Error Handling for add David A. Greene
2013-01-08 18:45   ` Junio C Hamano
2013-01-16  3:21     ` greened
2013-01-08 12:09 ` [PATCH 5/7] contrib/subtree: Fix Synopsis David A. Greene
2013-01-08 12:09 ` [PATCH 6/7] contrib/subtree: Honor DESTDIR David A. Greene
2013-01-08 12:09 ` [PATCH 7/7] contrib/subtree: Make the Manual Directory if Needed David A. Greene

Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).