Adding Missing Tags to a Repository

2 messages, 2 authors, 2016-06-15 · open the first message on its own page

Adding Missing Tags to a Repository

From: Neil <hidden>
Date: 2016-06-15 22:56:04

Hi everyone,

A while back I did a svn-to-git migration for my team. Our subversion
repository had about 30K+ commits, 100+ branches, 2K+ tags, all made
over a 20+ year period. I was doing the migration using git-svn, and
my big problem was the tags. git-svn seemed to want to traverse the
entire history of each tag, which was taking a long time. Because time
and resources were limited, I ended up just migrating the branches and
trunk, with the idea that I would handle the tags at a later date. My
original plan to do that was to crawl the subversion log, find where
the tags were made, and apply a git tag to the commit that was the
source of the tag. This was a bad idea.

I've found that over the years, people have made tags that are only
subdirectories of the source tree, made tags off of other tags, and
committed to tags. The latter is the biggest problem, since those
commits don't seem to be stored in the git repository because they
never appeared in the branches/trunk.

So, I'm wondering what my options are to bring back this history. One
idea is to somehow resume the git-svn download, but changing it to
also scan tags (it sounds like it should be possible, but I haven't
tried it yet). Or maybe there's some other tool that will more quickly
clone the repository including tags, and then I can somehow splice the
tags back into the repository we're already using?

Any ideas or suggestions?

Thanks!

Re: Adding Missing Tags to a Repository

From: Michael J Gruber <hidden>
Date: 2016-06-15 22:56:04

Neil venit, vidit, dixit 06.02.2013 05:45:
Hi everyone,

A while back I did a svn-to-git migration for my team. Our subversion
repository had about 30K+ commits, 100+ branches, 2K+ tags, all made
over a 20+ year period. I was doing the migration using git-svn, and
my big problem was the tags. git-svn seemed to want to traverse the
entire history of each tag, which was taking a long time. Because time
and resources were limited, I ended up just migrating the branches and
trunk, with the idea that I would handle the tags at a later date. My
original plan to do that was to crawl the subversion log, find where
the tags were made, and apply a git tag to the commit that was the
source of the tag. This was a bad idea.

I've found that over the years, people have made tags that are only
subdirectories of the source tree, made tags off of other tags, and
committed to tags. The latter is the biggest problem, since those
commits don't seem to be stored in the git repository because they
never appeared in the branches/trunk.
I think it's fair to say that svn encourages the abuse of tags ;)

I've cleaned up other people's mis-tags myself, and it's no fun. If the
tree layout is messed up then git-svn will often create a new root
commit, so that you have to stitch the history yourself.

In the case of "correct" tags, you're often better of converting the tag
creating commit into an annotated tag, provided that the tree is unchanged.

Tags with tree changes are really branches, usually maintenance branches
after a proper tag.
So, I'm wondering what my options are to bring back this history. One
idea is to somehow resume the git-svn download, but changing it to
also scan tags (it sounds like it should be possible, but I haven't
tried it yet). Or maybe there's some other tool that will more quickly
clone the repository including tags, and then I can somehow splice the
tags back into the repository we're already using?

Any ideas or suggestions?

Thanks!
If you add a git-svn refspec to your config and rerun git-svn fetch it
might rescan tags, although you may have to poke around to make it
rescan from revision 1.

Michael
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help