1 git-p4.py - Perforce <-> Git converter using git-fast-import
6 git-p4 supports two main modes: Importing from Perforce to a Git repository is
7 done using "git-p4.py sync". Submitting changes from Git back to Perforce is
8 done using "git-p4.py submit".
13 The procedure is simple:
18 git-p4.py sync //path/in/your/perforce/depot
20 This will import the current head revision of the specified depot path into the
21 master branch of your git repository. You can use the --branch=mybranch option
22 to let git-p4 import from Perforce into a git branch of your choice.
24 If you want to import the entire history of a given depot path just use
26 git-p4.py sync //path/in/depot@all
28 To achieve optimal compression you may want to run 'git repack -a -d -f' after
29 a big import. This may take a while.
31 Support for Perforce integrations is still work in progress. Don't bother
32 trying it unless you want to hack on it :)
38 After an initial import you can easily synchronize your git repository with
39 newer changes from the Perforce depot by just calling
43 in your git repository. git-p4 stores the depot path of the original import in
44 the .git/config file and remembers the last imported p4 revision as a git tag
45 called p4/<changenum> .
47 It is recommended to run 'git repack -a -d -f' from time to time when using
48 incremental imports to optimally combine the individual git packs that each
49 incremental import creates through the use of git-fast-import.
54 git-p4 has EXPERIMENTAL support for submitting changes from a git repository
55 back to a Perforce depot. This requires a Perforce checkout separate to your
56 git repository. This is the basic procedure:
58 cd path/to/your/perforce/checkout
59 git-p4.py submit --git-dir=/path/to/your/git/repository
61 This will create a temporary git branch, use git-rev-list to find out which git
62 commits are in your current branch but not in the "origin" branch. You can
63 override the name of the "origin" branch by using the --origin=mybranch option.
64 The "origin" branch has to be the branch populated with git-p4's sync
67 After some preparations (which might take a while) git-p4 enters a loop where
68 it will first show a Perforce submit template and a diff of the change to
69 apply. After quitting the pager with 'q' git-p4 asks for confirmation for
70 issuing the "p4 submit" command and also gives you the option of editing the
71 submit template using "e".
73 If a submit fails you may have to "p4 resolve" and submit manually. You can
74 continue importing the remaining changes with
76 git-p4.py submit --git-dir=/path/to/your/git/repository --continue
78 After submitting you should sync your origin branch from Perforce using
79 git-p4's sync command.