Subject: Re: Three issues from a Subversion-to-git migration

From: Eric Raymond <[email-masked]>
Date: Mon, 29 Mar 2010 05:10:56 -0400

Thomas Rast <[email-masked]>:
> 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.
-- 
		<a href="http://www.catb.org/~esr/">Eric S. Raymond</a>