Re: Git/Mercurial interoperability (and what about bzr?)

!MAILaRCHIVE_VOTE_RePLACE
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: Florian Weimer <fw@...>
Cc: <git@...>
Date: Saturday, November 1, 2008 - 6:33 am

Florian Weimer <fw@deneb.enyo.de> writes:

I think you don't understand the issue here.

First, I think that we all agree here that by definition tags should
named reference (for example 'v1.0' or '1.0') to some immutable
snapshot of a state of repository, so for example when somebody says
'v1.0' everybody knows what it is.  In Git tags are immutable (you
can't checkout a tag, you can only checkout state pointed by tag)
external pointers to commits in the DAG (graph) of revisions.

Global tags (tags used to mark releases like 'v1.0') have to _not
versioned_ and _transferable_.  Transferable (global) because we want
to know for example what 'v1.0' version was in each clone / each
repository.  Non-versioned because we want to have the same set of
tags independent on what branch we are (when we are on 'master', we
want to be able to know about 'v1.0.1' which is on 'maint'), and what
revision we have checked out (for example during bisection, we want to
be able to compare to 'v1.0' even if we have checked out revision
which is earlier than 'v1.0').

Do you agree that global tags should be both non-versioned and
trasferable?

Now Mercurial has chosen to use in-tree '.hgtags' file to have global
tags transferable.  Never mind the fact that it had to treat this file
in special way to have it non-versioned (as opposed to for example
.*ignore file, which should be both transferable and versioned); the
fact that in-tree file is used means that tag is visible to outside
(transferable) only after you commit changes in .hgtags file.

In Git tags are external to object database; they reside in
refs/tags/* namespace.  They are of course non-versioned, as not being
in-tree.  In default configuration however (from what I understand) if
you transfer (get) some tagged commit, you also get a tag that points
to transferred commit.  You don't need to create "PROJECT 1.0" (or
"Tagged v1.0") commit to make tag visible to outside.


In short, if you want to have bi-directional gateway between Mercurial
and Git, Git has to be limited:
 * no octopus merges (with more than two parents)
 * always create 'tagging commits' (bump version number for example)
   for tagging purposes on Mercurial side.

-- 
Jakub Narebski
Poland
ShadeHawk on #git
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[VOTE] git versus mercurial, walt, (Sun Oct 26, 12:28 am)
Re: [VOTE] git versus mercurial, walt, (Tue Oct 28, 8:31 am)
Re: [VOTE] git versus mercurial, Miles Bader, (Wed Oct 29, 4:15 am)
Re: [VOTE] git versus mercurial, Johannes Schindelin, (Tue Oct 28, 10:28 am)
Re: [VOTE] git versus mercurial, Shawn O. Pearce, (Wed Oct 29, 3:11 pm)
Re: [VOTE] git versus mercurial, Boyd Lynn Gerber, (Wed Oct 29, 3:36 pm)
Re: [VOTE] git versus mercurial, Johannes Schindelin, (Wed Oct 29, 3:48 pm)
Re: [VOTE] git versus mercurial, Boyd Lynn Gerber, (Wed Oct 29, 3:51 pm)
Re: Git/Mercurial interoperability (and what about bzr?), Florian Weimer, (Sat Nov 1, 4:06 am)
Re: Git/Mercurial interoperability (and what about bzr?), Jakub Narebski, (Sat Nov 1, 6:33 am)
Re: Git/Mercurial interoperability (and what about bzr?), Florian Weimer, (Sat Nov 1, 6:44 am)
Re: Git/Mercurial interoperability (and what about bzr?), Linus Torvalds, (Sat Nov 1, 1:51 pm)
Re: Git/Mercurial interoperability (and what about bzr?), Jakub Narebski, (Sat Nov 1, 8:26 am)
Re: Git/Mercurial interoperability (and what about bzr?), Florian Weimer, (Sat Nov 1, 7:10 am)
Re: Git/Mercurial interoperability (and what about bzr?) (wa..., Johannes Schindelin, (Tue Oct 28, 10:59 am)
Re: Git/Mercurial interoperability (and what about bzr?), Matthieu Moy, (Tue Oct 28, 11:02 am)