git-svn(1)
==========

NAME
----
git-svn - bidirectional operation between a single Subversion branch and git

SYNOPSIS
--------
'git-svn' <command> [options] [arguments]

DESCRIPTION
-----------
git-svn is a simple conduit for changesets between a single Subversion
branch and git.

git-svn is not to be confused with git-svnimport.  The were designed
with very different goals in mind.

git-svn is designed for an individual developer who wants a
bidirectional flow of changesets between a single branch in Subversion
and an arbitrary number of branches in git.  git-svnimport is designed
for read-only operation on repositories that match a particular layout
(albeit the recommended one by SVN developers).

For importing svn, git-svnimport is potentially more powerful when
operating on repositories organized under the recommended
trunk/branch/tags structure, and should be faster, too.

git-svn mostly ignores the very limited view of branching that
Subversion has.  This allows git-svn to be much easier to use,
especially on repositories that are not organized in a manner that
git-svnimport is designed for.

COMMANDS
--------
init::
	Creates an empty git repository with additional metadata
	directories for git-svn.  The Subversion URL must be specified
	as a command-line argument.

fetch::
	Fetch unfetched revisions from the Subversion URL we are
	tracking.  refs/remotes/git-svn will be updated to the
	latest revision.

	Note: You should never attempt to modify the remotes/git-svn
	branch outside of git-svn.  Instead, create a branch from
	remotes/git-svn and work on that branch.  Use the 'commit'
	command (see below) to write git commits back to
	remotes/git-svn.

	See 'Additional Fetch Arguments' if you are interested in
	manually joining branches on commit.

commit::
	Commit specified commit or tree objects to SVN.  This relies on
	your imported fetch data being up-to-date.  This makes
	absolutely no attempts to do patching when committing to SVN, it
	simply overwrites files with those specified in the tree or
	commit.  All merging is assumed to have taken place
	independently of git-svn functions.

rebuild::
	Not a part of daily usage, but this is a useful command if
	you've just cloned a repository (using git-clone) that was
	tracked with git-svn.  Unfortunately, git-clone does not clone
	git-svn metadata and the svn working tree that git-svn uses for
	its operations.  This rebuilds the metadata so git-svn can
	resume fetch operations.  A Subversion URL may be optionally
	specified at the command-line if the directory/repository you're
	tracking has moved or changed protocols.

show-ignore::
	Recursively finds and lists the svn:ignore property on
	directories.  The output is suitable for appending to
	the $GIT_DIR/info/exclude file.

OPTIONS
-------
-r <ARG>::
--revision <ARG>::
	Only used with the 'fetch' command.

	Takes any valid -r<argument> svn would accept and passes it
	directly to svn. -r<ARG1>:<ARG2> ranges and "{" DATE "}" syntax
	is also supported.  This is passed directly to svn, see svn
	documentation for more details.

	This can allow you to make partial mirrors when running fetch.

-::
--stdin::
	Only used with the 'commit' command.

	Read a list of commits from stdin and commit them in reverse
	order.  Only the leading sha1 is read from each line, so
	git-rev-list --pretty=oneline output can be used.

--rmdir::
	Only used with the 'commit' command.

	Remove directories from the SVN tree if there are no files left
	behind.  SVN can version empty directories, and they are not
	removed by default if there are no files left in them.  git
	cannot version empty directories.  Enabling this flag will make
	the commit to SVN act like git.

	repo-config key: svn.rmdir

-e::
--edit::
	Only used with the 'commit' command.

	Edit the commit message before committing to SVN.  This is off by
	default for objects that are commits, and forced on when committing
	tree objects.

	repo-config key: svn.edit

-l<num>::
--find-copies-harder::
	Both of these are only used with the 'commit' command.

	They are both passed directly to git-diff-tree see
	git-diff-tree(1) for more information.

	repo-config key: svn.l
	repo-config key: svn.findcopiesharder

-A<filename>::
--authors-file=<filename>::

	Syntax is compatible with the files used by git-svnimport and
	git-cvsimport:

------------------------------------------------------------------------
loginname = Joe User <user@example.com>
------------------------------------------------------------------------

	If this option is specified and git-svn encounters an SVN
	committer name that does not exist in the authors-file, git-svn
	will abort operation. The user will then have to add the
	appropriate entry.  Re-running the previous git-svn command
	after the authors-file is modified should continue operation.

	repo-config key: svn.authors-file

ADVANCED OPTIONS
----------------
-b<refname>::
--branch <refname>::
	Used with 'fetch' or 'commit'.

	This can be used to join arbitrary git branches to remotes/git-svn
	on new commits where the tree object is equivalent.

	When used with different GIT_SVN_ID values, tags and branches in
	SVN can be tracked this way, as can some merges where the heads
	end up having completely equivalent content.  This can even be
	used to track branches across multiple SVN _repositories_.

	This option may be specified multiple times, once for each
	branch.

	repo-config key: svn.branch

-i<GIT_SVN_ID>::
--id <GIT_SVN_ID>::
	This sets GIT_SVN_ID (instead of using the environment).  See
	the section on "Tracking Multiple Repositories or Branches" for
	more information on using GIT_SVN_ID.

COMPATIBILITY OPTIONS
---------------------
--upgrade::
	Only used with the 'rebuild' command.

	Run this if you used an old version of git-svn that used
	"git-svn-HEAD" instead of "remotes/git-svn" as the branch
	for tracking the remote.

