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