Hi,
Michael Haggerty wrote:
> Markus Schiltknecht wrote:
>> In CVS as well as in subversion, you can modify a
tag after it has been
>> created.
>
> That's true, but:
>
> 1. If you modify a tag in CVS, CVS doesn't leave any
record of the tag's
> previous contents.
Yup, in that respect, subversion is clearly superior to
CVS.
> In fact, there is no evidence in the CVS repository
> to indicate that the tag was moved at all. So from the
point of view of
> non-incremental conversions, you can just pretend that
CVS never changes
> a tag after creation.
..but having a tag spanning multiple resvisions is the real
problem, see
also my other mail. Sorry for not being clear in my
explanation.
> If I understand the git-fast-import format correctly,
it is no problem
> to add files from multiple points of time into a
branch.
Hm... reading the git-fast-import manpage it says about the
'tag' command:
"Creates an annotated tag object from an existing
commit or branch.
Lightweight tags are not supported by this command, as they
are not
recommended for recording meaningful points in time."
(Note that it works on existing commits or branches, not
single files.)
Below, the reference for the 'committish' field (in the
'commit'
section, but the same applies to the 'tag' command as well)
it says:
"Here <committish> is any of the following:
* The name of an existing branch already in fast-import's
internal
branch table. If fast-import doesn't know the name, its
treated as a
SHA-1 expression.
* A mark reference, :<idnum>, where <idnum>
is the mark number.
(...)
* A complete 40 byte or abbreviated commit SHA-1 in hex.
* Any valid Git SHA-1 expression that resolves to a
commit. (...)
"
I'm not quite sure what the first two exactly are, but to me
this looks
very much like git kept very close to monotone's storage
format, i.e.
does not support tagging single files across multiple
revisions (commits).
> If you want
> your branch to have only one source, you might have to
do this in
> multiple git transactions.
AFAICT, it's the other way around: if you tag only exactly
one revision,
that's a single 'transaction'. Creating an artificial
revision which you
can tag later on involves multiple 'transactions'.
> But if you are willing to "merge" from
> multiple sources at once, then you can create such a
branch in a single
> git transaction.
Such a thing quite certainly needs an artificial revision.
At least it
does for monotone. And I don't think git diverged in that
regard.
> But we're not talking about a general svn->X
converter (at least I'm
> not). All we have to do to support cvs->X is to be
able to convert the
> very sane SVN repositories that are output by cvs2svn.
Or (and that is
> what I am working on now), just skip the SVN step and
output directly to
> git or whatever.
That's a good idea. I'm just trying to point out, that other
VCSen have
requirements different from subversion, and that cvs2svn
(obviously) is
subversion specific.
Regards
Markus
------------------------------------------------------------
---------
To unsubscribe, e-mail: dev-unsubscribe cvs2svn.tigris.org
For additional commands, e-mail: dev-help cvs2svn.tigris.org
|