If you use perforce remotely and desire to have the awesome speed of git for tracking diffs, here is the solution: http://kb.perforce.com/article/1417/git-p4
However, I've noticed the following:
And that is my question. Is there a good explanation of how git-p4 uses the remote repositories? And an overall explanation of hot git-p4 works?
git-p4 is not for the faint-at-heart. I'm learning that you really need to understand git well in order to use it well.
git-p4 submit begins by identifying new local git commits - those without [git-p4: ...] . Using the Perforce client local workspace, it syncs down the Perforce files, and with git apply applies the patches gotten from git format-patch on the unsubmitted git commits before calling p4 submit .
Today it is popular among professional teams of all scales, from indie developers to large enterprises, as well as critical open source projects such as Android and the Linux kernel. Yet Perforce, a commercial centralized SCM system, still resonates with game developers and other subsets of software developers.
p4 sync brings the client workspace into sync with the depot by copying files matching its file pattern arguments from the depot to the client workspace. When no file patterns are specified on the command line, p4 sync copies a particular depot file if it meets all three criteria: Visible through the client view.
Installing git p4 If the system complains that git p4 is not installed, download git-p4.py and put it in a folder in your PATH , for example ~/bin (obviously you will need Python to be installed too for it to work). Then run git p4 again and you should get no errors. The tool is installed.
There is some more information in Documentation/git-p4.txt
in the git project source code.
git-p4 maintains a refs/remotes/p4 branch to mirror the remote Perforce server.
By default git-p4 clone
and git-p4 sync
update this remote and you rebase your master against it.
git-p4 submit
requires configuring an additional local directory as the Perforce client root for use by p4 submit
.
git-p4 sync/clone
will record each Perforce changelist number in the corresponding git commit message. For example:
[git-p4: depot-paths = "//depot/test/": change = 51]
Using these changelist notations, git-p4 sync
acquires changelists on the Perforce server not yet committed to git, adding changelist notations to each new git commit message.
git-p4 submit
begins by identifying new local git commits - those without [git-p4: ...]
.
Using the Perforce client local workspace, it syncs down the Perforce files, and with git apply
applies the patches gotten from git format-patch
on the unsubmitted git commits before calling p4 submit
.
Then git-p4 submit
calls git-p4 sync
to update the ref/remotes/p4 branch against the just updated Perforce remote.
Finally git-p4 submit
will call git rebase
on the master branch against the updated remote. This results in the same git tree which was submitted, but with edited commit messages containing the [git-p4...]
changelist notations.
How does one keep a few files modified in git without ever sending them to p4?
git-p4 submit
will submit all branch commits. Use the usual git tools to organize changes into and out of the branch you choose to submit to Perforce.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With