Trouble importing all perforce branches into git repo

I'm trying to import a project from my company's Perforce depot into a git repository. I've been successful getting a single branch into a single git repo, but what I'd like to do is to pull in the entire project plus all branches, but I can't get it working correctly.

I have my .p4settings file:

P4PORT=perforce-server.local:1666 P4USER=my.username

Clientspec is fairly simple:

//project/... // -//project/External/... //

The second line is to exclude the external library binaries from the checkout.

I use the following command line to start git-p4 importing:

git p4 clone --verbose --detect-branches --max-changes=100 //project/[email protected]

This goes through and checks all the branch names, etc, and attempts to import starting at the first commit (This particular projects begins at changelist 771)

Importing from //project/[email protected] into project Initialized empty Git repository in /Users/grant/Development/git_test/project/.git/ Reading pipe: git config git-p4.useclientspec Reading pipe: git config git-p4.user Reading pipe: git config git-p4.password Reading pipe: git config git-p4.port Reading pipe: git config Reading pipe: git config git-p4.client p4 -G branches Opening pipe: p4 -G branches p4 -G branch -o branch-1 Opening pipe: p4 -G branch -o branch-1 Reading pipe: git config --bool core.ignorecase p4 -G branch -o branch-2 ... Opening pipe: p4 -G branch -o branch-n p4-git branches: [] initial parents: {}

I'm not sure if p4-git branches, and initial parents are supposed to be empty here, but they are.

Finally we get to the point where it's about to start importing changelists into git and the following happens:

Getting p4 changes for //project/... p4 changes //project/... Reading pipe: p4 changes //project/... p4 -G describe 771 Opening pipe: p4 -G describe 771 Importing revision 771 (1%)branch is MAIN Importing new branch RCMerge/MAIN p4 changes //RCMerge/MAIN/[email protected],770 Reading pipe: p4 changes //RCMerge/MAIN/[email protected],770 Resuming with change 771 parent determined through known branches: Branch-foo looking for initial parent for refs/remotes/p4/project/MAIN; current parent is refs/remotes/p4/project/Branch-foo commit into refs/remotes/p4/project/MAIN parent refs/remotes/p4/project/Branch-foo p4 -G -x - print Opening pipe: p4 -G -x - print Glue/source/.empty fatal: Invalid ref name or SHA1 expression: refs/remotes/p4/project/Branch-foo fast-import: dumping crash report to .git/fast_import_crash_26002

Here's the file referenced above:

fast-import crash report: fast-import process: 26002 parent process : 26000 at Thu May 19 11:51:54 2011 fatal: Invalid ref name or SHA1 expression: refs/remotes/p4/project/Branch-foo Most Recent Commands Before Crash --------------------------------- checkpoint commit refs/remotes/p4/project/MAIN committer Some User <[email protected]> 1253574589 -0800 data <<EOT * from refs/remotes/p4/project/Branch-foo Active Branch LRU ----------------- active_branches = 0 cur, 5 max pos clock name ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Inactive Branches ----------------- refs/remotes/p4/project/MAIN: status : dirty tip commit : 0000000000000000000000000000000000000000 old tree : 0000000000000000000000000000000000000000 cur tree : 0000000000000000000000000000000000000000 commit clock: 0 last pack : Marks ----- ------------------- END OF CRASH REPORT

Now, being a perforce novice, I have no idea what this means and have no idea how to resolve this issue, or if its even possible. Has anyone run into a similar issue before? If so, how did you resolve it?

-------------Problems Reply------------

I've finally figured out the solution to this problem. It turns out that a Perforce branch mapping was done in reverse and that was the source of this problem.

Branch-foo was branched off of MAIN, which should have a branch mapping like so:

//project/MAIN/... //project/Branch-foo/...

However, the person who created the branch, reversed the mapping, thus resulting in this:

//project/Branch-foo/... //project/MAIN/...

This confused git-p4 as MAIN had the first changelists starting at #771 and Branch-foo had changelists starting at #7652, thus it couldn't find any parent in Branch-foo and crashed. Changing the branch spec to the first one listed above fixed the probblem.

Category:git Views:0 Time:2011-05-19

Related post

Copyright (C), All Rights Reserved.

processed in 0.144 (s). 11 q(s)