git-archimport(1)
=================

NAME
----
git-archimport - Import an Arch repository into git


SYNOPSIS
--------
[verse]
'git archimport' [-h] [-v] [-o] [-a] [-f] [-T] [-D depth] [-t tempdir]
               <archive/branch>[:<git-branch>] ...

DESCRIPTION
-----------
Imports a project from one or more Arch repositories. It will follow branches
and repositories within the namespaces defined by the <archive/branch>
parameters supplied. If it cannot find the remote branch a merge comes from
it will just import it as a regular commit. If it can find it, it will mark it
as a merge whenever possible (see discussion below).

The script expects you to provide the key roots where it can start the import
from an 'initial import' or 'tag' type of Arch commit. It will follow and
import new branches within the provided roots.

It expects to be dealing with one project only. If it sees
branches that have different roots, it will refuse to run. In that case,
edit your <archive/branch> parameters to define clearly the scope of the
import.

'git archimport' uses `tla` extensively in the background to access the
Arch repository.
Make sure you have a recent version of `tla` available in the path. `tla` must
know about the repositories you pass to 'git archimport'.

For the initial import, 'git archimport' expects to find itself in an empty
directory. To follow the development of a project that uses Arch, rerun
'git archimport' with the same parameters as the initial import to perform
incremental imports.

While 'git archimport' will try to create sensible branch names for the
archives that it imports, it is also possible to specify git branch names
manually.  To do so, write a git branch name after each <archive/branch>
parameter, separated by a colon.  This way, you can shorten the Arch
branch names and convert Arch jargon to git jargon, for example mapping a
"PROJECT{litdd}devo{litdd}VERSION" branch to "master".

Associating multiple Arch branches to one git branch is possible; the
result will make the most sense only if no commits are made to the first
branch, after the second branch is created.  Still, this is useful to
convert Arch repositories that had been rotated periodically.


MERGES
------
Patch merge data from Arch is used to mark merges in git as well. git
does not care much about tracking patches, and only considers a merge when a
branch incorporates all the commits since the point they forked. The end result
is that git will have a good idea of how far branches have diverged. So the
import process does lose some patch-trading metadata.

Fortunately, when you try and merge branches imported from Arch,
git will find a good merge base, and it has a good chance of identifying
patches that have been traded out-of-sequence between the branches.

OPTIONS
-------

-h::
	Display usage.

-v::
	Verbose output.

-T::
	Many tags. Will create a tag for every commit, reflecting the commit
	name in the Arch repository.

-f::
	Use the fast patchset import strategy.  This can be significantly
	faster for large trees, but cannot handle directory renames or
	permissions changes.  The default strategy is slow and safe.

-o::
	Use this for compatibility with old-style branch names used by
	earlier versions of 'git archimport'.  Old-style branch names
	were category{litdd}branch, whereas new-style branch names are
	archive,category{litdd}branch{litdd}version.  In both cases, names given
	on the command-line will override the automatically-generated
	ones.

-D <depth>::
	Follow merge ancestry and attempt to import trees that have been
	merged from.  Specify a depth greater than 1 if patch logs have been
	pruned.

-a::
	Attempt to auto-register archives at http://mirrors.sourcecontrol.net
	This is particularly useful with the -D option.

-t <tmpdir>::
	Override the default tempdir.


<archive/branch>::
	Archive/branch identifier in a format that `tla log` understands.


Author
------
Written by Martin Langhoff <martin@catalyst.net.nz>.

Documentation
--------------
Documentation by Junio C Hamano, Martin Langhoff and the git-list <git@vger.kernel.org>.

GIT
---
Part of the linkgit:git[1] suite
