Merge branch 'fc/show-non-empty-errors-in-test'
[gitweb.git] / Documentation / git-svn.txt
index 1b8b6498cd8afa4e2581e3597c4787981dc042df..aad452f1697b92713a032c36bf40477c51008f04 100644 (file)
@@ -85,6 +85,10 @@ COMMANDS
        When passed to 'init' or 'clone' this regular expression will
        be preserved as a config key.  See 'fetch' for a description
        of '--ignore-paths'.
+--include-paths=<regex>;;
+       When passed to 'init' or 'clone' this regular expression will
+       be preserved as a config key.  See 'fetch' for a description
+       of '--include-paths'.
 --no-minimize-url;;
        When tracking multiple directories (using --stdlayout,
        --branches, or --tags options), git svn will attempt to connect
@@ -146,6 +150,14 @@ Skip "branches" and "tags" of first level directories;;
 ------------------------------------------------------------------------
 --
 
+--include-paths=<regex>;;
+       This allows one to specify a Perl regular expression that will
+       cause the inclusion of only matching paths from checkout from SVN.
+       The '--include-paths' option should match for every 'fetch'
+       (including automatic fetches due to 'clone', 'dcommit',
+       'rebase', etc) on a given repository. '--ignore-paths' takes
+       precedence over '--include-paths'.
+
 --log-window-size=<n>;;
     Fetch <n> log entries per request when scanning Subversion history.
     The default is 100. For very large Subversion repositories, larger
@@ -245,7 +257,7 @@ first have already been pushed into SVN.
        patch), "all" (accept all patches), or "quit".
        +
        'git svn dcommit' returns immediately if answer if "no" or "quit", without
-       commiting anything to SVN.
+       committing anything to SVN.
 
 'branch'::
        Create a branch in the SVN repository.
@@ -259,13 +271,15 @@ first have already been pushed into SVN.
        Create a tag by using the tags_subdir instead of the branches_subdir
        specified during git svn init.
 
--d;;
---destination;;
+-d<path>;;
+--destination=<path>;;
+
        If more than one --branches (or --tags) option was given to the 'init'
        or 'clone' command, you must provide the location of the branch (or
-       tag) you wish to create in the SVN repository.  The value of this
-       option must match one of the paths specified by a --branches (or
-       --tags) option.  You can see these paths with the commands
+       tag) you wish to create in the SVN repository.  <path> specifies which
+       path to use to create the branch or tag and should match the pattern
+       on the left-hand side of one of the configured branches or tags
+       refspecs.  You can see these refspecs with the commands
 +
        git config --get-all svn-remote.<name>.branches
        git config --get-all svn-remote.<name>.tags
@@ -286,6 +300,11 @@ where <name> is the name of the SVN repository as specified by the -R option to
        git config --get-all svn-remote.<name>.commiturl
 +
 
+--parents;;
+       Create parent folders. This parameter is equivalent to the parameter
+       --parents on svn cp commands and is useful for non-standard repository
+       layouts.
+
 'tag'::
        Create a tag in the SVN repository. This is a shorthand for
        'branch -t'.
@@ -856,7 +875,7 @@ HANDLING OF SVN BRANCHES
 ------------------------
 If 'git svn' is configured to fetch branches (and --follow-branches
 is in effect), it sometimes creates multiple Git branches for one
-SVN branch, where the addtional branches have names of the form
+SVN branch, where the additional branches have names of the form
 'branchname@nnn' (with nnn an SVN revision number).  These additional
 branches are created if 'git svn' cannot find a parent commit for the
 first commit in an SVN branch, to connect the branch to the history of
@@ -1020,6 +1039,25 @@ comma-separated list of names within braces. For example:
        tags = tags/{1.0,2.0}/src:refs/remotes/tags/*
 ------------------------------------------------------------------------
 
+Multiple fetch, branches, and tags keys are supported:
+
+------------------------------------------------------------------------
+[svn-remote "messy-repo"]
+       url = http://server.org/svn
+       fetch = trunk/project-a:refs/remotes/project-a/trunk
+       fetch = branches/demos/june-project-a-demo:refs/remotes/project-a/demos/june-demo
+       branches = branches/server/*:refs/remotes/project-a/branches/*
+       branches = branches/demos/2011/*:refs/remotes/project-a/2011-demos/*
+       tags = tags/server/*:refs/remotes/project-a/tags/*
+------------------------------------------------------------------------
+
+Creating a branch in such a configuration requires disambiguating which
+location to use using the -d or --destination flag:
+
+------------------------------------------------------------------------
+$ git svn branch -d branches/server release-2-3-0
+------------------------------------------------------------------------
+
 Note that git-svn keeps track of the highest revision in which a branch
 or tag has appeared. If the subset of branches or tags is changed after
 fetching, then .git/svn/.metadata must be manually edited to remove (or