Re: New script to convert p4 repositories to git - git-p4c version 1.
From: Pete Wyckoff <hidden>
Date: 2016-06-15 22:45:47
thestar@fussycoder.id.au wrote on Tue, 09 Dec 2008 21:25 +1100:
I couldn't use git-p4 on my system because I kept running out of memory, and I didn't like the workflow it imposed. Also, it had various other issues with the repo I was trying to use, mainly because it is not an ideal repository, however those are (generally) the fault of the particular repo I was using, and not git-p4. (Which is an excellent script by itself). This script is severely crippled in that it doesn't (yet) allow one to contribute changesets back to perforce, however it manages to read from perforce with: * No need to rebase. * Mangling of file names. (Especially with regards to case sensitivity). * Tagging of revisions with the perforce changesets. * Ability to handle branches with spaces in the name. * Ability to pretend that perforce doesn't exist. (That's the plan, anyway). * Be extremely memory efficient. It does NOT require as much memory as does git-p4, even when the size of the change is large. * Be easy to manually modify the repository, particularly if bad things happen.
I like how your script imports one change at a time, as the initial
import using git-p4 here does indeed get close to exhasting virtual
memory, but I'm running into a different limitation with p4c.
The command:
p4 -G changes -l -t
is adminstratively limited to a paltry six-digit number, and
produces only an error message.
The other feature I need is the ability to use a client
specification. We merge together 40-odd different chunks of //depot
into a single checked-out client, and use some other number of
"-//depot/..." rules to exclude some parts of the full depot.
If I hack p4c to limit the changes with "-m 10" or so, then things
are a bit better in that I get two objects (changesets) but no
diffs. Had to hack the on_branch() code somewhat, in that no form
of --branches seemed to produce an "interesting" changeset by your
definition. Could be my lack of understanding here.
If you think you want to handle client specifications, and can think
of a way around the "p4 changes" limitation, I'll be happy to poke
at your next version. Perhaps I'm not in your target audience,
though. I don't necessarily need to have a full git history of the
entire p4, but this seems to be a fundamental part of your approach.
-- Pete