summaryrefslogtreecommitdiff
path: root/contrib/fast-import/git-p4.txt
blob: 8bf0805c74fb46b4ab26da3d61842951111df7d6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
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 EXPERIMENTAL support for submitting changes from a git repository
back to a Perforce depot. This requires a Perforce checkout separate to your
git repository. All it should take is calling

    git-p4 submit

in your git repository. This will attempt to locate the perforce checkout
corresponding to your imported depot path. By default the changes between your
current branch and the "p4" branch will be submitted. If there is no "p4"
branch the "origin" branch will be used as reference instead. You can override
this with the --origin=mysourcebranch option. The "origin" branch has to be the
branch populated with git-p4's sync operation.

After some preparations (which might take a while) git-p4 enters a loop where
it will first show a Perforce submit template and a diff of the change to
apply in the editor. After saving and exiting the editor you will be asked whether
you really want to submit the change or not.

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.