summaryrefslogtreecommitdiff
path: root/git-subtree.sh
diff options
context:
space:
mode:
authorLibravatar Avery Pennarun <apenwarr@gmail.com>2009-04-24 14:45:02 -0400
committerLibravatar Avery Pennarun <apenwarr@gmail.com>2009-04-24 14:45:02 -0400
commitfd9500eef2eba7e8f66f984c924a11282daaa870 (patch)
tree5f9ac7f4ef1eb1779387ee5d727846d5734340ff /git-subtree.sh
parent'git subtree split' now basically works. (diff)
downloadtgif-fd9500eef2eba7e8f66f984c924a11282daaa870.tar.xz
We now copy the other stuff about a commit (changelog, author, etc).
Diffstat (limited to 'git-subtree.sh')
-rwxr-xr-xgit-subtree.sh25
1 files changed, 21 insertions, 4 deletions
diff --git a/git-subtree.sh b/git-subtree.sh
index c59759baa6..256946b0de 100755
--- a/git-subtree.sh
+++ b/git-subtree.sh
@@ -77,7 +77,6 @@ cache_setup()
rm -rf "$cachedir" || die "Can't delete old cachedir: $cachedir"
mkdir -p "$cachedir" || die "Can't create new cachedir: $cachedir"
debug "Using cachedir: $cachedir" >&2
- echo "$cachedir"
}
cache_get()
@@ -100,6 +99,24 @@ cache_set()
echo "$newrev" >"$cachedir/$oldrev"
}
+copy_commit()
+{
+ # We're doing to set some environment vars here, so
+ # do it in a subshell to get rid of them safely later
+ git log -1 --pretty=format:'%an%n%ae%n%ad%n%cn%n%ce%n%cd%n%s%n%n%b' "$1" |
+ (
+ read GIT_AUTHOR_NAME
+ read GIT_AUTHOR_EMAIL
+ read GIT_AUTHOR_DATE
+ read GIT_COMMITTER_NAME
+ read GIT_COMMITTER_EMAIL
+ read GIT_COMMITTER_DATE
+ export GIT_AUTHOR_NAME GIT_AUTHOR_EMAIL GIT_AUTHOR_DATE
+ export GIT_COMMITTER_NAME GIT_COMMITTER_EMAIL GIT_COMMITTER_DATE
+ git commit-tree "$2" $3 # reads the rest of stdin
+ ) || die "Can't copy commit $1"
+}
+
cmd_split()
{
debug "Splitting $dir..."
@@ -119,9 +136,9 @@ cmd_split()
for parent in $newparents; do
p="$p -p $parent"
done
- newrev=$(echo synthetic | git commit-tree $tree $p) \
- || die "Can't create new commit for $rev / $tree"
- echo " newrev is: $newrev"
+
+ newrev=$(copy_commit $rev $tree "$p") || exit $?
+ debug " newrev is: $newrev"
cache_set $rev $newrev
done || exit $?
done || exit $?