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. By default the "p4" branch is updated. 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 49Updating 50======== 51 52A common working pattern is to fetch the latest changes from the Perforce depot 53and merge them with local uncommitted changes. The recommended way is to use 54git's rebase mechanism to preserve linear history. git-p4 provides a convenient 55 56 git-p4 rebase 57 58command that calls git-p4 sync followed by git rebase to rebase the current 59working branch. 60 61Submitting 62========== 63 64git-p4 has support for submitting changes from a git repository back to the 65Perforce depot. This requires a Perforce checkout separate to your git 66repository. To submit all changes that are in the current git branch but not in 67the "p4" branch (or "origin" if "p4" doesn't exist) simply call 68 69 git-p4 submit 70 71in your git repository. If you want to submit changes in a specific branch that 72is not your current git branch you can also pass that as an argument: 73 74 git-p4 submit mytopicbranch 75 76You can override the reference branch with the --origin=mysourcebranch option. 77 78If a submit fails you may have to "p4 resolve" and submit manually. You can 79continue importing the remaining changes with 80 81 git-p4 submit --continue 82 83After submitting you should sync your perforce import branch ("p4" or "origin") 84from Perforce using git-p4's sync command.