From: Michael Haggerty <mhagger@alum.mit.edu>
To: "Björn Steinbrink" <B.Steinbrink@gmx.de>
Cc: Sam Granieri Jr <sjgdev@gmail.com>, Git Users List <git@vger.kernel.org>
Subject: Re: [Feature Request] Better Subversion integration
Date: Sun, 10 Feb 2008 20:36:34 +0100 [thread overview]
Message-ID: <47AF5242.9080804@alum.mit.edu> (raw)
In-Reply-To: <20080210175351.GA13411@atjola.homenet>
Björn Steinbrink wrote:
> On 2008.02.10 17:52:15 +0100, Michael Haggerty wrote:
>> Björn Steinbrink wrote:
>>> On 2008.02.09 20:44:59 -0600, Sam Granieri Jr wrote:
>>>> Right now, git-svn import (or clone) will convert tags and branches as
>>>> remote branches.
>>>> I would like it if git could pick up subversion tags and translate them
>>>> as git tags upon importing
>>> SVN tags aren't like git tags. A "tag" in SVN is just another directory,
>>> which you can modify at will. Yeah, I know, you _should_ not commit any
>>> changes to SVN "tags", but shit happens. And once you modify the "tag"
>>> in SVN, you would have to invalidate the git tag, and finding a commit
>>> that matches the SVN state of things is probably way too expensive to be
>>> practical. Maybe some --we-never-mess-up-svn-tag-alike-branches could
>>> be added to allow git-svn to create teal git tags though? Dunno, I don't
>>> care much. Shouldn't be too hard to find some shell magic to create
>>> tags, if one wants them.
>> Because of the way an SVN repository is stored, it should be cheap to
>> ask SVN whether the contents of a tag in the HEAD revision are identical
>> to the contents at the time the tag was created. If there was any
>> change anywhere under the tag directory, then the node of the tag
>> directory will be different in the two revisions.
>>
>> For that matter, you could ask SVN for information about the revisions
>> in which the tags/ directory was changed (this is also very cheap), and
>> make sure that none of those changes modified an existing tag. This
>> scan could be done at the beginning of a conversion to determine which
>> tags were handled as pure tags (and therefore convertible as git tags)
>> and which were not (and therefore require more complicated handling).
>
> Yeah, but what if a "tag" in SVN is modified after that? Then the git
> tag becomes kinda invalid, and I see no cheap way to figure out if there
> is a commit somewhere that has the same content of the new "tag". That's
> what I'm talking about.
>
> The only way I see to handle that is to create a new commit in git and
> tag that. But IMHO that's totally nuts, because the tag doesn't even
> point to a commit of the "real" branch anymore. And you'd either need to
> replace/remove the old tag or use a naming scheme that includes some
> @rev marker, both of which are just confusing when talking about tags.
You're right; when importing incrementally there is no way to know what
people will do with a tag after the initial conversion. I was thinking
more of a one-time conversion.
If a new tag is created cleanly in subversion (that is, a single copy
from a single location, then you can read the SVN source (trunk or
branch name + SVN revision number) directly out of SVN. A persistent
look-up table could keep track of the git hashes corresponding to such
sources.
If a clean tag is later modified, would it be reasonable to
"retroactively" create a git branch based on the contents of the old
tag, and modify that?
The general case is certainly not easy, but some standard, easy cases
could probably be covered.
Michael
next prev parent reply other threads:[~2008-02-10 19:37 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-02-10 2:44 [Feature Request] Better Subversion integration Sam Granieri Jr
2008-02-10 3:56 ` Björn Steinbrink
2008-02-10 16:52 ` Michael Haggerty
2008-02-10 17:53 ` Björn Steinbrink
2008-02-10 19:36 ` Michael Haggerty [this message]
2008-02-10 22:18 ` Björn Steinbrink
2008-02-11 8:47 ` Sebastian Harl
2008-02-11 16:55 ` Sam Granieri Jr
2008-02-11 22:11 ` Sebastian Harl
2008-02-15 22:38 ` Jan Hudec
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=47AF5242.9080804@alum.mit.edu \
--to=mhagger@alum.mit.edu \
--cc=B.Steinbrink@gmx.de \
--cc=git@vger.kernel.org \
--cc=sjgdev@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).