<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta http-equiv="Content-Type" content="application/xhtml+xml; charset=UTF-8" />
<meta name="generator" content="AsciiDoc 8.6.10" />
<title>git-svn(1)</title>
<style type="text/css">
/* Shared CSS for AsciiDoc xhtml11 and html5 backends */

/* Default font. */
body {
  font-family: Georgia,serif;
}

/* Title font. */
h1, h2, h3, h4, h5, h6,
div.title, caption.title,
thead, p.table.header,
#toctitle,
#author, #revnumber, #revdate, #revremark,
#footer {
  font-family: Arial,Helvetica,sans-serif;
}

body {
  margin: 1em 5% 1em 5%;
}

a {
  color: blue;
  text-decoration: underline;
}
a:visited {
  color: fuchsia;
}

em {
  font-style: italic;
  color: navy;
}

strong {
  font-weight: bold;
  color: #083194;
}

h1, h2, h3, h4, h5, h6 {
  color: #527bbd;
  margin-top: 1.2em;
  margin-bottom: 0.5em;
  line-height: 1.3;
}

h1, h2, h3 {
  border-bottom: 2px solid silver;
}
h2 {
  padding-top: 0.5em;
}
h3 {
  float: left;
}
h3 + * {
  clear: left;
}
h5 {
  font-size: 1.0em;
}

div.sectionbody {
  margin-left: 0;
}

hr {
  border: 1px solid silver;
}

p {
  margin-top: 0.5em;
  margin-bottom: 0.5em;
}

ul, ol, li > p {
  margin-top: 0;
}
ul > li     { color: #aaa; }
ul > li > * { color: black; }

.monospaced, code, pre {
  font-family: "Courier New", Courier, monospace;
  font-size: inherit;
  color: navy;
  padding: 0;
  margin: 0;
}
pre {
  white-space: pre-wrap;
}

#author {
  color: #527bbd;
  font-weight: bold;
  font-size: 1.1em;
}
#email {
}
#revnumber, #revdate, #revremark {
}

#footer {
  font-size: small;
  border-top: 2px solid silver;
  padding-top: 0.5em;
  margin-top: 4.0em;
}
#footer-text {
  float: left;
  padding-bottom: 0.5em;
}
#footer-badges {
  float: right;
  padding-bottom: 0.5em;
}

#preamble {
  margin-top: 1.5em;
  margin-bottom: 1.5em;
}
div.imageblock, div.exampleblock, div.verseblock,
div.quoteblock, div.literalblock, div.listingblock, div.sidebarblock,
div.admonitionblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.admonitionblock {
  margin-top: 2.0em;
  margin-bottom: 2.0em;
  margin-right: 10%;
  color: #606060;
}

div.content { /* Block element content. */
  padding: 0;
}

/* Block element titles. */
div.title, caption.title {
  color: #527bbd;
  font-weight: bold;
  text-align: left;
  margin-top: 1.0em;
  margin-bottom: 0.5em;
}
div.title + * {
  margin-top: 0;
}

td div.title:first-child {
  margin-top: 0.0em;
}
div.content div.title:first-child {
  margin-top: 0.0em;
}
div.content + div.title {
  margin-top: 0.0em;
}

div.sidebarblock > div.content {
  background: #ffffee;
  border: 1px solid #dddddd;
  border-left: 4px solid #f0f0f0;
  padding: 0.5em;
}

div.listingblock > div.content {
  border: 1px solid #dddddd;
  border-left: 5px solid #f0f0f0;
  background: #f8f8f8;
  padding: 0.5em;
}

div.quoteblock, div.verseblock {
  padding-left: 1.0em;
  margin-left: 1.0em;
  margin-right: 10%;
  border-left: 5px solid #f0f0f0;
  color: #888;
}

div.quoteblock > div.attribution {
  padding-top: 0.5em;
  text-align: right;
}

div.verseblock > pre.content {
  font-family: inherit;
  font-size: inherit;
}
div.verseblock > div.attribution {
  padding-top: 0.75em;
  text-align: left;
}
/* DEPRECATED: Pre version 8.2.7 verse style literal block. */
div.verseblock + div.attribution {
  text-align: left;
}

div.admonitionblock .icon {
  vertical-align: top;
  font-size: 1.1em;
  font-weight: bold;
  text-decoration: underline;
  color: #527bbd;
  padding-right: 0.5em;
}
div.admonitionblock td.content {
  padding-left: 0.5em;
  border-left: 3px solid #dddddd;
}

div.exampleblock > div.content {
  border-left: 3px solid #dddddd;
  padding-left: 0.5em;
}

div.imageblock div.content { padding-left: 0; }
span.image img { border-style: none; vertical-align: text-bottom; }
a.image:visited { color: white; }

dl {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
dt {
  margin-top: 0.5em;
  margin-bottom: 0;
  font-style: normal;
  color: navy;
}
dd > *:first-child {
  margin-top: 0.1em;
}

ul, ol {
    list-style-position: outside;
}
ol.arabic {
  list-style-type: decimal;
}
ol.loweralpha {
  list-style-type: lower-alpha;
}
ol.upperalpha {
  list-style-type: upper-alpha;
}
ol.lowerroman {
  list-style-type: lower-roman;
}
ol.upperroman {
  list-style-type: upper-roman;
}

div.compact ul, div.compact ol,
div.compact p, div.compact p,
div.compact div, div.compact div {
  margin-top: 0.1em;
  margin-bottom: 0.1em;
}

tfoot {
  font-weight: bold;
}
td > div.verse {
  white-space: pre;
}

div.hdlist {
  margin-top: 0.8em;
  margin-bottom: 0.8em;
}
div.hdlist tr {
  padding-bottom: 15px;
}
dt.hdlist1.strong, td.hdlist1.strong {
  font-weight: bold;
}
td.hdlist1 {
  vertical-align: top;
  font-style: normal;
  padding-right: 0.8em;
  color: navy;
}
td.hdlist2 {
  vertical-align: top;
}
div.hdlist.compact tr {
  margin: 0;
  padding-bottom: 0;
}

.comment {
  background: yellow;
}

.footnote, .footnoteref {
  font-size: 0.8em;
}

span.footnote, span.footnoteref {
  vertical-align: super;
}

#footnotes {
  margin: 20px 0 20px 0;
  padding: 7px 0 0 0;
}

#footnotes div.footnote {
  margin: 0 0 5px 0;
}

#footnotes hr {
  border: none;
  border-top: 1px solid silver;
  height: 1px;
  text-align: left;
  margin-left: 0;
  width: 20%;
  min-width: 100px;
}

div.colist td {
  padding-right: 0.5em;
  padding-bottom: 0.3em;
  vertical-align: top;
}
div.colist td img {
  margin-top: 0.3em;
}

@media print {
  #footer-badges { display: none; }
}

#toc {
  margin-bottom: 2.5em;
}

#toctitle {
  color: #527bbd;
  font-size: 1.1em;
  font-weight: bold;
  margin-top: 1.0em;
  margin-bottom: 0.1em;
}

div.toclevel0, div.toclevel1, div.toclevel2, div.toclevel3, div.toclevel4 {
  margin-top: 0;
  margin-bottom: 0;
}
div.toclevel2 {
  margin-left: 2em;
  font-size: 0.9em;
}
div.toclevel3 {
  margin-left: 4em;
  font-size: 0.9em;
}
div.toclevel4 {
  margin-left: 6em;
  font-size: 0.9em;
}

span.aqua { color: aqua; }
span.black { color: black; }
span.blue { color: blue; }
span.fuchsia { color: fuchsia; }
span.gray { color: gray; }
span.green { color: green; }
span.lime { color: lime; }
span.maroon { color: maroon; }
span.navy { color: navy; }
span.olive { color: olive; }
span.purple { color: purple; }
span.red { color: red; }
span.silver { color: silver; }
span.teal { color: teal; }
span.white { color: white; }
span.yellow { color: yellow; }

span.aqua-background { background: aqua; }
span.black-background { background: black; }
span.blue-background { background: blue; }
span.fuchsia-background { background: fuchsia; }
span.gray-background { background: gray; }
span.green-background { background: green; }
span.lime-background { background: lime; }
span.maroon-background { background: maroon; }
span.navy-background { background: navy; }
span.olive-background { background: olive; }
span.purple-background { background: purple; }
span.red-background { background: red; }
span.silver-background { background: silver; }
span.teal-background { background: teal; }
span.white-background { background: white; }
span.yellow-background { background: yellow; }

span.big { font-size: 2em; }
span.small { font-size: 0.6em; }

span.underline { text-decoration: underline; }
span.overline { text-decoration: overline; }
span.line-through { text-decoration: line-through; }

div.unbreakable { page-break-inside: avoid; }


/*
 * xhtml11 specific
 *
 * */

div.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
div.tableblock > table {
  border: 3px solid #527bbd;
}
thead, p.table.header {
  font-weight: bold;
  color: #527bbd;
}
p.table {
  margin-top: 0;
}
/* Because the table frame attribute is overriden by CSS in most browsers. */
div.tableblock > table[frame="void"] {
  border-style: none;
}
div.tableblock > table[frame="hsides"] {
  border-left-style: none;
  border-right-style: none;
}
div.tableblock > table[frame="vsides"] {
  border-top-style: none;
  border-bottom-style: none;
}


/*
 * html5 specific
 *
 * */

table.tableblock {
  margin-top: 1.0em;
  margin-bottom: 1.5em;
}
thead, p.tableblock.header {
  font-weight: bold;
  color: #527bbd;
}
p.tableblock {
  margin-top: 0;
}
table.tableblock {
  border-width: 3px;
  border-spacing: 0px;
  border-style: solid;
  border-color: #527bbd;
  border-collapse: collapse;
}
th.tableblock, td.tableblock {
  border-width: 1px;
  padding: 4px;
  border-style: solid;
  border-color: #527bbd;
}

