man svn-arch-mirror (Commandes) - one-way mirror from a Subversion tree to Arch
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 CW$HOME directory. A temporary CW$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 (categorybranch--version)
- Run from inside a designated tree-root, it will create and import a new (categorybranch--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 (categorybranch--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 (categorybranch(--version(--revision)))
- Constructs a project tree for a given categorybranch(--version(--revision))
ADVANCED USAGE
(useful for tracking large or multiple sub-projects):
- init-branch (FROM-categorybranch) (TO-categorybranch--version)
- Run from inside a designated tree-root, it will create and import a new (TO-categorybranch--version) assuming (FROM-categorybranch) 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 categorybranch--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 syncTo 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.