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. It is not to be confused with gitlink:git-svnimport[1].
They 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 '<<fetch-args,Additional Fetch Arguments>>' if you are interested in
manually joining branches on commit.

'dcommit'::
	Commit all diffs from the current HEAD directly to the SVN
	repository, and then rebase or reset (depending on whether or
	not there is a diff between SVN and HEAD).  It is recommended
	that you run git-svn fetch and rebase (not pull) your commits
	against the latest changes in the SVN repository.
	This is advantageous over 'commit' (below) because it produces
	cleaner, more linear history.

'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 gitlink:git-clone[1]) 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
gitlink:git-diff-tree[1] for more information.

[verse]
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

-m::
--merge::
-s<strategy>::
--strategy=<strategy>::

These are only used with the 'dcommit' command.

Passed directly to git-rebase when using 'dcommit' if a
'git-reset' cannot be used (see dcommit).

-n::
--dry-run::

This is only used with the 'dcommit' command.

Print out the series of git arguments that would show
which diffs would be committed to SVN.

--

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-repos,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

--ignore-nodate::
Only used with the 'fetch' command.

By default git-svn will crash if it tries to import a revision
from SVN which has '(no date)' listed as the date of the revision.
This is repository corruption on SVN's part, plain and simple.
But sometimes you really need those revisions anyway.

If supplied git-svn will convert '(no date)' entries to the UNIX
epoch (midnight on Jan. 1, 1970).  Yes, that's probably very wrong.
SVN was very wrong.

--

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, rebase the latest into your branch:
	git-svn fetch && git rebase remotes/git-svn
# Append svn:ignore settings to the default git exclude file:
	git-svn show-ignore >> .git/info/exclude
------------------------------------------------------------------------

REBASE VS. PULL
---------------

Originally, git-svn recommended that the remotes/git-svn branch be
pulled from.  This is because the author favored 'git-svn commit B'
to commit a single head rather than the 'git-svn commit A..B' notation
to commit multiple commits.

If you use 'git-svn commit A..B' to commit several diffs and you do not
have the latest remotes/git-svn merged into my-branch, you should use
'git rebase' to update your work branch instead of 'git pull'.  'pull'
can cause non-linear history to be flattened when committing into SVN,
which can lead to merge commits reversing previous commits in SVN.

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 original signal is weak.

[[tracking-multiple-repos]]
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.

[[fetch-args]]
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.

SEE ALSO
--------
gitlink:git-rebase[1]

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

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