table.tableblock.frame-topbot {
  border-left-style: hidden;
  border-right-style: hidden;
}
table.tableblock.frame-sides {
  border-top-style: hidden;
  border-bottom-style: hidden;
}
table.tableblock.frame-none {
  border-style: hidden;
}

th.tableblock.halign-left, td.tableblock.halign-left {
  text-align: left;
}
th.tableblock.halign-center, td.tableblock.halign-center {
  text-align: center;
}
th.tableblock.halign-right, td.tableblock.halign-right {
  text-align: right;
}

th.tableblock.valign-top, td.tableblock.valign-top {
  vertical-align: top;
}
th.tableblock.valign-middle, td.tableblock.valign-middle {
  vertical-align: middle;
}
th.tableblock.valign-bottom, td.tableblock.valign-bottom {
  vertical-align: bottom;
}


/*
 * manpage specific
 *
 * */

body.manpage h1 {
  padding-top: 0.5em;
  padding-bottom: 0.5em;
  border-top: 2px solid silver;
  border-bottom: 2px solid silver;
}
body.manpage h2 {
  border-style: none;
}
body.manpage div.sectionbody {
  margin-left: 3em;
}

@media print {
  body.manpage div#toc { display: none; }
}


</style>
<script type="text/javascript">
/*<![CDATA[*/
var asciidoc = {  // Namespace.

/////////////////////////////////////////////////////////////////////
// Table Of Contents generator
/////////////////////////////////////////////////////////////////////

/* Author: Mihai Bazon, September 2002
 * http://students.infoiasi.ro/~mishoo
 *
 * Table Of Content generator
 * Version: 0.4
 *
 * Feel free to use this script under the terms of the GNU General Public
 * License, as long as you do not remove or alter this notice.
 */

 /* modified by Troy D. Hanson, September 2006. License: GPL */
 /* modified by Stuart Rackham, 2006, 2009. License: GPL */

// toclevels = 1..4.
toc: function (toclevels) {

  function getText(el) {
    var text = "";
    for (var i = el.firstChild; i != null; i = i.nextSibling) {
      if (i.nodeType == 3 /* Node.TEXT_NODE */) // IE doesn't speak constants.
        text += i.data;
      else if (i.firstChild != null)
        text += getText(i);
    }
    return text;
  }

  function TocEntry(el, text, toclevel) {
    this.element = el;
    this.text = text;
    this.toclevel = toclevel;
  }

  function tocEntries(el, toclevels) {
    var result = new Array;
    var re = new RegExp('[hH]([1-'+(toclevels+1)+'])');
    // Function that scans the DOM tree for header elements (the DOM2
    // nodeIterator API would be a better technique but not supported by all
    // browsers).
    var iterate = function (el) {
      for (var i = el.firstChild; i != null; i = i.nextSibling) {
        if (i.nodeType == 1 /* Node.ELEMENT_NODE */) {
          var mo = re.exec(i.tagName);
          if (mo && (i.getAttribute("class") || i.getAttribute("className")) != "float") {
            result[result.length] = new TocEntry(i, getText(i), mo[1]-1);
          }
          iterate(i);
        }
      }
    }
    iterate(el);
    return result;
  }

  var toc = document.getElementById("toc");
  if (!toc) {
    return;
  }

  // Delete existing TOC entries in case we're reloading the TOC.
  var tocEntriesToRemove = [];
  var i;
  for (i = 0; i < toc.childNodes.length; i++) {
    var entry = toc.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div'
     && entry.getAttribute("class")
     && entry.getAttribute("class").match(/^toclevel/))
      tocEntriesToRemove.push(entry);
  }
  for (i = 0; i < tocEntriesToRemove.length; i++) {
    toc.removeChild(tocEntriesToRemove[i]);
  }

  // Rebuild TOC entries.
  var entries = tocEntries(document.getElementById("content"), toclevels);
  for (var i = 0; i < entries.length; ++i) {
    var entry = entries[i];
    if (entry.element.id == "")
      entry.element.id = "_toc_" + i;
    var a = document.createElement("a");
    a.href = "#" + entry.element.id;
    a.appendChild(document.createTextNode(entry.text));
    var div = document.createElement("div");
    div.appendChild(a);
    div.className = "toclevel" + entry.toclevel;
    toc.appendChild(div);
  }
  if (entries.length == 0)
    toc.parentNode.removeChild(toc);
},


/////////////////////////////////////////////////////////////////////
// Footnotes generator
/////////////////////////////////////////////////////////////////////

/* Based on footnote generation code from:
 * http://www.brandspankingnew.net/archive/2005/07/format_footnote.html
 */

footnotes: function () {
  // Delete existing footnote entries in case we're reloading the footnodes.
  var i;
  var noteholder = document.getElementById("footnotes");
  if (!noteholder) {
    return;
  }
  var entriesToRemove = [];
  for (i = 0; i < noteholder.childNodes.length; i++) {
    var entry = noteholder.childNodes[i];
    if (entry.nodeName.toLowerCase() == 'div' && entry.getAttribute("class") == "footnote")
      entriesToRemove.push(entry);
  }
  for (i = 0; i < entriesToRemove.length; i++) {
    noteholder.removeChild(entriesToRemove[i]);
  }

  // Rebuild footnote entries.
  var cont = document.getElementById("content");
  var spans = cont.getElementsByTagName("span");
  var refs = {};
  var n = 0;
  for (i=0; i<spans.length; i++) {
    if (spans[i].className == "footnote") {
      n++;
      var note = spans[i].getAttribute("data-note");
      if (!note) {
        // Use [\s\S] in place of . so multi-line matches work.
        // Because JavaScript has no s (dotall) regex flag.
        note = spans[i].innerHTML.match(/\s*\[([\s\S]*)]\s*/)[1];
        spans[i].innerHTML =
          "[<a id='_footnoteref_" + n + "' href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
        spans[i].setAttribute("data-note", note);
      }
      noteholder.innerHTML +=
        "<div class='footnote' id='_footnote_" + n + "'>" +
        "<a href='#_footnoteref_" + n + "' title='Return to text'>" +
        n + "</a>. " + note + "</div>";
      var id =spans[i].getAttribute("id");
      if (id != null) refs["#"+id] = n;
    }
  }
  if (n == 0)
    noteholder.parentNode.removeChild(noteholder);
  else {
    // Process footnoterefs.
    for (i=0; i<spans.length; i++) {
      if (spans[i].className == "footnoteref") {
        var href = spans[i].getElementsByTagName("a")[0].getAttribute("href");
        href = href.match(/#.*/)[0];  // Because IE return full URL.
        n = refs[href];
        spans[i].innerHTML =
          "[<a href='#_footnote_" + n +
          "' title='View footnote' class='footnote'>" + n + "</a>]";
      }
    }
  }
},

install: function(toclevels) {
  var timerId;

  function reinstall() {
    asciidoc.footnotes();
    if (toclevels) {
      asciidoc.toc(toclevels);
    }
  }

  function reinstallAndRemoveTimer() {
    clearInterval(timerId);
    reinstall();
  }

  timerId = setInterval(reinstall, 500);
  if (document.addEventListener)
    document.addEventListener("DOMContentLoaded", reinstallAndRemoveTimer, false);
  else
    window.onload = reinstallAndRemoveTimer;
}

}
asciidoc.install();
/*]]>*/
</script>
</head>
<body class="manpage">
<div id="header">
<h1>
git-svn(1) Manual Page
</h1>
<h2>NAME</h2>
<div class="sectionbody">
<p>git-svn -
   Bidirectional operation between a Subversion repository and Git
</p>
</div>
</div>
<div id="content">
<div class="sect1">
<h2 id="_synopsis">SYNOPSIS</h2>
<div class="sectionbody">
<div class="verseblock">
<pre class="content"><em>git svn</em> &lt;command&gt; [&lt;options&gt;] [&lt;arguments&gt;]</pre>
<div class="attribution">
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_description">DESCRIPTION</h2>
<div class="sectionbody">
<div class="paragraph"><p><em>git svn</em> is a simple conduit for changesets between Subversion and Git.
It provides a bidirectional flow of changes between a Subversion and a Git
repository.</p></div>
<div class="paragraph"><p><em>git svn</em> can track a standard Subversion repository,
following the common "trunk/branches/tags" layout, with the --stdlayout option.
It can also follow branches and tags in any layout with the -T/-t/-b options
(see options to <em>init</em> below, and also the <em>clone</em> command).</p></div>
<div class="paragraph"><p>Once tracking a Subversion repository (with any of the above methods), the Git
repository can be updated from Subversion by the <em>fetch</em> command and
Subversion updated from Git by the <em>dcommit</em> command.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_commands">COMMANDS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
<em>init</em>
</dt>
<dd>
<p>
        Initializes an empty Git repository with additional
        metadata directories for <em>git svn</em>.  The Subversion URL
        may be specified as a command-line argument, or as full
        URL arguments to -T/-t/-b.  Optionally, the target
        directory to operate on can be specified as a second
        argument.  Normally this command initializes the current
        directory.
</p>
<div class="dlist"><dl>
<dt class="hdlist1">
-T&lt;trunk_subdir&gt;
</dt>
<dt class="hdlist1">
--trunk=&lt;trunk_subdir&gt;
</dt>
<dt class="hdlist1">
-t&lt;tags_subdir&gt;
</dt>
<dt class="hdlist1">
--tags=&lt;tags_subdir&gt;
</dt>
<dt class="hdlist1">
-b&lt;branches_subdir&gt;
</dt>
<dt class="hdlist1">
--branches=&lt;branches_subdir&gt;
</dt>
<dt class="hdlist1">
-s
</dt>
<dt class="hdlist1">
--stdlayout
</dt>
<dd>
<p>
        These are optional command-line options for 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).
        You can specify more than one --tags and/or --branches options, in case
        your Subversion repository places tags or branches under multiple paths.
        The option --stdlayout is
        a shorthand way of setting trunk,tags,branches as the relative paths,
        which is the Subversion default. If any of the other options are given
        as well, they take precedence.
