From: "Björn Steinbrink" <B.Steinbrink@gmx.de>
To: Michael Haggerty <mhagger@alum.mit.edu>
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 23:18:08 +0100 [thread overview]
Message-ID: <20080210221808.GA16615@atjola.homenet> (raw)
In-Reply-To: <47AF5242.9080804@alum.mit.edu>
On 2008.02.10 20:36:34 +0100, Michael Haggerty wrote:
> 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?
That's the first option I described (well, I skipped the "create a
branch" part). But you would get a history like this:
Before the tag change:
---A (tag XYZ)
\
B---C---D (trunk)
After the tag change:
---A---A' (tag XYZ)
\
B---C---D (trunk)
So not only does the tag move, but it's also no longer in the history of
trunk. And that makes it IMHO a bit confusing/useless to do that. With
the branches, you at least _know_ that things can change. Tags are not
supposed to do so.
That said, I'd not oppose any optional support to create such tags, I'd
just never use it.
Björn
next prev parent reply other threads:[~2008-02-10 22:18 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
2008-02-10 22:18 ` Björn Steinbrink [this message]
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=20080210221808.GA16615@atjola.homenet \
--to=b.steinbrink@gmx.de \
--cc=git@vger.kernel.org \
--cc=mhagger@alum.mit.edu \
--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).