git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH 2/7] contrib/subtree: Use %B for Split Subject/Body

From
David A. Greene <greened@obbligato.org>
Date
Jan 8, 2013, 12:09 UTC
Message-ID
<1357646997-28675-3-git-send-email-greened@obbligato.org>
In-Reply-To
<1357646997-28675-1-git-send-email-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"
+'
+
 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
Previous: David A. GreeneNext: Junio C Hamano
Message 3 of 22 in “Revised git-subtree Patches”
  1. David A. GreeneJan 8, 2013
  2. 1/7 Remove Test Number CommentsDavid A. Greene, Jan 8, 2013
  3. 2/7 contrib/subtree: Use %B for Split Subject/BodyDavid A. Greene, Jan 8, 2013
  4. Junio C HamanoJan 8, 2013
  5. greened@obbligato.orgJan 16, 2013
  6. 郑文辉 (Techlive Zheng)Jan 8, 2013
  7. Junio C HamanoJan 9, 2013
  8. greened@obbligato.orgJan 16, 2013
  9. Junio C HamanoJan 16, 2013
  10. greened@obbligato.orgJan 22, 2013
  11. 3/7 contrib/subtree: Add --unannotateDavid A. Greene, Jan 8, 2013
  12. Junio C HamanoJan 8, 2013
  13. greened@obbligato.orgJan 16, 2013
  14. greened@obbligato.orgJan 16, 2013
  15. Junio C HamanoJan 16, 2013
  16. greened@obbligato.orgJan 22, 2013
  17. 4/7 contrib/subtree: Better Error Handling for addDavid A. Greene, Jan 8, 2013
  18. Junio C HamanoJan 8, 2013
  19. greened@obbligato.orgJan 16, 2013
  20. 5/7 contrib/subtree: Fix SynopsisDavid A. Greene, Jan 8, 2013
  21. 6/7 contrib/subtree: Honor DESTDIRDavid A. Greene, Jan 8, 2013
  22. 7/7 contrib/subtree: Make the Manual Directory if NeededDavid A. Greene, Jan 8, 2013

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.