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

NAME
----
git-archimport - Import a GNU 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 GNU 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.


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