1git-p4 - Perforce <-> Git converter using git-fast-import 2 3Usage 4===== 5 6git-p4 supports two main modes: Importing from Perforce to a Git repository is 7done using "git-p4 sync". Submitting changes from Git back to Perforce is 8done using "git-p4 submit". 9 10Importing 11========= 12 13The procedure is simple: 14 15 mkdir repo-git 16 cd repo-git 17 git init 18 git-p4 sync //path/in/your/perforce/depot 19 20This will import the current head revision of the specified depot path into a 21"p4" branch of your git repository. You can use the --branch=mybranch option 22to use a different branch. 23 24If you want to import the entire history of a given depot path just use 25 26 git-p4 sync //path/in/depot@all 27 28To achieve optimal compression you may want to run 'git repack -a -d -f' after 29a big import. This may take a while. 30 31Support for Perforce integrations is still work in progress. Don't bother 32trying it unless you want to hack on it :) 33 34 35Incremental Imports 36=================== 37 38After an initial import you can easily synchronize your git repository with 39newer changes from the Perforce depot by just calling 40 41 git-p4 sync 42 43in your git repository. 44 45It is recommended to run 'git repack -a -d -f' from time to time when using 46incremental imports to optimally combine the individual git packs that each 47incremental import creates through the use of git-fast-import. 48 49Submitting 50========== 51 52git-p4 has EXPERIMENTAL support for submitting changes from a git repository 53back to a Perforce depot. This requires a Perforce checkout separate to your 54git repository. All it should take is calling 55 56 git-p4 submit 57 58in your git repository. This will attempt to locate the perforce checkout 59corresponding to your imported depot path. By default the changes between your 60current branch and the "p4" branch will be submitted. If there is no "p4" 61branch the "origin" branch will be used as reference instead. You can override 62this with the --origin=mysourcebranch option. The "origin" branch has to be the 63branch populated with git-p4's sync operation. 64 65After some preparations (which might take a while) git-p4 enters a loop where 66it will first show a Perforce submit template and a diff of the change to 67apply in the editor. After saving and exiting the editor you will be asked whether 68you really want to submit the change or not. 69 70If a submit fails you may have to "p4 resolve" and submit manually. You can 71continue importing the remaining changes with 72 73 git-p4 submit --continue 74 75After submitting you should sync your perforce import branch ("p4" or "origin") 76from Perforce using git-p4's sync command. 77