From: Sam Vilain <sam@vilain.net>
To: Alex Riesen <raa.lkml@gmail.com>
Cc: Jakub Narebski <jnareb@gmail.com>,
Arnaud Bailly <abailly@oqube.com>,
git@vger.kernel.org
Subject: Re: From P4 to Git
Date: Tue, 04 Aug 2009 08:32:20 +1200 [thread overview]
Message-ID: <1249331540.12801.10.camel@maia.lan> (raw)
In-Reply-To: <81b0412b0908030650oc39f4a3s7c059e300b65addb@mail.gmail.com>
On Mon, 2009-08-03 at 15:50 +0200, Alex Riesen wrote:
> On Mon, Aug 3, 2009 at 13:30, Sam Vilain<sam@vilain.net> wrote:
> > On Mon, 2009-08-03 at 10:47 +0200, Alex Riesen wrote:
> >> Is it an import-once tool, or can the process be restarted? (because it looks
> >> like the script needs a complicated setup).
> >
> > It's fully restartable. Not only that but it uses transaction
> > protection to make sure that its internal state doesn't get corrupted
> > when performing the various options.
>
> "varios options"? Operations? As when working on a live server?
> Aren't P4 changelist numbers always increasing? Or you mean
> the protection against multiple running instances of p4raw,
> so it is also parallelizable?
The "live" parts are never touched - only the write-only files that
perforce writes; and the rcs files are read using rcs.
What I was referring to by "various options" was the commands in the
program which perform the migration. It's a multi-step process - load
the metadata from perforce 'load', import the file images to git blobs
'export-blobs', trace through the path structure and decide which parts
are the roots, and make parents 'find-branches', etc. All parts are
fully transaction protected, restartable and rewindable. It also means
that if a command crashes that you are left in a sane state. I had to
build it like that to keep my sanity writing and using it :-). After
all it was something of a reverse engineering of Perforce's internals.
All you need is the RCS backing files, a 'checkpoint' and (optionally)
'journal' files. No access to the live perforce DBs is required.
> > No, it's server only. ...
> Darn. I hoped it wasn't. Can't play with it, then.
Yeah, in theory you could derive the internal table information by
issuing zillions of 'p4 integrated', 'p4 filelog' commands etc. I've
written p4raw sub-commands which can produce the output of those
commands but not tried to go the other way; I wasn't interested.
> > ... I think I did get around to implementing not having
> > to go through all the stages for branches you didn't care to import. It's
> > difficult though, the stage which correlates those thousands of 'integrate'
> > records is never going to be fast.
> Maybe if it is done locally, it can be improved? You seem to use the
> Postgre for lookups, right?
I'm sure that the queries could be improved, but Postgres is actually
quite good at crunching the numbers. It's just a lot of data to crunch.
> That's were I hoped your project could help. I thought, if I pull in all the
> needed changelists (selected by path/CL), there may be a way to
> recreate a mergeable history out of this dump. At least, one involving less
> labor then I have to do now.
Yeah... well the design of my tool is that it needs to have the perforce
internal information. But really you can probably consider the
converter orphaned, I have no current need to work on it; it served a
purpose, which was converting perl's perforce to perl.git, and that's
history now.
Sam
next prev parent reply other threads:[~2009-08-03 20:31 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-07-28 20:14 From P4 to Git Arnaud Bailly
2009-07-28 20:32 ` david
2009-07-28 21:10 ` Jakub Narebski
[not found] ` <85r5vxbd8e.fsf@oqube.com>
2009-07-31 9:22 ` Jakub Narebski
2009-07-31 11:14 ` Alex Riesen
2009-08-03 7:49 ` Sam Vilain
2009-08-03 8:47 ` Alex Riesen
2009-08-03 11:30 ` Sam Vilain
2009-08-03 13:50 ` Alex Riesen
2009-08-03 20:32 ` Sam Vilain [this message]
2009-08-03 21:51 ` Alex Riesen
2009-08-04 0:29 ` Sam Vilain
2009-08-02 7:16 ` Sam Vilain
2009-08-04 12:31 ` Arnaud Bailly
2009-08-04 12:35 ` Peter Baumann
2009-08-03 21:37 ` John Tapsell
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=1249331540.12801.10.camel@maia.lan \
--to=sam@vilain.net \
--cc=abailly@oqube.com \
--cc=git@vger.kernel.org \
--cc=jnareb@gmail.com \
--cc=raa.lkml@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).