Code

Added git-p4 rebase convenience
[git.git] / contrib / fast-import / git-p4.txt
1 git-p4 - Perforce <-> Git converter using git-fast-import
3 Usage
4 =====
6 git-p4 supports two main modes: Importing from Perforce to a Git repository is
7 done using "git-p4 sync". Submitting changes from Git back to Perforce is
8 done using "git-p4 submit".
10 Importing
11 =========
13 The procedure is simple:
15   mkdir repo-git
16   cd repo-git
17   git init
18   git-p4 sync //path/in/your/perforce/depot
20 This 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
22 to use a different branch.
24 If you want to import the entire history of a given depot path just use
26   git-p4 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 :)
35 Incremental Imports
36 ===================
38 After an initial import you can easily synchronize your git repository with
39 newer changes from the Perforce depot by just calling
41   git-p4 sync
43 in your git repository. By default the "p4" branch is updated.
45 It is recommended to run 'git repack -a -d -f' from time to time when using
46 incremental imports to optimally combine the individual git packs that each
47 incremental import creates through the use of git-fast-import.
49 Updating
50 ========
52 A common working pattern is to fetch the latest changes from the Perforce depot
53 and merge them with local uncommitted changes. The recommended way is to use
54 git's rebase mechanism to preserve linear history. git-p4 provides a convenient
56   git-p4 rebase
58 command that calls git-p4 sync followed by git rebase to rebase the current
59 working branch.
61 Submitting
62 ==========
64 git-p4 has support for submitting changes from a git repository back to the
65 Perforce depot. This requires a Perforce checkout separate to your git
66 repository. To submit all changes that are in the current git branch but not in
67 the "p4" branch (or "origin" if "p4" doesn't exist) simply call
69     git-p4 submit
71 in your git repository. If you want to submit changes in a specific branch that
72 is not your current git branch you can also pass that as an argument:
74     git-p4 submit mytopicbranch
76 You can override the reference branch with the --origin=mysourcebranch option.
78 If a submit fails you may have to "p4 resolve" and submit manually. You can
79 continue importing the remaining changes with
81   git-p4 submit --continue
83 After submitting you should sync your perforce import branch ("p4" or "origin")
84 from Perforce using git-p4's sync command.