svn-arch-mirror

Langue: en

Version: 2006-05-09 (debian - 07/07/09)

Section: 1 (Commandes utilisateur)

NAME

svn-arch-mirror - one-way mirror from a Subversion tree to Arch

SYNOPSIS

svn-arch-mirror [options] <command> [arguments]

DESCRIPTION

svn-arch-mirror makes it possible to track upstream Subversion repositories and replicate full project history from Subversion to Arch. This was designed for Arch users who want to track active projects which use Subversion, and for repository maintainers who wish to migrate from Subversion to Arch.

COMMON OPTIONS

The following options are common to all commands:
-h, --help
Show this help message
-c, --arch-client
Specify an Arch client, either 'tla' (default) or 'baz'
-A, --archive
Override `tla my-default-archive'
-d, --dir
Switch to target directory before executing
-l, --revision-limit
Stop tracking at this SVN revision number. This can also be specified with the -r option as -r<revision>:<revision-limit>
--no-datefudge
Don't use the datefudge command to mirror and preserve changeset dates. Use this if you don't have datefudge installed on your machine.
--no-my-id-switch
Disable switching the user id. The Creator: field of a commit log will use the normal output of my-id, and not reflect the original svn committer's name.
--no-tmp-home
Disable using a temporary $HOME directory. A temporary $HOME directory is used by svn-arch-mirror to prevent the user's main tla/baz my-id from being clobbered. Use this to enable svn-arch-mirror to work with signed archives.
--no-lint
Don't run tla tree-lint or baz lint between commits. This is needed in cases where the tree you are tracking has symlinks pointing to non-existent files.
--sign
An alias for --no-my-id-switch --no-tmp-home

COMMON USAGE

init (category---branch--version)
Run from inside a designated tree-root, it will create and import a new (category---branch--version) from the beginning, preserving Subversion changes as Arch changesets.

You may manually do a `tla init-tree' and change your tagging method before running this, and not specify a (category---branch--revision).

-r, --revision
Start tracking a Subversion tree at this revision. Takes a Subversion revision number.
--import-only
Don't automatically run 'sync' after the initial import when a tree is initialized
sync
Run from inside a double-initialized svn/tla tree. It will run `svn up' on all new revisions and `tla commit' for each one that hasn't been commited.
get (category---branch(--version(--revision)))
Constructs a project tree for a given category---branch(--version(--revision))

ADVANCED USAGE

(useful for tracking large or multiple sub-projects):
init-branch (FROM-category---branch) (TO-category---branch--version)
Run from inside a designated tree-root, it will create and import a new (TO-category---branch--version) assuming (FROM-category---branch) is tracked using this tool. Since Subversion lacks advanced merge-tracking, svn-arch-mirror is unable to track merges (merges are still recorded, but they're not managed in the history-sensitive manner tracked by Arch).
-r, --revision
Override auto-detection of branch ancestor and tag from this Arch revision instead. Takes an Arch category---branch--version.
find-nested
Like sync-nested, but only shows you the location of the nested-trees and does not update them.
--config
Print an Arch multi-tree config of the current directory structure to stdout.
sync-nested
Same as sync, but it will recursively seek out nested trees, making it ideal for tracking an entire Subversion repository as opposed to one sub-project. This will not update the current tree if you are in one.
-1, --one-repo
If sync-nested is being run in a directory that contains working trees from only one repository, and itself is a Subversion working copy (usually the top-level root of the repository), then avoid extra network traffic if no changes are detected.

EXAMPLES

To start tracking a new working directory inside a repo:
   svn co <URL> directory
   cd directory
   svn-arch-mirror init <category>--<branch>--<version>
 
 

Then, to keep a tree up-to-date, run this inside a tree-root (you could make this a cronjob):

   svn-arch-mirror sync
 
 

To mirror a directory that has been renamed (copied and deleted in SVN) at revision 400:

   svn co <OLD_URL> directory1 -r399
   cd directory1
   svn-arch-mirror init -l 399 <cat>--<b>--<version1>
   cd ..
   svn co <NEW_URL> directory2 -r400
   cd directory2
   svn-arch-mirror init -r 400 --ids-from ../directory1 <cat>--<b>--<version2>
 
 

* In the future, I hope to automate this process

SEE ALSO

svn help, tla help, baz help

BUGS AND LIMITATIONS

Autodetection of branch handling is imperfect due to fundamental differences in the repository models.

Subversion repositories that deviate from the structure recommended by the Subversion authors may be difficult to track.

Tracking of merges and merge history is limited because Subversion has limited support for this.

Files and directories copied within a project tree don't get history tracked. This is because Arch treats copied files as new files, whereas Subversion has no distinction between branching and copying.

The design is tended towards keeping individual working trees (trunks/tags/branches) mirrored in Arch, keeping an entire repository in Arch is possible (what sync-nested is for, but the individual working trees must be manually initialized.)

AUTHOR

Copyright (C) 2004-2005 Eric Wong <eric@petta-tech.com>

This is free software; see the GNU General Public Licence version 2 (or later) for copying conditions. There is NO warranty.