threads / patch / 40794

v2contrib/subtree: unwrap tag refs

Subject: [PATCH v2] contrib/subtree: unwrap tag refs

## tl;dr

4 messages between Nov 13, 2015 and Jan 13, 2016. Diffs are folded; open one to read it.

replies: 3people: 4as markdown or json

Rob Mayoff· Nov 13, 2015, 17:25 UTC · lore

If a subtree was added using a tag ref, the tag ref is stored in the subtree commit message instead of the underlying commit's ref. To split or push subsequent changes to the subtree, the subtree command needs to unwrap the tag ref. This patch makes it do so.

The problem was described in a message to the mailing list from Junio C Hamano dated 29 Apr 2014, with the subject "Re: git subtree issue in more recent versions". The archived message can be found at <http://comments.gmane.org/gmane.comp.version-control.git/247503>.

Signed-off-by: Rob Mayoff <mayoff@dqd.com>
---
changes since v1:
* remove obsolete sub assignments
* wrap lines
 contrib/subtree/git-subtree.sh | 10 ++++++++--
 1 file changed, 8 insertions(+), 2 deletions(-)
Show changes to contrib/subtree/git-subtree.sh +8 −2
diff --git a/contrib/subtree/git-subtree.sh b/contrib/subtree/git-subtree.sh
index 9f06571..5ed0ea5 100755
--- a/contrib/subtree/git-subtree.sh
+++ b/contrib/subtree/git-subtree.sh
@@ -245,7 +245,10 @@ find_latest_squash()
 		case "$a" in
 			START) sq="$b" ;;
 			git-subtree-mainline:) main="$b" ;;
-			git-subtree-split:) sub="$b" ;;
+			git-subtree-split:)
+				sub="$(git rev-parse "$b^0")" ||
+				    die "could not rev-parse split hash $b from commit $sq"
+				;;
 			END)
 				if [ -n "$sub" ]; then
 					if [ -n "$main" ]; then
@@ -278,7 +281,10 @@ find_existing_splits()
 		case "$a" in
 			START) sq="$b" ;;
 			git-subtree-mainline:) main="$b" ;;
-			git-subtree-split:) sub="$b" ;;
+			git-subtree-split:)
+				sub="$(git rev-parse "$b^0")" ||
+				    die "could not rev-parse split hash $b from commit $sq"
+				;;
 			END)
 				debug "  Main is: '$main'"
 				if [ -z "$main" -a -n "$sub" ]; then
-- 
2.4.3
Jeff King· Nov 24, 2015, 21:52 UTC · re: Rob Mayoff · lore

Re: [PATCH v2] contrib/subtree: unwrap tag refs

On Fri, Nov 13, 2015 at 11:25:49AM -0600, Rob Mayoff wrote:
Show 17 quoted lines
> If a subtree was added using a tag ref, the tag ref is stored in
> the subtree commit message instead of the underlying commit's ref.
> To split or push subsequent changes to the subtree, the subtree
> command needs to unwrap the tag ref.  This patch makes it do so.
> 
> The problem was described in a message to the mailing list from
> Junio C Hamano dated 29 Apr 2014, with the subject "Re: git subtree
> issue in more recent versions". The archived message can be found
> at <http://comments.gmane.org/gmane.comp.version-control.git/247503>.
> 
> Signed-off-by: Rob Mayoff <mayoff@dqd.com>
> ---
> 
> changes since v1:
> 
> * remove obsolete sub assignments
> * wrap lines
Thanks.  David, can I get an Ack on this?
-Peff
David A. Greene· Jan 13, 2016, 02:42 UTC · re: Jeff King · lore

Re: [PATCH v2] contrib/subtree: unwrap tag refs

Jeff King <peff@peff.net> writes:
Show 20 quoted lines
> On Fri, Nov 13, 2015 at 11:25:49AM -0600, Rob Mayoff wrote:
>
>> If a subtree was added using a tag ref, the tag ref is stored in
>> the subtree commit message instead of the underlying commit's ref.
>> To split or push subsequent changes to the subtree, the subtree
>> command needs to unwrap the tag ref.  This patch makes it do so.
>> 
>> The problem was described in a message to the mailing list from
>> Junio C Hamano dated 29 Apr 2014, with the subject "Re: git subtree
>> issue in more recent versions". The archived message can be found
>> at <http://comments.gmane.org/gmane.comp.version-control.git/247503>.> 
>> Signed-off-by: Rob Mayoff <mayoff@dqd.com>
>> ---
>> 
>> changes since v1:
>> 
>> * remove obsolete sub assignments
>> * wrap lines
>
> Thanks.  David, can I get an Ack on this?
Yep.  I'm sorry I missed this re-roll.
                             -David

← back to recent threads