From: Eric Raymond Date: Mon, 29 Mar 2010 09:10:56 GMT Subject: Re: Three issues from a Subversion-to-git migration Message-ID: <20100329091056.GC10538@thyrsus.com> In-Reply-To: <201003291100.13043.trast@student.ethz.ch> Thomas Rast : > Eric Raymond wrote: > > 2. The git-svn migration logic does not handle unmodified SVN tag > > trees well. > > The problem here is that git-svn is designed to handle incremental > updates, where it can't know whether some insane SVN user decides to > modify the tag later on. Yes. Ideally, I suppose, git-svn (or whatever replaces it) would have behavior something like this: 1. Turn unmodified tag directories into git tags 2. Turn odified tags into branches. 3. Recognize when a formerly unmodified tag has been modified, remove the git tag, and turn it into a branch. > I've used the following hack to make real tags out of SVN "tags": > > git for-each-ref --format="%(refname)" refs/remotes/tags/ | > while read tag; do > GIT_COMMITTER_DATE="$(git log -1 --pretty=format:"%ad" "$tag")" \ > GIT_COMMITTER_EMAIL="$(git log -1 --pretty=format:"%ce" "$tag")" \ > GIT_COMMITTER_NAME="$(git log -1 --pretty=format:"%cn" "$tag")" \ > git tag -m "$(git log -1 --pretty=format:"%s%n%b" "$tag")" \ > "${tag#refs/remotes/tags/}" "$tag" > done > > Disclaimer: it worked last time I used it. Haven't checked if it got > dusty since. Wow, that's ugly. But it does look like it ought to work. -- Eric S. Raymond