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 Subversion and git.
It is not to be confused with gitlink:git-svnimport[1], which is
read-only and geared towards tracking multiple branches.

git-svn was originally 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.  Since its inception,
git-svn has gained the ability to track multiple branches in a manner
similar to git-svnimport; but it cannot (yet) automatically detect new
branches and tags like git-svnimport does.

git-svn is especially useful when it comes to tracking repositories
not organized in the way Subversion developers recommend (trunk,
branches, tags directories).

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.  Optionally, the target directory
	to operate on can be specified as a second argument.  Normally
	this command initializes the current directory.

'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 'dcommit'
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 each diff from a specified head directly to the SVN
	repository, and then rebase or reset (depending on whether or
	not there is a diff between SVN and head).  This will create
	a revision in SVN for each commit in git.
	It is recommended that you run git-svn fetch and rebase (not
	pull or merge) your commits against the latest changes in the
	SVN repository.
	An optional command-line argument may be specified as an
	alternative to HEAD.
	This is advantageous over 'set-tree' (below) because it produces
	cleaner, more linear history.

'log'::
	This should make it easy to look up svn log messages when svn
	users refer to -r/--revision numbers.

	The following features from `svn log' are supported:

	--revision=<n>[:<n>] - is supported, non-numeric args are not:
	                       HEAD, NEXT, BASE, PREV, etc ...
	-v/--verbose         - it's not completely compatible with
	                       the --verbose output in svn log, but
			       reasonably close.
	--limit=<n>          - is NOT the same as --max-count,
	                       doesn't count merged/excluded commits
	--incremental        - supported

	New features:

	--show-commit        - shows the git commit sha1, as well
	--oneline            - our version of --pretty=oneline

	Any other arguments are passed directly to `git log'

'set-tree'::
	You should consider using 'dcommit' instead of this command.
	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.

'commit-diff'::
	Commits the diff of two tree-ish arguments from the
	command-line.  This command is intended for interoperability with
	git-svnimport and does not rely on being inside an git-svn
	init-ed repository.  This command takes three arguments, (a) the
	original tree to diff against, (b) the new tree result, (c) the
	URL of the target Subversion repository.  The final argument
	(URL) may be omitted if you are working from a git-svn-aware
	repository (that has been init-ed with git-svn).
	The -r<revision> option is required for this.

'graft-branches'::
	This command attempts to detect merges/branches from already
	imported history.  Techniques used currently include regexes,
	file copies, and tree-matches).  This command generates (or
	modifies) the $GIT_DIR/info/grafts file.  This command is
	considered experimental, and inherently flawed because
	merge-tracking in SVN is inherently flawed and inconsistent
	across different repositories.

'multi-init'::
	This command supports git-svnimport-like command-line syntax for
	importing repositories that are laid out as recommended by the
	SVN folks.  This is a bit more tolerant than the git-svnimport
	command-line syntax and doesn't require the user to figure out
	where the repository URL ends and where the repository path
	begins.

-T<trunk_subdir>::
--trunk=<trunk_subdir>::
-t<tags_subdir>::
--tags=<tags_subdir>::
-b<branches_subdir>::
--branches=<branches_subdir>::
	These are the command-line options for multi-init.  Each of
	these flags can point to a relative repository path
	(--tags=project/tags') or a full url
	(--tags=https://foo.org/project/tags)

--prefix=<prefix>
	This allows one to specify a prefix which is prepended to the
	names of remotes.  The prefix does not automatically include a
	trailing slash, so be sure you include one in the argument if
	that is what you want.  This is useful if you wish to track
	multiple projects that share a common repository.

'multi-fetch'::
	This runs fetch on all known SVN branches we're tracking.  This
	will NOT discover new branches (unlike git-svnimport), so
	multi-init will need to be re-run (it's idempotent).

--

OPTIONS
-------
--

--shared::
--template=<template_directory>::
	Only used with the 'init' command.
	These are passed directly to gitlink:git-init[1].

-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 'set-tree' 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 'dcommit', 'set-tree' and 'commit-diff' commands.

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.

config key: svn.rmdir

-e::
--edit::

Only used with the 'dcommit', 'set-tree' and 'commit-diff' commands.

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.

config key: svn.edit

-l<num>::
--find-copies-harder::

Only used with the 'dcommit', 'set-tree' and 'commit-diff' commands.

They are both passed directly to git-diff-tree see
gitlink:git-diff-tree[1] for more information.

[verse]
config key: svn.l
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.

config key: svn.authorsfile

-q::
--quiet::
	Make git-svn less verbose.

--repack[=<n>]::
--repack-flags=<flags>
	These should help keep disk usage sane for large fetches
	with many revisions.

	--repack takes an optional argument for the number of revisions
	to fetch before repacking.  This defaults to repacking every
	1000 commits fetched if no argument is specified.

	--repack-flags are passed directly to gitlink:git-repack[1].

config key: svn.repack
config key: svn.repackflags

-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', 'dcommit' or 'set-tree'.

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.

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.

--follow-parent::
	This is especially helpful when we're tracking a directory
	that has been moved around within the repository, or if we
	started tracking a branch and never tracked the trunk it was
	descended from.

config key: svn.followparent

--no-metadata::
	This gets rid of the git-svn-id: lines at the end of every commit.

	With this, you lose the ability to use the rebuild command.  If
	you ever lose your .git/svn/git-svn/.rev_db file, you won't be
	able to fetch again, either.  This is fine for one-shot imports.

	The 'git-svn log' command will not work on repositories using this,
	either.

config key: svn.nometadata

--

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.

--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 a the trunk of a Subversion-managed project:

------------------------------------------------------------------------
# Initialize a repo (like git init):
	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
# Do some work, and then commit your new changes to SVN, as well as
# automatically updating your working HEAD:
	git-svn dcommit
# 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
------------------------------------------------------------------------

Tracking and contributing to an entire Subversion-managed project
(complete with a trunk, tags and branches):
See also:
'<<tracking-multiple-repos,Tracking Multiple Repositories or Branches>>'

------------------------------------------------------------------------
# Initialize a repo (like git init):
	git-svn multi-init http://svn.foo.org/project \
		-T trunk -b branches -t tags
# Fetch remote revisions:
	git-svn multi-fetch
# Create your own branch of trunk to hack on:
	git checkout -b my-trunk remotes/trunk
# Do some work, and then commit your new changes to SVN, as well as
# automatically updating your working HEAD:
	git-svn dcommit -i trunk
# Something has been committed to trunk, rebase the latest into your branch:
	git-svn multi-fetch && git rebase remotes/trunk
# Append svn:ignore settings of trunk to the default git exclude file:
	git-svn show-ignore -i trunk >> .git/info/exclude
# Check for new branches and tags (no arguments are needed):
	git-svn multi-init
------------------------------------------------------------------------

REBASE VS. PULL/MERGE
---------------------

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

If you use 'git-svn set-tree 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' or
'git merge'.  'pull/merge' 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 does not do
automated merge/branch tracking by default and leaves it entirely up to
the user on the git side.

[[tracking-multiple-repos]]
TRACKING MULTIPLE REPOSITORIES OR BRANCHES
------------------------------------------
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 use the --id/-i flag or
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/svn/git-svn directory and instead do all of its work in
$GIT_DIR/svn/$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)
------------------------------------------------

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 use
the --follow-parent option.

------------------------------------------------
	git-svn fetch --follow-parent
------------------------------------------------

BUGS
----

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.

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>.
