git-p4 - Perforce <-> Git converter using git-fast-import Usage ===== git-p4 supports two main modes: Importing from Perforce to a Git repository is done using "git-p4 sync". Submitting changes from Git back to Perforce is done using "git-p4 submit". Importing ========= The procedure is simple: mkdir repo-git cd repo-git git init git-p4 sync //path/in/your/perforce/depot This will import the current head revision of the specified depot path into a "p4" branch of your git repository. You can use the --branch=mybranch option to use a different branch. If you want to import the entire history of a given depot path just use git-p4 sync //path/in/depot@all To achieve optimal compression you may want to run 'git repack -a -d -f' after a big import. This may take a while. Support for Perforce integrations is still work in progress. Don't bother trying it unless you want to hack on it :) Incremental Imports =================== After an initial import you can easily synchronize your git repository with newer changes from the Perforce depot by just calling git-p4 sync in your git repository. It is recommended to run 'git repack -a -d -f' from time to time when using incremental imports to optimally combine the individual git packs that each incremental import creates through the use of git-fast-import. Submitting ========== git-p4 has support for submitting changes from a git repository back to the Perforce depot. This requires a Perforce checkout separate to your git repository. To submit all changes that are in the current git branch but not in the "p4" branch (or "origin" if "p4" doesn't exist) simply call git-p4 submit in your git repository. If you want to submit changes in a specific branch that is not your current git branch you can also pass that as an argument: git-p4 submit mytopicbranch You can override the reference branch with the --origin=mysourcebranch option. If a submit fails you may have to "p4 resolve" and submit manually. You can continue importing the remaining changes with git-p4 submit --continue After submitting you should sync your perforce import branch ("p4" or "origin") from Perforce using git-p4's sync command.