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--devo--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--branch, whereas new-style branch names are
	archive,category--branch--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 gitlink:git[7] suite

