diff options
author | Avery Pennarun <apenwarr@gmail.com> | 2009-04-24 14:45:02 -0400 |
---|---|---|
committer | Avery Pennarun <apenwarr@gmail.com> | 2009-04-24 14:45:02 -0400 |
commit | fd9500eef2eba7e8f66f984c924a11282daaa870 (patch) | |
tree | 5f9ac7f4ef1eb1779387ee5d727846d5734340ff /git-subtree.sh | |
parent | 'git subtree split' now basically works. (diff) | |
download | tgif-fd9500eef2eba7e8f66f984c924a11282daaa870.tar.xz |
We now copy the other stuff about a commit (changelog, author, etc).
Diffstat (limited to 'git-subtree.sh')
-rwxr-xr-x | git-subtree.sh | 25 |
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 $? |