From: Michael Haggerty <mhagger@alum.mit.edu>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Steffen Prohaska <prohaska@zib.de>,
git@vger.kernel.org, users@cvs2svn.tigris.org
Subject: Re: cvs2svn conversion directly to git ready for experimentation
Date: Fri, 03 Aug 2007 01:19:34 +0200 [thread overview]
Message-ID: <46B26686.3010002@alum.mit.edu> (raw)
In-Reply-To: <alpine.LFD.0.999.0708021340450.8184@woody.linux-foundation.org>
Linus Torvalds wrote:
> On Thu, 2 Aug 2007, Steffen Prohaska wrote:
>> Right now, I'd prefer the import by parsecvs because of the
>> simpler history. However, I don't know if I loose history
>> information by doing so. I'd start by a run of cvs2svn to validate
>> the overall structure of the CVS repository.
>
> Well, once imported, you could just go through the branches and tags, and
> just delete the ones you consider uninteresting, and then do a "git gc".
>
> You'd want to re-pack after a fast-import anyway (regardless of the source
> of the fast-import input), so maybe cvs2svn ends up giving you a bit
> unnecessary info, but it should be easy enough to get rid of
> after-the-fact.
The real goal is to get cvs2svn to include the useful information and
exclude the rest. :-)
I definitely want to address the problem of the helper branches used to
create tags. This problem has has two aspects:
1. The helper branches should be deleted after the tag has been defined.
I simply couldn't figure out how to do this using git-fast-import, and
git-fast-import complained when I tried to use a branch called
"TAG_FIXUP" without the "refs/head/" prefix.
2. The helper branch is not needed at all if an existing revision has
exactly the same contents as needed on the tag. This requires cvs2svn
to keep a record of which files exist in the complete file tree on every
branch at every revision (which it can already do, though it is
expensive), and also to give it the smarts to choose the optimal tag
point (which it already does, except that it currently doesn't penalize
sources that require files to be deleted before making the tag).
If the problem is lots of seemingly-unnecessary merges involving a
vendor branch, then it is time for me or some other volunteer to add the
optimization of allowing branches to be grafted from the vendor branch
to trunk. I know of the problem and have a good idea how to implement
it; it is just a matter of finding the time to get it done.
If the problem is unlabeled branches that can't be excluded (because
other branches or tags depend on them), then the real problem is that it
is not known which unlabeled branches in individual files correspond to
the same project-wide conceptual branch. I have considered two
possibilities to improve this situation:
1. Allow unlabeled -- indeed any -- branches to be discarded even if
other branches or tags depend on them. This could be done by
incorporating the content of the source revision (i.e., the revision on
the unlabeled branch that is going to be discarded) into the zeroth
revision of the daughter branch, then grafting the daughter onto the
branch from which the unlabeled branch sprouted.
2. Rename the unlabeled branches by figuring out which unlabeled branch
in fileA corresponds to which unlabeled branch in fileB, fileC, etc.
This would involve a tricky bit of matching file-wise dependency trees
onto one another to unify unlabeled branch labels, keeping in mind that:
- The trees have other differences as well.
- The unlabeled branch does not necessarily occur in every file.
- There may be multiple unlabeled branches per file.
Michael
next prev parent reply other threads:[~2007-08-02 23:19 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-08-01 0:09 cvs2svn conversion directly to git ready for experimentation Michael Haggerty
2007-08-01 0:41 ` Johannes Schindelin
2007-08-01 22:09 ` Jakub Narebski
2007-08-02 16:58 ` Michael Haggerty
2007-08-02 23:44 ` Jon Smirl
2007-08-02 8:49 ` Steffen Prohaska
2007-08-02 17:23 ` Michael Haggerty
2007-08-02 19:22 ` Marko Macek
2007-08-02 23:59 ` Jon Smirl
2007-08-05 7:58 ` Oswald Buddenhagen
2007-08-02 17:35 ` Simon 'corecode' Schubert
2007-08-02 19:13 ` Steffen Prohaska
2007-08-02 19:29 ` Simon 'corecode' Schubert
2007-08-02 20:21 ` Robin Rosenberg
[not found] ` <200708022221.13129.robin.rosenberg.lists-RgPrefM1rjDQT0dZR+AlfA@public.gmane.org>
2007-08-02 20:31 ` Lübbe Onken
2007-08-02 20:32 ` Lübbe Onken
2007-08-02 20:33 ` Lübbe Onken
2007-08-02 22:02 ` Steffen Prohaska
2007-08-02 22:50 ` Simon 'corecode' Schubert
2007-08-02 23:50 ` Michael Haggerty
2007-08-03 8:40 ` Simon 'corecode' Schubert
2007-08-04 8:28 ` Steffen Prohaska
2007-08-03 3:07 ` Shawn O. Pearce
2007-08-02 23:37 ` Michael Haggerty
2007-08-02 20:43 ` Linus Torvalds
2007-08-02 23:19 ` Michael Haggerty [this message]
2007-08-03 3:12 ` Shawn O. Pearce
2007-08-02 23:55 ` Jon Smirl
[not found] ` <8b65902a0708010438s24d16109k601b52c04cf9c066@mail.gmail.com>
2007-08-02 15:34 ` Michael Haggerty
2007-08-02 23:08 ` Martin Langhoff
2007-08-03 4:03 ` Johannes Schindelin
2007-08-03 6:48 ` Steffen Prohaska
2007-08-03 7:10 ` Steffen Prohaska
2007-08-03 8:36 ` Michael Haggerty
2007-08-03 14:35 ` Patwardhan, Rajesh
2007-08-03 15:41 ` Jon Smirl
2007-08-03 16:42 ` Patwardhan, Rajesh
2007-08-03 18:58 ` Michael Haggerty
2007-08-03 20:16 ` Jon Smirl
2007-08-03 20:27 ` Jon Smirl
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=46B26686.3010002@alum.mit.edu \
--to=mhagger@alum.mit.edu \
--cc=git@vger.kernel.org \
--cc=prohaska@zib.de \
--cc=torvalds@linux-foundation.org \
--cc=users@cvs2svn.tigris.org \
/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).