1 <?xml version="1.0" encoding="UTF-8"?>
\r
2 <!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd">
\r
4 <article lang="en" id="git-vcs-*(1)">
\r
6 <title>git-vcs-*(1)</title>
\r
8 <primary>git-vcs-*(1)</primary>
\r
11 <simplesect id="_name">
\r
13 <simpara>git-vcs-* - Helper programs for interoperation with foreign systems</simpara>
\r
15 <simplesect id="_synopsis">
\r
16 <title>SYNOPSIS</title>
\r
17 <simpara><emphasis>git vcs-<system></emphasis> <command> [options] [arguments]</simpara>
\r
19 <simplesect id="_description">
\r
20 <title>DESCRIPTION</title>
\r
21 <simpara>These programs are normally not used directly by end users, but are
\r
22 invoked by various git programs that interact with remote repositories
\r
23 when the repository they would operate on is part of a foreign
\r
25 <simpara>Each <emphasis>git vcs-<system></emphasis> is a helper for interoperating with a
\r
26 particular version control system. Different helpers have different
\r
27 capabilities (limited both be the particular helper and by the
\r
28 capabilities of the system they connect to), and they report what
\r
29 capabilities they support.</simpara>
\r
30 <simpara>In general, these programs interact with a portion of the refs
\r
31 namespace that isn’t used by the rest of git. The configuration will
\r
32 then (generally) map these refs into the remotes namespace. This
\r
33 allows the importer to do whatever it wants with its refs without
\r
34 affecting the state visible to normal git programs.</simpara>
\r
36 <simplesect id="_commands">
\r
37 <title>COMMANDS</title>
\r
41 <emphasis>capabilities</emphasis>
\r
45 Prints the capabilities of the helper, one per line. These are:
\r
50 import: the basic import command
\r
55 marks: import should be done with a saved marks file
\r
60 find-new-branches: detect new branches
\r
65 export: the general export command
\r
70 fork: create a new branch and export to it
\r
75 anonymous-fork: make commits on a branch without an inherent name
\r
80 merge: merge branches (of whatever type the system supports)
\r
82 <literallayout class="monospaced">If the helper doesn't support "merge", the default for pull is
\r
83 to rebase instead of merging.</literallayout>
\r
90 <emphasis>list</emphasis>
\r
94 Takes the remote name, and outputs the names of refs. These
\r
95 may be followed, after a single space, by "changed" or
\r
96 "unchanged", indicating whether the foreign repository has
\r
97 changed from the state in the ref. If the helper doesn’t know,
\r
98 it doesn’t have to provide a value. (In particular, it
\r
99 shouldn’t do expensive operations, such as importing the
\r
100 content, to see whether it matches.)
\r
106 <emphasis>import</emphasis>
\r
110 Takes the remote name and a list of names of refs, and imports
\r
111 whatever it describes, by outputting it in git-fast-import
\r
118 <emphasis>export</emphasis>
\r
122 Sends the branch to the foreign system and reimports it in
\r
123 fast-import format.
\r
125 <literallayout class="monospaced">Reads a list of commits from stdin, where each commit has no
\r
126 parents which were neither produced by an earlier import nor
\r
127 appearing earlier in the list, where some commit has the old
\r
128 value of the branch as a parent, and where all commits listed
\r
129 are ancestors of the last one. Furthermore:</literallayout>
\r
133 if the system doesn’t support merges, each of these commits
\r
134 has only a single parent;
\r
139 if the system doesn’t support anonymous branches, the first
\r
140 commit has the old value of the branch as a parent (if the
\r
141 branch already had a value), and all parents are either the
\r
142 commit listed immediately before or produced by an earlier
\r
148 if the system doesn’t support many-way merges, each commit
\r
149 has at most two parents.
\r
151 <literallayout class="monospaced">export produces output in fast-import format giving the
\r
152 content after a round-trip through the foreign system. This
\r
153 also contains extra headers to report the mapping of original
\r
154 git commits to reimported git commits (to facilitate rewriting
\r
155 local branches to use the history-as-reimported instead of the
\r
156 git-only version).</literallayout>
\r
157 <literallayout class="monospaced">export reports how much it managed to export by producing
\r
158 commits in the fast-import stream that replace the listed
\r
159 items that were successfully exported.</literallayout>
\r