Hoi, Found a small issue with git filter-branch not removing empty commits if they are the first commit in the tree. Find test script attached and example output below. I think the issue is in the function git_commit_non_empty_tree, which doesn't handle this case. I think something like the following should work: git_commit_non_empty_tree() { + if test $# = 1 && test -z "$(git ls-tree $1)" ; then + skip_commit "$@" + fi if test $# = 3 && test "$1" = $(git rev-parse "$3^{tree}"); then map "$3" else git commit-tree "$@" fi } If you're wondering how I got here, it was by using git svn to import a tree once converted by cvs2svn, which added empty commits to the svn repo to indicate the creation of branches. Have a nice day, ---- Test script output (note: destroys the foo subdirectory) ---- + git version git version 1.7.9.5 + echo ======== Setup ======== + git init foo Initialized empty Git repository in /tmp/foo/.git/ + export GIT_AUTHOR_NAME=foo + export GIT_AUTHOR_EMAIL=foo@xxxxxxxxxxx + export GIT_COMMITTER_NAME=foo + export GIT_COMMITTER_EMAIL=foo@xxxxxxxxxxx + cd foo + git write-tree + git commit-tree 4b825dc642cb6eb9a060e54bf8d69288fbee4904 -m Commit 1 + COMMIT1=1dc65b84c016320ce0599f2bd78bcbb5e532658f + export GIT_AUTHOR_NAME=bar + export GIT_AUTHOR_EMAIL=bar@xxxxxxxxxxx + echo Hello World + git add file + git write-tree + git commit-tree 34b512cb05f8b709198d18d916ea6395c237ae0d -m Commit 2 -p 1dc65b84c016320ce0599f2bd78bcbb5e532658f + COMMIT2=11af492decae1284cd2d27af4c5a92b4aab46510 + git branch -f master 11af492decae1284cd2d27af4c5a92b4aab46510 + git log master --stat commit 11af492decae1284cd2d27af4c5a92b4aab46510 Author: bar <bar@xxxxxxxxxxx> Date: Fri Feb 8 16:12:13 2013 +0100 Commit 2 file | 1 + 1 file changed, 1 insertion(+) commit 1dc65b84c016320ce0599f2bd78bcbb5e532658f Author: foo <foo@xxxxxxxxxxx> Date: Fri Feb 8 16:12:13 2013 +0100 Commit 1 + echo ======== Bug: filter-branch --prune-empty not working ======== + git filter-branch --prune-empty master Rewrite 11af492decae1284cd2d27af4c5a92b4aab46510 (2/2) WARNING: Ref 'refs/heads/master' is unchanged + git log master --stat commit 11af492decae1284cd2d27af4c5a92b4aab46510 Author: bar <bar@xxxxxxxxxxx> Date: Fri Feb 8 16:12:13 2013 +0100 Commit 2 file | 1 + 1 file changed, 1 insertion(+) commit 1dc65b84c016320ce0599f2bd78bcbb5e532658f Author: foo <foo@xxxxxxxxxxx> Date: Fri Feb 8 16:12:13 2013 +0100 Commit 1 -- Martijn van Oosterhout <kleptog@xxxxxxxxx> http://svana.org/kleptog/
Attachment:
test
Description: Binary data