data\r
('from' SP <committish> LF)?\r
('merge' SP <committish> LF)?\r
- (filemodify | filedelete | filedeleteall)*\r
+ (filemodify | filedelete | filerename | filedeleteall)*\r
LF</tt></pre>\r
</div></div>\r
<p>where <tt><ref></tt> is the name of the branch to make the commit on.\r
commit message use a 0 length data. Commit messages are free-form\r
and are not interpreted by Git. Currently they must be encoded in\r
UTF-8, as fast-import does not permit other encodings to be specified.</p>\r
-<p>Zero or more <tt>filemodify</tt>, <tt>filedelete</tt> and <tt>filedeleteall</tt> commands\r
+<p>Zero or more <tt>filemodify</tt>, <tt>filedelete</tt>, <tt>filename</tt> and\r
+<tt>filedeleteall</tt> commands\r
may be included to update the contents of the branch prior to\r
creating the commit. These commands may be supplied in any order.\r
However it is recommended that a <tt>filedeleteall</tt> command preceed\r
-all <tt>filemodify</tt> commands in the same commit, as <tt>filedeleteall</tt>\r
+all <tt>filemodify</tt> and <tt>filerename</tt> commands in the same commit, as\r
+<tt>filedeleteall</tt>\r
wipes the branch clean (see below).</p>\r
<h4><tt>author</tt></h4>\r
<p>An <tt>author</tt> command may optionally appear, if the author information\r
</ul>\r
<p>It is recommended that <tt><path></tt> always be encoded using UTF-8.</p>\r
<h4><tt>filedelete</tt></h4>\r
-<p>Included in a <tt>commit</tt> command to remove a file from the branch.\r
-If the file removal makes its directory empty, the directory will\r
+<p>Included in a <tt>commit</tt> command to remove a file or recursively\r
+delete an entire directory from the branch. If the file or directory\r
+removal makes its parent directory empty, the parent directory will\r
be automatically removed too. This cascades up the tree until the\r
first non-empty directory or the root is reached.</p>\r
<div class="literalblock">\r
<div class="content">\r
<pre><tt> 'D' SP <path> LF</tt></pre>\r
</div></div>\r
-<p>here <tt><path></tt> is the complete path of the file to be removed.\r
+<p>here <tt><path></tt> is the complete path of the file or subdirectory to\r
+be removed from the branch.\r
See <tt>filemodify</tt> above for a detailed description of <tt><path></tt>.</p>\r
+<h4><tt>filerename</tt></h4>\r
+<p>Renames an existing file or subdirectory to a different location\r
+within the branch. The existing file or directory must exist. If\r
+the destination exists it will be replaced by the source directory.</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt> 'R' SP <path> SP <path> LF</tt></pre>\r
+</div></div>\r
+<p>here the first <tt><path></tt> is the source location and the second\r
+<tt><path></tt> is the destination. See <tt>filemodify</tt> above for a detailed\r
+description of what <tt><path></tt> may look like. To use a source path\r
+that contains SP the path must be quoted.</p>\r
+<p>A <tt>filerename</tt> command takes effect immediately. Once the source\r
+location has been renamed to the destination any future commands\r
+applied to the source location will create new files there and not\r
+impact the destination of the rename.</p>\r
<h4><tt>filedeleteall</tt></h4>\r
<p>Included in a <tt>commit</tt> command to remove all files (and also all\r
directories) from the branch. This command resets the internal\r
</div>\r
<div id="footer">\r
<div id="footer-text">\r
-Last updated 16-Jun-2007 09:49:03 UTC\r
+Last updated 10-Jul-2007 07:49:19 UTC\r
</div>\r
</div>\r
</body>\r
data
('from' SP <committish> LF)?
('merge' SP <committish> LF)?
- (filemodify | filedelete | filedeleteall)*
+ (filemodify | filedelete | filerename | filedeleteall)*
LF
....
and are not interpreted by Git. Currently they must be encoded in
UTF-8, as fast-import does not permit other encodings to be specified.
-Zero or more `filemodify`, `filedelete` and `filedeleteall` commands
+Zero or more `filemodify`, `filedelete`, `filename` and
+`filedeleteall` commands
may be included to update the contents of the branch prior to
creating the commit. These commands may be supplied in any order.
However it is recommended that a `filedeleteall` command preceed
-all `filemodify` commands in the same commit, as `filedeleteall`
+all `filemodify` and `filerename` commands in the same commit, as
+`filedeleteall`
wipes the branch clean (see below).
`author`
`filedelete`
^^^^^^^^^^^^
-Included in a `commit` command to remove a file from the branch.
-If the file removal makes its directory empty, the directory will
+Included in a `commit` command to remove a file or recursively
+delete an entire directory from the branch. If the file or directory
+removal makes its parent directory empty, the parent directory will
be automatically removed too. This cascades up the tree until the
first non-empty directory or the root is reached.
'D' SP <path> LF
....
-here `<path>` is the complete path of the file to be removed.
+here `<path>` is the complete path of the file or subdirectory to
+be removed from the branch.
See `filemodify` above for a detailed description of `<path>`.
+`filerename`
+^^^^^^^^^^^^
+Renames an existing file or subdirectory to a different location
+within the branch. The existing file or directory must exist. If
+the destination exists it will be replaced by the source directory.
+
+....
+ 'R' SP <path> SP <path> LF
+....
+
+here the first `<path>` is the source location and the second
+`<path>` is the destination. See `filemodify` above for a detailed
+description of what `<path>` may look like. To use a source path
+that contains SP the path must be quoted.
+
+A `filerename` command takes effect immediately. Once the source
+location has been renamed to the destination any future commands
+applied to the source location will create new files there and not
+impact the destination of the rename.
+
`filedeleteall`
^^^^^^^^^^^^^^^
Included in a `commit` command to remove all files (and also all