Hi, Somewhat related to the recent thread about Apache Synapse, I'm having trouble making a git-svn clone of a project that has been moved around in a Subversion repository. See the script at the end of this message for a simple test case that does the following svn commits: PREPARE: creates projectA with the standard trunk,branches,tags structure VERSION1: first version of README.txt in projectA/trunk TAG1: tags projectA/trunk to projectA/tags/v1 MOVE: moves projectA to projectB VERSION2: second version of README.txt in projectB/trunk TAG2: tags projectB/trunk to projectB/tags/v2 The resulting repository structure is: /projectB/ trunk/ README.txt # version 2 branches/ tags/ v1/ README.txt # version 1 v2/ README.txt # version 2 Here's the git commit graph created by the test case: * TAG2 <- refs/remotes/tags/v2 | * VERSION2 <- refs/remotes/trunk |/ * MOVE * VERSION1 <- refs/remotes/trunk@3 | * MOVE <- refs/remotes/tags/v1 | * TAG1 <- refs/remotes/tags/v1@3 |/ * PREPARE <- refs/remotes/tags/v1@1 The most pressing issue is that the refs/remotes/tags/v1 branch starts directly from the first PREPARE commit instead of VERSION1. Also, the branch point of refs/remotes/tags/v2 seems to be incorrect, it should be based on the VERSION2 commit instead of MOVE. A more accurate commit graph would be: * TAG2 <- refs/remotes/tags/v2 * VERSION2 <- refs/remotes/trunk * MOVE | * MOVE <- refs/remotes/tags/v1 | * TAG1 |/ * VERSION1 * PREPARE Or even (but I guess git-svn needs to map each svn commit to at least one git commit, so this probably wouldn't work): * VERSION2 <- refs/remotes/trunk, refs/remotes/tags/v2 * VERSION1 <- refs/remotes/tags/v1 * PREPARE I tried working my way through git-svn.perl to figure out how to improve the way git-svn tracks svn moves, but so far I couldn't figure out how to do that. Any ideas or hints? BR, Jukka Zitting ===== #!/bin/sh REPO=`pwd`/repo svnadmin create $REPO svn checkout file://$REPO checkout cd checkout svn mkdir projectA svn mkdir projectA/trunk svn mkdir projectA/branches svn mkdir projectA/tags svn commit -m PREPARE echo VERSION1 > projectA/trunk/README.txt svn add projectA/trunk/README.txt svn commit -m VERSION1 svn copy projectA/trunk projectA/tags/v1 svn commit -m TAG1 svn update svn move projectA projectB svn commit -m MOVE echo VERSION2 > projectB/trunk/README.txt svn commit -m VERSION2 svn copy projectB/trunk projectB/tags/v2 svn commit -m TAG2 svn update mkdir ../git cd ../git git svn init -s file://$REPO/projectB git svn fetch -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html