summaryrefslogtreecommitdiff
path: root/contrib
diff options
context:
space:
mode:
authorRob Mayoff <mayoff@dqd.com>2015-11-13 17:25:49 (GMT)
committerJeff King <peff@peff.net>2015-11-24 21:53:35 (GMT)
commit5d65fe312e22594b7fec7349945fb0072987716b (patch)
treefab6982c998962f92f6eda3c64ca827fa36942a4 /contrib
parent5cb2e162d21fa45a63f186b31970e2e9c9b10ba9 (diff)
downloadgit-5d65fe312e22594b7fec7349945fb0072987716b.zip
git-5d65fe312e22594b7fec7349945fb0072987716b.tar.gz
git-5d65fe312e22594b7fec7349945fb0072987716b.tar.bz2
contrib/subtree: unwrap tag refs
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> Signed-off-by: Jeff King <peff@peff.net>
Diffstat (limited to 'contrib')
-rwxr-xr-xcontrib/subtree/git-subtree.sh10
1 files changed, 8 insertions, 2 deletions
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