git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Yet another git perforce integration

From
Simon Hausmann <simon@lst.de>
Date
May 8, 2007, 08:23 UTC
Message-ID
<200705081023.38810.simon@lst.de>
Hi,

Integrations of Git with Perforce seem to be fashion these days, so I'd like to chip in and announce another one :)

I've written a Python script called git-p4 that allows (incremental) imports from Perforce as well as submitting changes back from git into a Perforce depot.

It is currently part of the fast-export repository that Chris Lee started at
        http://repo.or.cz/w/fast-export.git

I've been using it now for about a month for my everyday work (which requires Perforce), so it seems to work reasonably stable at least in my setup :)

The usage is pretty simple:
        git-p4 clone //depot/path/my/project
Syncing:
        git-p4 sync
or just
        git-p4 rebase

to sync and automatically rebase into the current branch (much like git-svn rebase :)

        git-p4 submit
is used to submit changes back into Perforce (use at your own risk! :)

The import itself uses git-fast-import, so it's very fast. There is also no need to have the imported Perforce projects in the Perforce client view as it just uses "p4 changes //depot/path" and "p4 print //depot/path/file#revision", which I find very convenient and still fast enough for use (since of course only changed files are printed).

It also doesn't require any additional meta-data. Instead every import commit has a line added to the log message that contains the Perforce path the changeset comes from as well as the change number. git-p4 sync/rebase "parses" this on the last commit in the "p4" git branch to find out where to continue importing for incremental imports.

What's still missing is a bit of cleanup. For example I'd like to put the import branch into refs/remotes instead of refs/heads, but I've had some problems with fast-import when trying that. Also the support for Perforce branches isn't quite working yet. I'd ideally like to for example map a structure like

//depot/project/main //depot/project/branch1 //depot/project/branch2

into

remotes/p4/main remotes/p4/branch1 remotes/p4/branch2

in git and still support incremental commits. But that isn't working yet ;(

Also I've never tried it on Windows and I expect problems as the script uses pipes, calls "patch", etc.

Nevertheless I hope that this tool may be interesting for others as well. Maybe there's a possibility of including it in git/contrib/fast-import?

Simon
Next: Alex Riesen
Message 1 of 4 in “Yet another git perforce integration”
  1. Simon HausmannMay 8, 2007
  2. Alex RiesenMay 8, 2007
  3. Simon HausmannMay 8, 2007
  4. Alex RiesenMay 8, 2007

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.