Re: Three issues from a Subversion-to-git migration
- From
Eric Raymond <esr@thyrsus.com>
- Date
- Mar 29, 2010, 09:10 UTC
- Message-ID
- <20100329091056.GC10538@thyrsus.com>
- In-Reply-To
- <201003291100.13043.trast@student.ethz.ch>
Thomas Rast <trast@student.ethz.ch>:
Show 7 quoted lines
> 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.
Show 13 quoted lines
> 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>