--no-ignore-externals::
	Only used with the 'fetch' and 'rebuild' command.

	By default, git-svn passes --ignore-externals to svn to avoid
	fetching svn:external trees into git.  Pass this flag to enable
	externals tracking directly via git.

	Versions of svn that do not support --ignore-externals are
	automatically detected and this flag will be automatically
	enabled for them.

	Otherwise, do not enable this flag unless you know what you're
	doing.

	repo-config key: svn.noignoreexternals

Basic Examples
~~~~~~~~~~~~~~

Tracking and contributing to an Subversion managed-project:

------------------------------------------------------------------------
# Initialize a tree (like git init-db):
	git-svn init http://svn.foo.org/project/trunk
# Fetch remote revisions:
	git-svn fetch
# Create your own branch to hack on:
	git checkout -b my-branch remotes/git-svn
# Commit only the git commits you want to SVN:
	git-svn commit <tree-ish> [<tree-ish_2> ...]
# Commit all the git commits from my-branch that don't exist in SVN:
	git-svn commit remotes/git-svn..my-branch
# Something is committed to SVN, pull the latest into your branch:
	git-svn fetch && git pull . remotes/git-svn
# Append svn:ignore settings to the default git exclude file:
	git-svn show-ignore >> .git/info/exclude
------------------------------------------------------------------------

DESIGN PHILOSOPHY
-----------------
Merge tracking in Subversion is lacking and doing branched development
with Subversion is cumbersome as a result.  git-svn completely forgoes
any automated merge/branch tracking on the Subversion side and leaves it
entirely up to the user on the git side.  It's simply not worth it to do
a useful translation when the the original signal is weak.

TRACKING MULTIPLE REPOSITORIES OR BRANCHES
------------------------------------------
This is for advanced users, most users should ignore this section.

Because git-svn does not care about relationships between different
branches or directories in a Subversion repository, git-svn has a simple
hack to allow it to track an arbitrary number of related _or_ unrelated
SVN repositories via one git repository.  Simply set the GIT_SVN_ID
environment variable to a name other other than "git-svn" (the default)
and git-svn will ignore the contents of the $GIT_DIR/git-svn directory
and instead do all of its work in $GIT_DIR/$GIT_SVN_ID for that
invocation.  The interface branch will be remotes/$GIT_SVN_ID, instead of
remotes/git-svn.  Any remotes/$GIT_SVN_ID branch should never be modified
by the user outside of git-svn commands.

ADDITIONAL FETCH ARGUMENTS
--------------------------
This is for advanced users, most users should ignore this section.

Unfetched SVN revisions may be imported as children of existing commits
by specifying additional arguments to 'fetch'.  Additional parents may
optionally be specified in the form of sha1 hex sums at the
command-line.  Unfetched SVN revisions may also be tied to particular
git commits with the following syntax:

	svn_revision_number=git_commit_sha1

This allows you to tie unfetched SVN revision 375 to your current HEAD::

	`git-svn fetch 375=$(git-rev-parse HEAD)`

Advanced Example: Tracking a Reorganized Repository
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
If you're tracking a directory that has moved, or otherwise been
branched or tagged off of another directory in the repository and you
care about the full history of the project, then you can read this
section.

This is how Yann Dirson tracked the trunk of the ufoai directory when
the /trunk directory of his repository was moved to /ufoai/trunk and
he needed to continue tracking /ufoai/trunk where /trunk left off.

------------------------------------------------------------------------
	# This log message shows when the repository was reorganized:
	r166 | ydirson | 2006-03-02 01:36:55 +0100 (Thu, 02 Mar 2006) | 1 line
	Changed paths:
	   D /trunk
	   A /ufoai/trunk (from /trunk:165)

	# First we start tracking the old revisions:
	GIT_SVN_ID=git-oldsvn git-svn init \
			https://svn.sourceforge.net/svnroot/ufoai/trunk
	GIT_SVN_ID=git-oldsvn git-svn fetch -r1:165

	# And now, we continue tracking the new revisions:
	GIT_SVN_ID=git-newsvn git-svn init \
	      https://svn.sourceforge.net/svnroot/ufoai/ufoai/trunk
	GIT_SVN_ID=git-newsvn git-svn fetch \
	      166=`git-rev-parse refs/remotes/git-oldsvn`
------------------------------------------------------------------------

BUGS
----
If somebody commits a conflicting changeset to SVN at a bad moment
(right before you commit) causing a conflict and your commit to fail,
your svn working tree ($GIT_DIR/git-svn/tree) may be dirtied.  The
easiest thing to do is probably just to rm -rf $GIT_DIR/git-svn/tree and
run 'rebuild'.

We ignore all SVN properties except svn:executable.  Too difficult to
map them since we rely heavily on git write-tree being _exactly_ the
same on both the SVN and git working trees and I prefer not to clutter
working trees with metadata files.

svn:keywords can't be ignored in Subversion (at least I don't know of
a way to ignore them).

Renamed and copied directories are not detected by git and hence not
tracked when committing to SVN.  I do not plan on adding support for
this as it's quite difficult and time-consuming to get working for all
the possible corner cases (git doesn't do it, either).  Renamed and
copied files are fully supported if they're similar enough for git to
detect them.

Author
------
Written by Eric Wong <normalperson@yhbt.net>.

Documentation
-------------
Written by Eric Wong <normalperson@yhbt.net>.