</p>
</dd>
<dt class="hdlist1">
--no-metadata
</dt>
<dd>
<p>
        Set the <em>noMetadata</em> option in the [svn-remote] config.
        This option is not recommended, please read the <em>svn.noMetadata</em>
        section of this manpage before using this option.
</p>
</dd>
<dt class="hdlist1">
--use-svm-props
</dt>
<dd>
<p>
        Set the <em>useSvmProps</em> option in the [svn-remote] config.
</p>
</dd>
<dt class="hdlist1">
--use-svnsync-props
</dt>
<dd>
<p>
        Set the <em>useSvnsyncProps</em> option in the [svn-remote] config.
</p>
</dd>
<dt class="hdlist1">
--rewrite-root=&lt;URL&gt;
</dt>
<dd>
<p>
        Set the <em>rewriteRoot</em> option in the [svn-remote] config.
</p>
</dd>
<dt class="hdlist1">
--rewrite-uuid=&lt;UUID&gt;
</dt>
<dd>
<p>
        Set the <em>rewriteUUID</em> option in the [svn-remote] config.
</p>
</dd>
<dt class="hdlist1">
--username=&lt;user&gt;
</dt>
<dd>
<p>
        For transports that SVN handles authentication for (http,
        https, and plain svn), specify the username.  For other
        transports (e.g. <code>svn+ssh://</code>), you must include the username in
        the URL, e.g. <code>svn+ssh://foo@svn.bar.com/project</code>
</p>
</dd>
<dt class="hdlist1">
--prefix=&lt;prefix&gt;
</dt>
<dd>
<p>
        This allows one to specify a prefix which is prepended
        to the names of remotes if trunk/branches/tags are
        specified.  The prefix does not automatically include a
        trailing slash, so be sure you include one in the
        argument if that is what you want.  If --branches/-b is
        specified, the prefix must include a trailing slash.
        Setting a prefix (with a trailing slash) is strongly
        encouraged in any case, as your SVN-tracking refs will
        then be located at "refs/remotes/$prefix/<strong>", which is
        compatible with Git&#8217;s own remote-tracking ref layout
        (refs/remotes/$remote/</strong>). Setting a prefix is also useful
        if you wish to track multiple projects that share a common
        repository.
        By default, the prefix is set to <em>origin/</em>.
</p>
<div class="admonitionblock">
<table><tr>
<td class="icon">
<div class="title">Note</div>
</td>
<td class="content">Before Git v2.0, the default prefix was "" (no prefix). This
meant that SVN-tracking refs were put at "refs/remotes/*", which is
incompatible with how Git&#8217;s own remote-tracking refs are organized.
If you still want the old default, you can get it by passing
<code>--prefix ""</code> on the command line (<code>--prefix=""</code> may not work if
your Perl&#8217;s Getopt::Long is &lt; v2.37).</td>
</tr></table>
</div>
</dd>
<dt class="hdlist1">
--ignore-refs=&lt;regex&gt;
</dt>
<dd>
<p>
        When passed to <em>init</em> or <em>clone</em> this regular expression will
        be preserved as a config key.  See <em>fetch</em> for a description
        of <code>--ignore-refs</code>.
</p>
</dd>
<dt class="hdlist1">
--ignore-paths=&lt;regex&gt;
</dt>
<dd>
<p>
        When passed to <em>init</em> or <em>clone</em> this regular expression will
        be preserved as a config key.  See <em>fetch</em> for a description
        of <code>--ignore-paths</code>.
</p>
</dd>
<dt class="hdlist1">
--include-paths=&lt;regex&gt;
</dt>
<dd>
<p>
        When passed to <em>init</em> or <em>clone</em> this regular expression will
        be preserved as a config key.  See <em>fetch</em> for a description
        of <code>--include-paths</code>.
</p>
</dd>
<dt class="hdlist1">
--no-minimize-url
</dt>
<dd>
<p>
        When tracking multiple directories (using --stdlayout,
        --branches, or --tags options), git svn will attempt to connect
        to the root (or highest allowed level) of the Subversion
        repository.  This default allows better tracking of history if
        entire projects are moved within a repository, but may cause
        issues on repositories where read access restrictions are in
        place.  Passing <code>--no-minimize-url</code> will allow git svn to
        accept URLs as-is without attempting to connect to a higher
        level directory.  This option is off by default when only
        one URL/branch is tracked (it would do little good).
</p>
</dd>
</dl></div>
</dd>
<dt class="hdlist1">
<em>fetch</em>
</dt>
<dd>
<p>
        Fetch unfetched revisions from the Subversion remote we are
        tracking.  The name of the [svn-remote "&#8230;"] section in the
        $GIT_DIR/config file may be specified as an optional
        command-line argument.
</p>
<div class="paragraph"><p>This automatically updates the rev_map if needed (see
<em>$GIT_DIR/svn/**/.rev_map.*</em> in the FILES section below for details).</p></div>
<div class="dlist"><dl>
<dt class="hdlist1">
--localtime
</dt>
<dd>
<p>
        Store Git commit times in the local time zone instead of UTC.  This
        makes <em>git log</em> (even without --date=local) show the same times
        that <code>svn log</code> would in the local time zone.
</p>
<div class="paragraph"><p>This doesn&#8217;t interfere with interoperating with the Subversion
repository you cloned from, but if you wish for your local Git
repository to be able to interoperate with someone else&#8217;s local Git
repository, either don&#8217;t use this option or you should both use it in
the same local time zone.</p></div>
</dd>
<dt class="hdlist1">
--parent
</dt>
<dd>
<p>
        Fetch only from the SVN parent of the current HEAD.
</p>
</dd>
<dt class="hdlist1">
--ignore-refs=&lt;regex&gt;
</dt>
<dd>
<p>
        Ignore refs for branches or tags matching the Perl regular
        expression. A "negative look-ahead assertion" like
        <code>^refs/remotes/origin/(?!tags/wanted-tag|wanted-branch).*$</code>
        can be used to allow only certain refs.
</p>
<div class="verseblock">
<pre class="content">config key: svn-remote.&lt;name&gt;.ignore-refs</pre>
<div class="attribution">
</div></div>
<div class="paragraph"><p>If the ignore-refs configuration key is set, and the command-line
option is also given, both regular expressions will be used.</p></div>
</dd>
<dt class="hdlist1">
--ignore-paths=&lt;regex&gt;
</dt>
<dd>
<p>
        This allows one to specify a Perl regular expression that will
        cause skipping of all matching paths from checkout from SVN.
        The <code>--ignore-paths</code> option should match for every <em>fetch</em>
        (including automatic fetches due to <em>clone</em>, <em>dcommit</em>,
        <em>rebase</em>, etc) on a given repository.
</p>
<div class="verseblock">
<pre class="content">config key: svn-remote.&lt;name&gt;.ignore-paths</pre>
<div class="attribution">
</div></div>
<div class="paragraph"><p>If the ignore-paths configuration key is set, and the command-line
option is also given, both regular expressions will be used.</p></div>
<div class="paragraph"><p>Examples:</p></div>
<div class="openblock">
<div class="content">
<div class="dlist"><dl>
<dt class="hdlist1">
Skip "doc*" directory for every fetch
</dt>
<dd>
<div class="listingblock">
<div class="content">
<pre><code>--ignore-paths="^doc"</code></pre>
</div></div>
</dd>
<dt class="hdlist1">
Skip "branches" and "tags" of first level directories
</dt>
<dd>
<div class="listingblock">
<div class="content">
<pre><code>--ignore-paths="^[^/]+/(?:branches|tags)"</code></pre>
</div></div>
</dd>
</dl></div>
</div></div>
</dd>
<dt class="hdlist1">
--include-paths=&lt;regex&gt;
</dt>
<dd>
<p>
        This allows one to specify a Perl regular expression that will
        cause the inclusion of only matching paths from checkout from SVN.
        The <code>--include-paths</code> option should match for every <em>fetch</em>
        (including automatic fetches due to <em>clone</em>, <em>dcommit</em>,
        <em>rebase</em>, etc) on a given repository. <code>--ignore-paths</code> takes
        precedence over <code>--include-paths</code>.
</p>
<div class="verseblock">
<pre class="content">config key: svn-remote.&lt;name&gt;.include-paths</pre>
<div class="attribution">
</div></div>
</dd>
<dt class="hdlist1">
--log-window-size=&lt;n&gt;
</dt>
<dd>
<p>
        Fetch &lt;n&gt; log entries per request when scanning Subversion history.
        The default is 100. For very large Subversion repositories, larger
        values may be needed for <em>clone</em>/<em>fetch</em> to complete in reasonable
        time. But overly large values may lead to higher memory usage and
        request timeouts.
</p>
</dd>
</dl></div>
</dd>
<dt class="hdlist1">
<em>clone</em>
</dt>
<dd>
<p>
        Runs <em>init</em> and <em>fetch</em>.  It will automatically create a
        directory based on the basename of the URL passed to it;
        or if a second argument is passed; it will create a directory
        and work within that.  It accepts all arguments that the
        <em>init</em> and <em>fetch</em> commands accept; with the exception of
        <code>--fetch-all</code> and <code>--parent</code>.  After a repository is cloned,
        the <em>fetch</em> command will be able to update revisions without
        affecting the working tree; and the <em>rebase</em> command will be
        able to update the working tree with the latest changes.
</p>
<div class="dlist"><dl>
<dt class="hdlist1">
--preserve-empty-dirs
</dt>
<dd>
<p>
        Create a placeholder file in the local Git repository for each
        empty directory fetched from Subversion.  This includes directories
        that become empty by removing all entries in the Subversion
        repository (but not the directory itself).  The placeholder files
        are also tracked and removed when no longer necessary.
</p>
</dd>
<dt class="hdlist1">
--placeholder-filename=&lt;filename&gt;
</dt>
<dd>
<p>
        Set the name of placeholder files created by --preserve-empty-dirs.
        Default: ".gitignore"
</p>
</dd>
</dl></div>
</dd>
<dt class="hdlist1">
<em>rebase</em>
</dt>
<dd>
<p>
        This fetches revisions from the SVN parent of the current HEAD
        and rebases the current (uncommitted to SVN) work against it.
</p>
<div class="paragraph"><p>This works similarly to <code>svn update</code> or <em>git pull</em> except that
it preserves linear history with <em>git rebase</em> instead of
<em>git merge</em> for ease of dcommitting with <em>git svn</em>.</p></div>
<div class="paragraph"><p>This accepts all options that <em>git svn fetch</em> and <em>git rebase</em>
accept.  However, <code>--fetch-all</code> only fetches from the current
[svn-remote], and not all [svn-remote] definitions.</p></div>
<div class="paragraph"><p>Like <em>git rebase</em>; this requires that the working tree be clean
and have no uncommitted changes.</p></div>
<div class="paragraph"><p>This automatically updates the rev_map if needed (see
<em>$GIT_DIR/svn/**/.rev_map.*</em> in the FILES section below for details).</p></div>
<div class="dlist"><dl>
<dt class="hdlist1">
-l
</dt>
<dt class="hdlist1">
--local
</dt>
<dd>
<p>
        Do not fetch remotely; only run <em>git rebase</em> against the
        last fetched commit from the upstream SVN.
</p>
</dd>
</dl></div>
</dd>
<dt class="hdlist1">
<em>dcommit</em>
</dt>
<dd>
<p>
        Commit each diff from the current branch 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.
</p>
<div class="paragraph"><p>When an optional Git branch name (or a Git commit object name)
is specified as an argument, the subcommand works on the specified
branch, not on the current branch.</p></div>
<div class="paragraph"><p>Use of <em>dcommit</em> is preferred to <em>set-tree</em> (below).</p></div>
<div class="dlist"><dl>
<dt class="hdlist1">
--no-rebase
</dt>
<dd>
<p>
        After committing, do not rebase or reset.
</p>
</dd>
<dt class="hdlist1">
--commit-url &lt;URL&gt;
</dt>
<dd>
<p>
        Commit to this SVN URL (the full path).  This is intended to
        allow existing <em>git svn</em> repositories created with one transport
        method (e.g. <code>svn://</code> or <code>http://</code> for anonymous read) to be
        reused if a user is later given access to an alternate transport
        method (e.g. <code>svn+ssh://</code> or <code>https://</code>) for commit.
</p>
<div class="verseblock">
<pre class="content">config key: svn-remote.&lt;name&gt;.commiturl
config key: svn.commiturl (overwrites all svn-remote.&lt;name&gt;.commiturl options)</pre>
<div class="attribution">
</div></div>
<div class="paragraph"><p>Note that the SVN URL of the commiturl config key includes the SVN branch.
If you rather want to set the commit URL for an entire SVN repository use
svn-remote.&lt;name&gt;.pushurl instead.</p></div>
<div class="paragraph"><p>Using this option for any other purpose (don&#8217;t ask) is very strongly
discouraged.</p></div>
</dd>
<dt class="hdlist1">
--mergeinfo=&lt;mergeinfo&gt;
</dt>
<dd>
<p>
        Add the given merge information during the dcommit
        (e.g. <code>--mergeinfo="/branches/foo:1-10"</code>). All svn server versions can
        store this information (as a property), and svn clients starting from
        version 1.5 can make use of it. To specify merge information from multiple
        branches, use a single space character between the branches
        (<code>--mergeinfo="/branches/foo:1-10 /branches/bar:3,5-6,8"</code>)
</p>
<div class="verseblock">
<pre class="content">config key: svn.pushmergeinfo</pre>
<div class="attribution">
</div></div>
<div class="paragraph"><p>This option will cause git-svn to attempt to automatically populate the
svn:mergeinfo property in the SVN repository when possible. Currently, this can
only be done when dcommitting non-fast-forward merges where all parents but the
first have already been pushed into SVN.</p></div>
</dd>
<dt class="hdlist1">
--interactive
</dt>
<dd>
<p>
        Ask the user to confirm that a patch set should actually be sent to SVN.
        For each patch, one may answer "yes" (accept this patch), "no" (discard this
        patch), "all" (accept all patches), or "quit".
</p>
<div class="paragraph"><p><em>git svn dcommit</em> returns immediately if answer is "no" or "quit", without
committing anything to SVN.</p></div>
</dd>
</dl></div>
</dd>
<dt class="hdlist1">
<em>branch</em>
</dt>
<dd>
<p>
        Create a branch in the SVN repository.
</p>
<div class="dlist"><dl>
<dt class="hdlist1">
-m
</dt>
<dt class="hdlist1">
--message
</dt>
<dd>
<p>
        Allows to specify the commit message.
</p>
</dd>
<dt class="hdlist1">
-t
</dt>
<dt class="hdlist1">
--tag
</dt>
<dd>
<p>
        Create a tag by using the tags_subdir instead of the branches_subdir
        specified during git svn init.
</p>
</dd>
<dt class="hdlist1">
-d&lt;path&gt;
</dt>
<dt class="hdlist1">
--destination=&lt;path&gt;
</dt>
<dd>
<p>
        If more than one --branches (or --tags) option was given to the <em>init</em>
        or <em>clone</em> command, you must provide the location of the branch (or
        tag) you wish to create in the SVN repository.  &lt;path&gt; 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
</p>
<div class="literalblock">
<div class="content">
<pre><code>git config --get-all svn-remote.&lt;name&gt;.branches
git config --get-all svn-remote.&lt;name&gt;.tags</code></pre>
</div></div>
<div class="paragraph"><p>where &lt;name&gt; is the name of the SVN repository as specified by the -R option to
<em>init</em> (or "svn" by default).</p></div>
</dd>
<dt class="hdlist1">
--username
</dt>
<dd>
<p>
        Specify the SVN username to perform the commit as.  This option overrides
        the <em>username</em> configuration property.
</p>
</dd>
<dt class="hdlist1">
--commit-url
</dt>
<dd>
<p>
        Use the specified URL to connect to the destination Subversion
        repository.  This is useful in cases where the source SVN
        repository is read-only.  This option overrides configuration
        property <em>commiturl</em>.
</p>
<div class="literalblock">
<div class="content">
<pre><code>git config --get-all svn-remote.&lt;name&gt;.commiturl</code></pre>
</div></div>
</dd>
<dt class="hdlist1">
--parents
</dt>
<dd>
<p>
        Create parent folders. This parameter is equivalent to the parameter
        --parents on svn cp commands and is useful for non-standard repository
        layouts.
</p>
</dd>
</dl></div>
</dd>
<dt class="hdlist1">
<em>tag</em>
</dt>
<dd>
<p>
        Create a tag in the SVN repository. This is a shorthand for
        <em>branch -t</em>.
</p>
</dd>
<dt class="hdlist1">
<em>log</em>
</dt>
<dd>
<p>
        This should make it easy to look up svn log messages when svn
        users refer to -r/--revision numbers.
</p>
<div class="paragraph"><p>The following features from &#8216;svn log&#8217; are supported:</p></div>
<div class="openblock">
<div class="content">
<div class="dlist"><dl>
<dt class="hdlist1">
-r &lt;n&gt;[:&lt;n&gt;]
</dt>
<dt class="hdlist1">
--revision=&lt;n&gt;[:&lt;n&gt;]
</dt>
<dd>
<p>
        is supported, non-numeric args are not:
        HEAD, NEXT, BASE, PREV, etc &#8230;
</p>
</dd>
<dt class="hdlist1">
-v
</dt>
<dt class="hdlist1">
--verbose
</dt>
<dd>
<p>
        it&#8217;s not completely compatible with the --verbose
        output in svn log, but reasonably close.
</p>
</dd>
<dt class="hdlist1">
--limit=&lt;n&gt;
</dt>
<dd>
<p>
        is NOT the same as --max-count, doesn&#8217;t count
        merged/excluded commits
</p>
</dd>
<dt class="hdlist1">
--incremental
</dt>
<dd>
<p>
        supported
</p>
</dd>
</dl></div>
</div></div>
<div class="paragraph"><p>New features:</p></div>
<div class="openblock">
<div class="content">
<div class="dlist"><dl>
<dt class="hdlist1">
--show-commit
</dt>
<dd>
<p>
        shows the Git commit sha1, as well
</p>
</dd>
<dt class="hdlist1">
--oneline
</dt>
<dd>
<p>
        our version of --pretty=oneline
</p>
</dd>
</dl></div>
</div></div>
<div class="admonitionblock">
<table><tr>
<td class="icon">
<div class="title">Note</div>
</td>
<td class="content">SVN itself only stores times in UTC and nothing else. The regular svn
client converts the UTC time to the local time (or based on the TZ=
environment). This command has the same behaviour.</td>
</tr></table>
</div>
<div class="paragraph"><p>Any other arguments are passed directly to <em>git log</em></p></div>
</dd>
<dt class="hdlist1">
<em>blame</em>
</dt>
<dd>
<p>
        Show what revision and author last modified each line of a file. The
        output of this mode is format-compatible with the output of
        &#8216;svn blame&#8217; by default. Like the SVN blame command,
        local uncommitted changes in the working tree are ignored;
        the version of the file in the HEAD revision is annotated. Unknown
        arguments are passed directly to <em>git blame</em>.
</p>
<div class="dlist"><dl>
<dt class="hdlist1">
--git-format
</dt>
<dd>
<p>
        Produce output in the same format as <em>git blame</em>, but with
        SVN revision numbers instead of Git commit hashes. In this mode,
        changes that haven&#8217;t been committed to SVN (including local
        working-copy edits) are shown as revision 0.
</p>
</dd>
</dl></div>
</dd>
<dt class="hdlist1">
<em>find-rev</em>
</dt>
<dd>
<p>
        When given an SVN revision number of the form <em>rN</em>, returns the
        corresponding Git commit hash (this can optionally be followed by a
        tree-ish to specify which branch should be searched).  When given a
        tree-ish, returns the corresponding SVN revision number.
</p>
<div class="dlist"><dl>
<dt class="hdlist1">
-B
</dt>
<dt class="hdlist1">
--before
</dt>
<dd>
<p>
        Don&#8217;t require an exact match if given an SVN revision, instead find
        the commit corresponding to the state of the SVN repository (on the
        current branch) at the specified revision.
</p>
</dd>
<dt class="hdlist1">
-A
</dt>
<dt class="hdlist1">
--after
</dt>
<dd>
<p>
        Don&#8217;t require an exact match if given an SVN revision; if there is
        not an exact match return the closest match searching forward in the
        history.
</p>
</dd>
</dl></div>
</dd>
<dt class="hdlist1">
<em>set-tree</em>
</dt>
<dd>
<p>
        You should consider using <em>dcommit</em> 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 <em>git svn</em> functions.
</p>
</dd>
<dt class="hdlist1">
<em>create-ignore</em>
</dt>
<dd>
<p>
        Recursively finds the svn:ignore property on directories and
        creates matching .gitignore files. The resulting files are staged to
        be committed, but are not committed. Use -r/--revision to refer to a
        specific revision.
</p>
</dd>
<dt class="hdlist1">
<em>show-ignore</em>
</dt>
<dd>
<p>
        Recursively finds and lists the svn:ignore property on
        directories.  The output is suitable for appending to
        the $GIT_DIR/info/exclude file.
</p>
</dd>
<dt class="hdlist1">
<em>mkdirs</em>
</dt>
<dd>
<p>
        Attempts to recreate empty directories that core Git cannot track
        based on information in $GIT_DIR/svn/&lt;refname&gt;/unhandled.log files.
        Empty directories are automatically recreated when using
        "git svn clone" and "git svn rebase", so "mkdirs" is intended
        for use after commands like "git checkout" or "git reset".
        (See the svn-remote.&lt;name&gt;.automkdirs config file option for
        more information.)
</p>
</dd>
<dt class="hdlist1">
<em>commit-diff</em>
</dt>
<dd>
<p>
        Commits the diff of two tree-ish arguments from the
        command-line.  This command does not rely on being inside a <code>git svn
        init</code>-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 <em>git svn</em>-aware
        repository (that has been <code>init</code>-ed with <em>git svn</em>).
        The -r&lt;revision&gt; option is required for this.
</p>
<div class="paragraph"><p>The commit message is supplied either directly with the <code>-m</code> or <code>-F</code>
option, or indirectly from the tag or commit when the second tree-ish
denotes such an object, or it is requested by invoking an editor (see
<code>--edit</code> option below).</p></div>
<div class="dlist"><dl>
<dt class="hdlist1">
-m &lt;msg&gt;
</dt>
<dt class="hdlist1">
--message=&lt;msg&gt;
</dt>
<dd>
<p>
        Use the given <code>msg</code> as the commit message. This option
        disables the <code>--edit</code> option.
</p>
</dd>
<dt class="hdlist1">
-F &lt;filename&gt;
</dt>
<dt class="hdlist1">
--file=&lt;filename&gt;
</dt>
<dd>
<p>
        Take the commit message from the given file. This option
        disables the <code>--edit</code> option.
</p>
</dd>
</dl></div>
</dd>
<dt class="hdlist1">
<em>info</em>
</dt>
<dd>
<p>
        Shows information about a file or directory similar to what
        &#8216;svn info&#8217; provides.  Does not currently support a -r/--revision
        argument.  Use the --url option to output only the value of the
        <em>URL:</em> field.
</p>
</dd>
<dt class="hdlist1">
<em>proplist</em>
</dt>
<dd>
<p>
        Lists the properties stored in the Subversion repository about a
        given file or directory.  Use -r/--revision to refer to a specific
        Subversion revision.
</p>
</dd>
<dt class="hdlist1">
<em>propget</em>
</dt>
<dd>
<p>
        Gets the Subversion property given as the first argument, for a
        file.  A specific revision can be specified with -r/--revision.
</p>
</dd>
<dt class="hdlist1">
<em>propset</em>
</dt>
<dd>
<p>
        Sets the Subversion property given as the first argument, to the
        value given as the second argument for the file given as the
        third argument.
</p>
<div class="paragraph"><p>Example:</p></div>
<div class="listingblock">
<div class="content">
<pre><code>git svn propset svn:keywords "FreeBSD=%H" devel/py-tipper/Makefile</code></pre>
</div></div>
<div class="paragraph"><p>This will set the property <em>svn:keywords</em> to <em>FreeBSD=%H</em> for the file
<em>devel/py-tipper/Makefile</em>.</p></div>
</dd>
<dt class="hdlist1">
<em>show-externals</em>
</dt>
<dd>
<p>
        Shows the Subversion externals.  Use -r/--revision to specify a
        specific revision.
</p>
</dd>
<dt class="hdlist1">
<em>gc</em>
</dt>
<dd>
<p>
        Compress $GIT_DIR/svn/&lt;refname&gt;/unhandled.log files and remove
        $GIT_DIR/svn/&lt;refname&gt;/index files.
</p>
</dd>
<dt class="hdlist1">
<em>reset</em>
</dt>
<dd>
<p>
        Undoes the effects of <em>fetch</em> back to the specified revision.
        This allows you to re-<em>fetch</em> an SVN revision.  Normally the
        contents of an SVN revision should never change and <em>reset</em>
        should not be necessary.  However, if SVN permissions change,
        or if you alter your --ignore-paths option, a <em>fetch</em> may fail
        with "not found in commit" (file not previously visible) or
        "checksum mismatch" (missed a modification).  If the problem
        file cannot be ignored forever (with --ignore-paths) the only
        way to repair the repo is to use <em>reset</em>.
</p>
<div class="paragraph"><p>Only the rev_map and refs/remotes/git-svn are changed (see
<em>$GIT_DIR/svn/**/.rev_map.*</em> in the FILES section below for details).
Follow <em>reset</em> with a <em>fetch</em> and then <em>git reset</em> or <em>git rebase</em> to
move local branches onto the new tree.</p></div>
<div class="dlist"><dl>
<dt class="hdlist1">
-r &lt;n&gt;
</dt>
<dt class="hdlist1">
--revision=&lt;n&gt;
</dt>
<dd>
<p>
        Specify the most recent revision to keep.  All later revisions
        are discarded.
</p>
</dd>
<dt class="hdlist1">
-p
</dt>
<dt class="hdlist1">
--parent
</dt>
<dd>
<p>
        Discard the specified revision as well, keeping the nearest
        parent instead.
</p>
</dd>
<dt class="hdlist1">
Example:
</dt>
<dd>
<p>
Assume you have local changes in "master", but you need to refetch "r2".
</p>
<div class="listingblock">
<div class="content">
<pre><code>    r1---r2---r3 remotes/git-svn
                \
                 A---B master</code></pre>
</div></div>
<div class="paragraph"><p>Fix the ignore-paths or SVN permissions problem that caused "r2" to
be incomplete in the first place.  Then:</p></div>
<div class="verseblock">
<pre class="content">git svn reset -r2 -p
git svn fetch</pre>
<div class="attribution">
</div></div>
<div class="listingblock">
<div class="content">
<pre><code>    r1---r2'--r3' remotes/git-svn
      \
       r2---r3---A---B master</code></pre>
</div></div>
<div class="paragraph"><p>Then fixup "master" with <em>git rebase</em>.
Do NOT use <em>git merge</em> or your history will not be compatible with a
future <em>dcommit</em>!</p></div>
<div class="verseblock">
<pre class="content">git rebase --onto remotes/git-svn A^ master</pre>
<div class="attribution">
</div></div>
<div class="listingblock">
<div class="content">
<pre><code>    r1---r2'--r3' remotes/git-svn
                \
                 A'--B' master</code></pre>
</div></div>
</dd>
</dl></div>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_options">OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
--shared[=(false|true|umask|group|all|world|everybody)]
</dt>
<dt class="hdlist1">
--template=&lt;template_directory&gt;
</dt>
<dd>
<p>
        Only used with the <em>init</em> command.
        These are passed directly to <em>git init</em>.
</p>
</dd>
<dt class="hdlist1">
-r &lt;arg&gt;
</dt>
<dt class="hdlist1">
--revision &lt;arg&gt;
</dt>
<dd>
<p>
           Used with the <em>fetch</em> command.
</p>
<div class="paragraph"><p>This allows revision ranges for partial/cauterized history
to be supported.  $NUMBER, $NUMBER1:$NUMBER2 (numeric ranges),
$NUMBER:HEAD, and BASE:$NUMBER are all supported.</p></div>
<div class="paragraph"><p>This can allow you to make partial mirrors when running fetch;
but is generally not recommended because history will be skipped
and lost.</p></div>
</dd>
<dt class="hdlist1">
-
</dt>
<dt class="hdlist1">
--stdin
</dt>
<dd>
<p>
        Only used with the <em>set-tree</em> command.
</p>
<div class="paragraph"><p>Read a list of commits from stdin and commit them in reverse
order.  Only the leading sha1 is read from each line, so
<em>git rev-list --pretty=oneline</em> output can be used.</p></div>
</dd>
<dt class="hdlist1">
--rmdir
</dt>
<dd>
<p>
        Only used with the <em>dcommit</em>, <em>set-tree</em> and <em>commit-diff</em> commands.
</p>
<div class="paragraph"><p>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.</p></div>
<div class="verseblock">
<pre class="content">config key: svn.rmdir</pre>
<div class="attribution">
</div></div>
</dd>
<dt class="hdlist1">
-e
</dt>
<dt class="hdlist1">
--edit
</dt>
<dd>
<p>
        Only used with the <em>dcommit</em>, <em>set-tree</em> and <em>commit-diff</em> commands.
</p>
<div class="paragraph"><p>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.</p></div>
<div class="verseblock">
<pre class="content">config key: svn.edit</pre>
<div class="attribution">
</div></div>
</dd>
<dt class="hdlist1">
-l&lt;num&gt;
</dt>
<dt class="hdlist1">
--find-copies-harder
</dt>
<dd>
<p>
        Only used with the <em>dcommit</em>, <em>set-tree</em> and <em>commit-diff</em> commands.
</p>
<div class="paragraph"><p>They are both passed directly to <em>git diff-tree</em>; see
<a href="git-diff-tree.html">git-diff-tree(1)</a> for more information.</p></div>
<div class="verseblock">
<pre class="content">config key: svn.l
config key: svn.findcopiesharder</pre>
<div class="attribution">
</div></div>
</dd>
<dt class="hdlist1">
-A&lt;filename&gt;
</dt>
<dt class="hdlist1">
--authors-file=&lt;filename&gt;
</dt>
<dd>
<p>
        Syntax is compatible with the file used by <em>git cvsimport</em> but
        an empty email address can be supplied with <em>&lt;&gt;</em>:
</p>
<div class="listingblock">
<div class="content">
<pre><code>        loginname = Joe User &lt;user@example.com&gt;</code></pre>
</div></div>
<div class="paragraph"><p>If this option is specified and <em>git svn</em> encounters an SVN
committer name that does not exist in the authors-file, <em>git svn</em>
will abort operation. The user will then have to add the
appropriate entry.  Re-running the previous <em>git svn</em> command
after the authors-file is modified should continue operation.</p></div>
<div class="verseblock">
<pre class="content">config key: svn.authorsfile</pre>
<div class="attribution">
</div></div>
</dd>
<dt class="hdlist1">
--authors-prog=&lt;filename&gt;
</dt>
<dd>
<p>
        If this option is specified, for each SVN committer name that
        does not exist in the authors file, the given file is executed
        with the committer name as the first argument.  The program is
        expected to return a single line of the form "Name &lt;email&gt;" or
        "Name &lt;&gt;", which will be treated as if included in the authors
        file.
</p>
<div class="paragraph"><p>Due to historical reasons a relative <em>filename</em> is first searched
relative to the current directory for <em>init</em> and <em>clone</em> and relative
to the root of the working tree for <em>fetch</em>. If <em>filename</em> is
not found, it is searched like any other command in <em>$PATH</em>.</p></div>
<div class="verseblock">
<pre class="content">config key: svn.authorsProg</pre>
<div class="attribution">
</div></div>
</dd>
<dt class="hdlist1">
-q
</dt>
<dt class="hdlist1">
--quiet
</dt>
<dd>
<p>
        Make <em>git svn</em> less verbose. Specify a second time to make it
        even less verbose.
</p>
</dd>
<dt class="hdlist1">
-m
</dt>
<dt class="hdlist1">
--merge
</dt>
<dt class="hdlist1">
-s&lt;strategy&gt;
</dt>
<dt class="hdlist1">
--strategy=&lt;strategy&gt;
</dt>
<dt class="hdlist1">
-p
</dt>
<dt class="hdlist1">
--preserve-merges
</dt>
<dd>
<p>
        These are only used with the <em>dcommit</em> and <em>rebase</em> commands.
</p>
<div class="paragraph"><p>Passed directly to <em>git rebase</em> when using <em>dcommit</em> if a
<em>git reset</em> cannot be used (see <em>dcommit</em>).</p></div>
</dd>
<dt class="hdlist1">
-n
</dt>
<dt class="hdlist1">
--dry-run
</dt>
<dd>
<p>
        This can be used with the <em>dcommit</em>, <em>rebase</em>, <em>branch</em> and
        <em>tag</em> commands.
</p>
<div class="paragraph"><p>For <em>dcommit</em>, print out the series of Git arguments that would show
which diffs would be committed to SVN.</p></div>
<div class="paragraph"><p>For <em>rebase</em>, display the local branch associated with the upstream svn
repository associated with the current branch and the URL of svn
repository that will be fetched from.</p></div>
<div class="paragraph"><p>For <em>branch</em> and <em>tag</em>, display the urls that will be used for copying when
creating the branch or tag.</p></div>
</dd>
<dt class="hdlist1">
--use-log-author
</dt>
<dd>
<p>
        When retrieving svn commits into Git (as part of <em>fetch</em>, <em>rebase</em>, or
        <em>dcommit</em> operations), look for the first <code>From:</code> or <code>Signed-off-by:</code> line
        in the log message and use that as the author string.
</p>
<div class="verseblock">
<pre class="content">config key: svn.useLogAuthor</pre>
<div class="attribution">
</div></div>
</dd>
<dt class="hdlist1">
--add-author-from
</dt>
<dd>
<p>
        When committing to svn from Git (as part of <em>set-tree</em> or <em>dcommit</em>
        operations), if the existing log message doesn&#8217;t already have a
        <code>From:</code> or <code>Signed-off-by:</code> line, append a <code>From:</code> line based on the
        Git commit&#8217;s author string.  If you use this, then <code>--use-log-author</code>
        will retrieve a valid author string for all commits.
</p>
<div class="verseblock">
<pre class="content">config key: svn.addAuthorFrom</pre>
<div class="attribution">
</div></div>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_advanced_options">ADVANCED OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
-i&lt;GIT_SVN_ID&gt;
</dt>
<dt class="hdlist1">
--id &lt;GIT_SVN_ID&gt;
</dt>
<dd>
<p>
        This sets GIT_SVN_ID (instead of using the environment).  This
        allows the user to override the default refname to fetch from
        when tracking a single URL.  The <em>log</em> and <em>dcommit</em> commands
        no longer require this switch as an argument.
</p>
</dd>
<dt class="hdlist1">
-R&lt;remote name&gt;
</dt>
<dt class="hdlist1">
--svn-remote &lt;remote name&gt;
</dt>
<dd>
<p>
        Specify the [svn-remote "&lt;remote name&gt;"] section to use,
        this allows SVN multiple repositories to be tracked.
        Default: "svn"
</p>
</dd>
<dt class="hdlist1">
--follow-parent
</dt>
<dd>
<p>
        This option is only relevant if we are tracking branches (using
        one of the repository layout options --trunk, --tags,
        --branches, --stdlayout). For each tracked branch, try to find
        out where its revision was copied from, and set
        a suitable parent in the first Git commit for the branch.
        This is especially helpful when we&#8217;re tracking a directory
        that has been moved around within the repository.  If this
        feature is disabled, the branches created by <em>git svn</em> will all
        be linear and not share any history, meaning that there will be
        no information on where branches were branched off or merged.
        However, following long/convoluted histories can take a long
        time, so disabling this feature may speed up the cloning
        process. This feature is enabled by default, use
        --no-follow-parent to disable it.
</p>
<div class="verseblock">
<pre class="content">config key: svn.followparent</pre>
<div class="attribution">
</div></div>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_config_file_only_options">CONFIG FILE-ONLY OPTIONS</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
svn.noMetadata
</dt>
<dt class="hdlist1">
svn-remote.&lt;name&gt;.noMetadata
</dt>
<dd>
<p>
        This gets rid of the <em>git-svn-id:</em> lines at the end of every commit.
</p>
<div class="paragraph"><p>This option can only be used for one-shot imports as <em>git svn</em>
will not be able to fetch again without metadata. Additionally,
if you lose your <em>$GIT_DIR/svn/**/.rev_map.*</em> files, <em>git svn</em> will not
be able to rebuild them.</p></div>
<div class="paragraph"><p>The <em>git svn log</em> command will not work on repositories using
this, either.  Using this conflicts with the <em>useSvmProps</em>
option for (hopefully) obvious reasons.</p></div>
<div class="paragraph"><p>This option is NOT recommended as it makes it difficult to track down
old references to SVN revision numbers in existing documentation, bug
reports and archives.  If you plan to eventually migrate from SVN to Git
and are certain about dropping SVN history, consider
<a href="git-filter-branch.html">git-filter-branch(1)</a> instead.  filter-branch also allows
reformatting of metadata for ease-of-reading and rewriting authorship
info for non-"svn.authorsFile" users.</p></div>
</dd>
<dt class="hdlist1">
svn.useSvmProps
</dt>
<dt class="hdlist1">
svn-remote.&lt;name&gt;.useSvmProps
</dt>
<dd>
<p>
        This allows <em>git svn</em> to re-map repository URLs and UUIDs from
        mirrors created using SVN::Mirror (or svk) for metadata.
</p>
<div class="paragraph"><p>If an SVN revision has a property, "svm:headrev", it is likely
that the revision was created by SVN::Mirror (also used by SVK).
The property contains a repository UUID and a revision.  We want
to make it look like we are mirroring the original URL, so
introduce a helper function that returns the original identity
URL and UUID, and use it when generating metadata in commit
messages.</p></div>
</dd>
<dt class="hdlist1">
svn.useSvnsyncProps
</dt>
<dt class="hdlist1">
svn-remote.&lt;name&gt;.useSvnsyncprops
</dt>
<dd>
<p>
        Similar to the useSvmProps option; this is for users
        of the svnsync(1) command distributed with SVN 1.4.x and
        later.
</p>
</dd>
<dt class="hdlist1">
svn-remote.&lt;name&gt;.rewriteRoot
</dt>
<dd>
<p>
        This allows users to create repositories from alternate
        URLs.  For example, an administrator could run <em>git svn</em> on the
        server locally (accessing via file://) but wish to distribute
        the repository with a public http:// or svn:// URL in the
        metadata so users of it will see the public URL.
</p>
</dd>
<dt class="hdlist1">
svn-remote.&lt;name&gt;.rewriteUUID
</dt>
<dd>
<p>
        Similar to the useSvmProps option; this is for users who need
        to remap the UUID manually. This may be useful in situations
        where the original UUID is not available via either useSvmProps
        or useSvnsyncProps.
</p>
</dd>
<dt class="hdlist1">
svn-remote.&lt;name&gt;.pushurl
</dt>
<dd>
<p>
        Similar to Git&#8217;s <code>remote.&lt;name&gt;.pushurl</code>, this key is designed
        to be used in cases where <em>url</em> points to an SVN repository
        via a read-only transport, to provide an alternate read/write
        transport. It is assumed that both keys point to the same
        repository. Unlike <em>commiturl</em>, <em>pushurl</em> is a base path. If
        either <em>commiturl</em> or <em>pushurl</em> could be used, <em>commiturl</em>
        takes precedence.
</p>
</dd>
<dt class="hdlist1">
svn.brokenSymlinkWorkaround
</dt>
<dd>
<p>
        This disables potentially expensive checks to workaround
        broken symlinks checked into SVN by broken clients.  Set this
        option to "false" if you track a SVN repository with many
        empty blobs that are not symlinks.  This option may be changed
        while <em>git svn</em> is running and take effect on the next
        revision fetched.  If unset, <em>git svn</em> assumes this option to
        be "true".
</p>
</dd>
<dt class="hdlist1">
svn.pathnameencoding
</dt>
<dd>
<p>
        This instructs git svn to recode pathnames to a given encoding.
        It can be used by windows users and by those who work in non-utf8
        locales to avoid corrupted file names with non-ASCII characters.
        Valid encodings are the ones supported by Perl&#8217;s Encode module.
</p>
</dd>
<dt class="hdlist1">
svn-remote.&lt;name&gt;.automkdirs
</dt>
<dd>
<p>
        Normally, the "git svn clone" and "git svn rebase" commands
        attempt to recreate empty directories that are in the
        Subversion repository.  If this option is set to "false", then
        empty directories will only be created if the "git svn mkdirs"
        command is run explicitly.  If unset, <em>git svn</em> assumes this
        option to be "true".
</p>
</dd>
</dl></div>
<div class="paragraph"><p>Since the noMetadata, rewriteRoot, rewriteUUID, useSvnsyncProps and useSvmProps
options all affect the metadata generated and used by <em>git svn</em>; they
<strong>must</strong> be set in the configuration file before any history is imported
and these settings should never be changed once they are set.</p></div>
<div class="paragraph"><p>Additionally, only one of these options can be used per svn-remote
section because they affect the <em>git-svn-id:</em> metadata line, except
for rewriteRoot and rewriteUUID which can be used together.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_basic_examples">BASIC EXAMPLES</h2>
<div class="sectionbody">
<div class="paragraph"><p>Tracking and contributing to the trunk of a Subversion-managed project
(ignoring tags and branches):</p></div>
<div class="listingblock">
<div class="content">
<pre><code># Clone a repo (like git clone):
        git svn clone http://svn.example.com/project/trunk
# Enter the newly cloned directory:
        cd trunk
# You should be on master branch, double-check with 'git branch'
        git branch
# Do some work and commit locally to Git:
        git commit ...
# Something is committed to SVN, rebase your local changes against the
# latest changes in SVN:
        git svn rebase
# Now commit your changes (that were committed previously using Git) to SVN,
# as well as automatically updating your working HEAD:
        git svn dcommit
# Append svn:ignore settings to the default Git exclude file:
        git svn show-ignore &gt;&gt; .git/info/exclude</code></pre>
</div></div>
<div class="paragraph"><p>Tracking and contributing to an entire Subversion-managed project
(complete with a trunk, tags and branches):</p></div>
<div class="listingblock">
<div class="content">
<pre><code># Clone a repo with standard SVN directory layout (like git clone):
        git svn clone http://svn.example.com/project --stdlayout --prefix svn/
# Or, if the repo uses a non-standard directory layout:
        git svn clone http://svn.example.com/project -T tr -b branch -t tag --prefix svn/
# View all branches and tags you have cloned:
        git branch -r
# Create a new branch in SVN
        git svn branch waldo
# Reset your master to trunk (or any other branch, replacing 'trunk'
# with the appropriate name):
        git reset --hard svn/trunk
# You may only dcommit to one branch/tag/trunk at a time.  The usage
# of dcommit/rebase/show-ignore should be the same as above.</code></pre>
</div></div>
<div class="paragraph"><p>The initial <em>git svn clone</em> can be quite time-consuming
(especially for large Subversion repositories). If multiple
people (or one person with multiple machines) want to use
<em>git svn</em> to interact with the same Subversion repository, you can
do the initial <em>git svn clone</em> to a repository on a server and
have each person clone that repository with <em>git clone</em>:</p></div>
<div class="listingblock">
<div class="content">
<pre><code># Do the initial import on a server
        ssh server "cd /pub &amp;&amp; git svn clone http://svn.example.com/project [options...]"
# Clone locally - make sure the refs/remotes/ space matches the server
        mkdir project
        cd project
        git init
        git remote add origin server:/pub/project
        git config --replace-all remote.origin.fetch '+refs/remotes/*:refs/remotes/*'
        git fetch
# Prevent fetch/pull from remote Git server in the future,
# we only want to use git svn for future updates
        git config --remove-section remote.origin
# Create a local branch from one of the branches just fetched
        git checkout -b master FETCH_HEAD
# Initialize 'git svn' locally (be sure to use the same URL and
# --stdlayout/-T/-b/-t/--prefix options as were used on server)
        git svn init http://svn.example.com/project [options...]
# Pull the latest changes from Subversion
        git svn rebase</code></pre>
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_rebase_vs_pull_merge">REBASE VS. PULL/MERGE</h2>
<div class="sectionbody">
<div class="paragraph"><p>Prefer to use <em>git svn rebase</em> or <em>git rebase</em>, rather than
<em>git pull</em> or <em>git merge</em> to synchronize unintegrated commits with a <em>git svn</em>
branch. Doing so will keep the history of unintegrated commits linear with
respect to the upstream SVN repository and allow the use of the preferred
<em>git svn dcommit</em> subcommand to push unintegrated commits back into SVN.</p></div>
<div class="paragraph"><p>Originally, <em>git svn</em> recommended that developers pulled or merged from
the <em>git svn</em> branch.  This was because the author favored
<code>git svn set-tree B</code> to commit a single head rather than the
<code>git svn set-tree A..B</code> notation to commit multiple commits. Use of
<em>git pull</em> or <em>git merge</em> with <code>git svn set-tree A..B</code> will cause non-linear
history to be flattened when committing into SVN and this can lead to merge
commits unexpectedly reversing previous commits in SVN.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_merge_tracking">MERGE TRACKING</h2>
<div class="sectionbody">
<div class="paragraph"><p>While <em>git svn</em> can track
copy history (including branches and tags) for repositories adopting a
standard layout, it cannot yet represent merge history that happened
inside git back upstream to SVN users.  Therefore it is advised that
users keep history as linear as possible inside Git to ease
compatibility with SVN (see the CAVEATS section below).</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_handling_of_svn_branches">HANDLING OF SVN BRANCHES</h2>
<div class="sectionbody">
<div class="paragraph"><p>If <em>git svn</em> is configured to fetch branches (and --follow-branches
is in effect), it sometimes creates multiple Git branches for one
SVN branch, where the additional branches have names of the form
<em>branchname@nnn</em> (with nnn an SVN revision number).  These additional
branches are created if <em>git svn</em> cannot find a parent commit for the
first commit in an SVN branch, to connect the branch to the history of
the other branches.</p></div>
<div class="paragraph"><p>Normally, the first commit in an SVN branch consists
of a copy operation. <em>git svn</em> will read this commit to get the SVN
revision the branch was created from. It will then try to find the
Git commit that corresponds to this SVN revision, and use that as the
parent of the branch. However, it is possible that there is no suitable
Git commit to serve as parent.  This will happen, among other reasons,
if the SVN branch is a copy of a revision that was not fetched by <em>git
svn</em> (e.g. because it is an old revision that was skipped with
<code>--revision</code>), or if in SVN a directory was copied that is not tracked
by <em>git svn</em> (such as a branch that is not tracked at all, or a
subdirectory of a tracked branch). In these cases, <em>git svn</em> will still
create a Git branch, but instead of using an existing Git commit as the
parent of the branch, it will read the SVN history of the directory the
branch was copied from and create appropriate Git commits.  This is
indicated by the message "Initializing parent: &lt;branchname&gt;".</p></div>
<div class="paragraph"><p>Additionally, it will create a special branch named
<em>&lt;branchname&gt;@&lt;SVN-Revision&gt;</em>, where &lt;SVN-Revision&gt; is the SVN revision
number the branch was copied from.  This branch will point to the newly
created parent commit of the branch.  If in SVN the branch was deleted
and later recreated from a different version, there will be multiple
such branches with an <em>@</em>.</p></div>
<div class="paragraph"><p>Note that this may mean that multiple Git commits are created for a
single SVN revision.</p></div>
<div class="paragraph"><p>An example: in an SVN repository with a standard
trunk/tags/branches layout, a directory trunk/sub is created in r.100.
In r.200, trunk/sub is branched by copying it to branches/. <em>git svn
clone -s</em> will then create a branch <em>sub</em>. It will also create new Git
commits for r.100 through r.199 and use these as the history of branch
<em>sub</em>. Thus there will be two Git commits for each revision from r.100
to r.199 (one containing trunk/, one containing trunk/sub/). Finally,
it will create a branch <em>sub@200</em> pointing to the new parent commit of
branch <em>sub</em> (i.e. the commit for r.200 and trunk/sub/).</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_caveats">CAVEATS</h2>
<div class="sectionbody">
<div class="paragraph"><p>For the sake of simplicity and interoperating with Subversion,
it is recommended that all <em>git svn</em> users clone, fetch and dcommit
directly from the SVN server, and avoid all <em>git clone</em>/<em>pull</em>/<em>merge</em>/<em>push</em>
operations between Git repositories and branches.  The recommended
method of exchanging code between Git branches and users is
<em>git format-patch</em> and <em>git am</em>, or just 'dcommit&#8217;ing to the SVN repository.</p></div>
<div class="paragraph"><p>Running <em>git merge</em> or <em>git pull</em> is NOT recommended on a branch you
plan to <em>dcommit</em> from because Subversion users cannot see any
merges you&#8217;ve made.  Furthermore, if you merge or pull from a Git branch
that is a mirror of an SVN branch, <em>dcommit</em> may commit to the wrong
branch.</p></div>
<div class="paragraph"><p>If you do merge, note the following rule: <em>git svn dcommit</em> will
attempt to commit on top of the SVN commit named in</p></div>
<div class="listingblock">
<div class="content">
<pre><code>git log --grep=^git-svn-id: --first-parent -1</code></pre>
</div></div>
<div class="paragraph"><p>You <em>must</em> therefore ensure that the most recent commit of the branch
you want to dcommit to is the <em>first</em> parent of the merge.  Chaos will
ensue otherwise, especially if the first parent is an older commit on
the same SVN branch.</p></div>
<div class="paragraph"><p><em>git clone</em> does not clone branches under the refs/remotes/ hierarchy or
any <em>git svn</em> metadata, or config.  So repositories created and managed with
using <em>git svn</em> should use <em>rsync</em> for cloning, if cloning is to be done
at all.</p></div>
<div class="paragraph"><p>Since <em>dcommit</em> uses rebase internally, any Git branches you <em>git push</em> to
before <em>dcommit</em> on will require forcing an overwrite of the existing ref
on the remote repository.  This is generally considered bad practice,
see the <a href="git-push.html">git-push(1)</a> documentation for details.</p></div>
<div class="paragraph"><p>Do not use the --amend option of <a href="git-commit.html">git-commit(1)</a> on a change you&#8217;ve
already dcommitted.  It is considered bad practice to --amend commits
you&#8217;ve already pushed to a remote repository for other users, and
dcommit with SVN is analogous to that.</p></div>
<div class="paragraph"><p>When cloning an SVN repository, if none of the options for describing
the repository layout is used (--trunk, --tags, --branches,
--stdlayout), <em>git svn clone</em> will create a Git repository with
completely linear history, where branches and tags appear as separate
directories in the working copy.  While this is the easiest way to get a
copy of a complete repository, for projects with many branches it will
lead to a working copy many times larger than just the trunk. Thus for
projects using the standard directory structure (trunk/branches/tags),
it is recommended to clone with option <code>--stdlayout</code>. If the project
uses a non-standard structure, and/or if branches and tags are not
required, it is easiest to only clone one directory (typically trunk),
without giving any repository layout options.  If the full history with
branches and tags is required, the options <code>--trunk</code> / <code>--branches</code> /
<code>--tags</code> must be used.</p></div>
<div class="paragraph"><p>When using multiple --branches or --tags, <em>git svn</em> does not automatically
handle name collisions (for example, if two branches from different paths have
the same name, or if a branch and a tag have the same name).  In these cases,
use <em>init</em> to set up your Git repository then, before your first <em>fetch</em>, edit
the $GIT_DIR/config file so that the branches and tags are associated
with different name spaces.  For example:</p></div>
<div class="literalblock">
<div class="content">
<pre><code>branches = stable/*:refs/remotes/svn/stable/*
branches = debug/*:refs/remotes/svn/debug/*</code></pre>
</div></div>
</div>
</div>
<div class="sect1">
<h2 id="_bugs">BUGS</h2>
<div class="sectionbody">
<div class="paragraph"><p>We ignore all SVN properties except svn:executable.  Any unhandled
properties are logged to $GIT_DIR/svn/&lt;refname&gt;/unhandled.log</p></div>
<div class="paragraph"><p>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&#8217;s quite difficult and time-consuming to get working for all
the possible corner cases (Git doesn&#8217;t do it, either).  Committing
renamed and copied files is fully supported if they&#8217;re similar enough
for Git to detect them.</p></div>
<div class="paragraph"><p>In SVN, it is possible (though discouraged) to commit changes to a tag
(because a tag is just a directory copy, thus technically the same as a
branch). When cloning an SVN repository, <em>git svn</em> cannot know if such a
commit to a tag will happen in the future. Thus it acts conservatively
and imports all SVN tags as branches, prefixing the tag name with <em>tags/</em>.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_configuration">CONFIGURATION</h2>
<div class="sectionbody">
<div class="paragraph"><p><em>git svn</em> stores [svn-remote] configuration information in the
repository $GIT_DIR/config file.  It is similar the core Git
[remote] sections except <em>fetch</em> keys do not accept glob
arguments; but they are instead handled by the <em>branches</em>
and <em>tags</em> keys.  Since some SVN repositories are oddly
configured with multiple projects glob expansions such those
listed below are allowed:</p></div>
<div class="listingblock">
<div class="content">
<pre><code>[svn-remote "project-a"]
        url = http://server.org/svn
        fetch = trunk/project-a:refs/remotes/project-a/trunk
        branches = branches/*/project-a:refs/remotes/project-a/branches/*
        branches = branches/release_*:refs/remotes/project-a/branches/release_*
        branches = branches/re*se:refs/remotes/project-a/branches/*
        tags = tags/*/project-a:refs/remotes/project-a/tags/*</code></pre>
</div></div>
<div class="paragraph"><p>Keep in mind that the <em>*</em> (asterisk) wildcard of the local ref
(right of the <em>:</em>) <strong>must</strong> be the farthest right path component;
however the remote wildcard may be anywhere as long as it&#8217;s an
independent path component (surrounded by <em>/</em> or EOL).   This
type of configuration is not automatically created by <em>init</em> and
should be manually entered with a text-editor or using <em>git config</em>.</p></div>
<div class="paragraph"><p>Also note that only one asterisk is allowed per word. For example:</p></div>
<div class="literalblock">
<div class="content">
<pre><code>branches = branches/re*se:refs/remotes/project-a/branches/*</code></pre>
</div></div>
<div class="paragraph"><p>will match branches <em>release</em>, <em>rese</em>, <em>re123se</em>, however</p></div>
<div class="literalblock">
<div class="content">
<pre><code>branches = branches/re*s*e:refs/remotes/project-a/branches/*</code></pre>
</div></div>
<div class="paragraph"><p>will produce an error.</p></div>
<div class="paragraph"><p>It is also possible to fetch a subset of branches or tags by using a
comma-separated list of names within braces. For example:</p></div>
<div class="listingblock">
<div class="content">
<pre><code>[svn-remote "huge-project"]
        url = http://server.org/svn
        fetch = trunk/src:refs/remotes/trunk
        branches = branches/{red,green}/src:refs/remotes/project-a/branches/*
        tags = tags/{1.0,2.0}/src:refs/remotes/project-a/tags/*</code></pre>
</div></div>
<div class="paragraph"><p>Multiple fetch, branches, and tags keys are supported:</p></div>
<div class="listingblock">
<div class="content">
<pre><code>[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/*</code></pre>
</div></div>
<div class="paragraph"><p>Creating a branch in such a configuration requires disambiguating which
location to use using the -d or --destination flag:</p></div>
<div class="listingblock">
<div class="content">
<pre><code>$ git svn branch -d branches/server release-2-3-0</code></pre>
</div></div>
<div class="paragraph"><p>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_DIR/svn/.metadata must be manually edited to remove
(or reset) branches-maxRev and/or tags-maxRev as appropriate.</p></div>
</div>
</div>
<div class="sect1">
<h2 id="_files">FILES</h2>
<div class="sectionbody">
<div class="dlist"><dl>
<dt class="hdlist1">
$GIT_DIR/svn/**/.rev_map.*
</dt>
<dd>
<p>
        Mapping between Subversion revision numbers and Git commit
        names.  In a repository where the noMetadata option is not set,
        this can be rebuilt from the git-svn-id: lines that are at the
        end of every commit (see the <em>svn.noMetadata</em> section above for
        details).
</p>
<div class="paragraph"><p><em>git svn fetch</em> and <em>git svn rebase</em> automatically update the rev_map
if it is missing or not up to date.  <em>git svn reset</em> automatically
rewinds it.</p></div>
</dd>
</dl></div>
</div>
</div>
<div class="sect1">
<h2 id="_see_also">SEE ALSO</h2>
<div class="sectionbody">
<div class="paragraph"><p><a href="git-rebase.html">git-rebase(1)</a></p></div>
</div>
</div>
<div class="sect1">
<h2 id="_git">GIT</h2>
<div class="sectionbody">
<div class="paragraph"><p>Part of the <a href="git.html">git(1)</a> suite</p></div>
</div>
</div>
</div>
<div id="footnotes"><hr /></div>
<div id="footer">
<div id="footer-text">
Last updated
 2018-07-18 13:16:04 PDT
</div>
</div>
</body>
</html>
