Autogenerated HTML docs for v1.2.2-g50319
authorJunio C Hamano <junio@hera.kernel.org>
Wed, 22 Feb 2006 10:44:55 +0000 (10:44 +0000)
committerJunio C Hamano <junio@hera.kernel.org>
Wed, 22 Feb 2006 10:44:55 +0000 (10:44 +0000)
14 files changed:
git-add.html
git-add.txt
git-ls-files.html
git-ls-files.txt
git-pack-objects.html
git-pack-objects.txt
git-push.html
git-push.txt
git-rebase.html
git-rebase.txt
git-repack.html
git-repack.txt
git-update-index.html
git-update-index.txt

index f47ba0864754c956e4243b34d40edf54ce71b796..bc76ff8af98877e1c243d75b51acf3c79591d6f8 100644 (file)
@@ -3,7 +3,7 @@
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
 <head>\r
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
-<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<meta name="generator" content="AsciiDoc 7.0.2" />\r
 <style type="text/css">\r
 /* Debug borders */\r
 p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
@@ -272,7 +272,7 @@ git-add(1) Manual Page
 </div>\r
 <h2>SYNOPSIS</h2>\r
 <div class="sectionbody">\r
-<p><em>git-add</em> [-n] [-v] &lt;file&gt;&#8230;</p>\r
+<p><em>git-add</em> [-n] [-v] [--] &lt;file&gt;&#8230;</p>\r
 </div>\r
 <h2>DESCRIPTION</h2>\r
 <div class="sectionbody">\r
@@ -306,6 +306,16 @@ for people used to do "cvs add".</p>
         Be verbose.\r
 </p>\r
 </dd>\r
+<dt>\r
+&#8212;\r
+</dt>\r
+<dd>\r
+<p>\r
+        This option can be used to separate command-line options from\r
+        the list of files, (useful when filenames might be mistaken\r
+        for command-line options).\r
+</p>\r
+</dd>\r
 </dl>\r
 </div>\r
 <h2>DISCUSSION</h2>\r
@@ -371,7 +381,7 @@ git-add git-*.sh
 </div>\r
 <div id="footer">\r
 <div id="footer-text">\r
-Last updated 06-Jan-2006 17:11:58 PDT\r
+Last updated 22-Feb-2006 10:44:46 UTC\r
 </div>\r
 </div>\r
 </body>\r
index 89e461402e6d1476c192daca0c24700707ca432b..7e293834d18982e7ae5d1d6fd057304994978318 100644 (file)
@@ -7,7 +7,7 @@ git-add - Add files to the index file.
 
 SYNOPSIS
 --------
-'git-add' [-n] [-v] <file>...
+'git-add' [-n] [-v] [--] <file>...
 
 DESCRIPTION
 -----------
@@ -26,6 +26,11 @@ OPTIONS
 -v::
         Be verbose.
 
+--::
+       This option can be used to separate command-line options from
+       the list of files, (useful when filenames might be mistaken
+       for command-line options).
+
 
 DISCUSSION
 ----------
index 129ef2b07b0f1ed10c40a2a56db51baf24707fb2..ed81380b308cbc003ef1fcee0478e52704704906 100644 (file)
@@ -272,13 +272,15 @@ git-ls-files(1) Manual Page
 </div>\r
 <h2>SYNOPSIS</h2>\r
 <div class="sectionbody">\r
-<p><em>git-ls-files</em> [-z] [-t]\r
+<div class="verseblock">\r
+<div class="content"><em>git-ls-files</em> [-z] [-t] [-v]\r
                 (--[cached|deleted|others|ignored|stage|unmerged|killed|modified])*\r
                 (-[c|d|o|i|s|u|k|m])*\r
                 [-x &lt;pattern&gt;|--exclude=&lt;pattern&gt;]\r
                 [-X &lt;file&gt;|--exclude-from=&lt;file&gt;]\r
                 [--exclude-per-directory=&lt;file&gt;]\r
-                [--full-name] [--] [&lt;file&gt;]*</p>\r
+                [--error-unmatch]\r
+                [--full-name] [--] [&lt;file&gt;]*</div></div>\r
 </div>\r
 <h2>DESCRIPTION</h2>\r
 <div class="sectionbody">\r
@@ -402,6 +404,15 @@ shown:</p>
 </p>\r
 </dd>\r
 <dt>\r
+--error-unmatch\r
+</dt>\r
+<dd>\r
+<p>\r
+        If any &lt;file&gt; does not appear in the index, treat this as an\r
+        error (return 1).\r
+</p>\r
+</dd>\r
+<dt>\r
 -t\r
 </dt>\r
 <dd>\r
@@ -461,6 +472,15 @@ other
 </table></div>\r
 </dd>\r
 <dt>\r
+-v\r
+</dt>\r
+<dd>\r
+<p>\r
+        Similar to <tt>-t</tt>, but use lowercase letters for files\r
+        that are marked as <em>always matching index</em>.\r
+</p>\r
+</dd>\r
+<dt>\r
 --full-name\r
 </dt>\r
 <dd>\r
@@ -640,7 +660,7 @@ otherwise, it is a shell glob pattern, suitable for
 </div>\r
 <div id="footer">\r
 <div id="footer-text">\r
-Last updated 14-Feb-2006 07:59:59 UTC\r
+Last updated 22-Feb-2006 10:44:46 UTC\r
 </div>\r
 </div>\r
 </body>\r
index fe5341295c55af55d521454ac5ae98b225f1eb32..e813f8420275f5b95810646c2a43c35f57a5ba70 100644 (file)
@@ -8,12 +8,14 @@ git-ls-files - Information about files in the index/working directory
 
 SYNOPSIS
 --------
-'git-ls-files' [-z] [-t]
+[verse]
+'git-ls-files' [-z] [-t] [-v]
                (--[cached|deleted|others|ignored|stage|unmerged|killed|modified])\*
                (-[c|d|o|i|s|u|k|m])\*
                [-x <pattern>|--exclude=<pattern>]
                [-X <file>|--exclude-from=<file>]
                [--exclude-per-directory=<file>] 
+               [--error-unmatch]
                [--full-name] [--] [<file>]\*
 
 DESCRIPTION
@@ -72,6 +74,10 @@ OPTIONS
        read additional exclude patterns that apply only to the
        directory and its subdirectories in <file>.
 
+--error-unmatch::
+       If any <file> does not appear in the index, treat this as an
+       error (return 1).
+
 -t::
        Identify the file status with the following tags (followed by
        a space) at the start of each line:
@@ -82,6 +88,10 @@ OPTIONS
        K::     to be killed
        ?::     other
 
+-v::
+       Similar to `-t`, but use lowercase letters for files
+       that are marked as 'always matching index'.
+
 --full-name::
        When run from a subdirectory, the command usually
        outputs paths relative to the current directory.  This
index e5635bcdc6565ddcdd792ff8c26fe1e1cb35874f..b54eb917712e097a1a55377df8d2c5f8279606c9 100644 (file)
@@ -3,7 +3,7 @@
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
 <head>\r
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
-<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<meta name="generator" content="AsciiDoc 7.0.2" />\r
 <style type="text/css">\r
 /* Debug borders */\r
 p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
@@ -272,7 +272,10 @@ git-pack-objects(1) Manual Page
 </div>\r
 <h2>SYNOPSIS</h2>\r
 <div class="sectionbody">\r
-<p><em>git-pack-objects</em> [--non-empty] [--local] [--incremental] [--window=N] [--depth=N] {--stdout | base-name} &lt; object-list</p>\r
+<div class="verseblock">\r
+<div class="content"><em>git-pack-objects</em> [-q] [--no-reuse-delta] [--non-empty]\r
+        [--local] [--incremental] [--window=N] [--depth=N]\r
+        {--stdout | base-name} &lt; object-list</div></div>\r
 </div>\r
 <h2>DESCRIPTION</h2>\r
 <div class="sectionbody">\r
@@ -291,6 +294,9 @@ transport by their peers.</p>
 <p>Placing both in the pack/ subdirectory of $GIT_OBJECT_DIRECTORY (or\r
 any of the directories on $GIT_ALTERNATE_OBJECT_DIRECTORIES)\r
 enables git to read from such an archive.</p>\r
+<p>In a packed archive, an object is either stored as a compressed\r
+whole, or as a difference from some other object.  The latter is\r
+often called a delta.</p>\r
 </div>\r
 <h2>OPTIONS</h2>\r
 <div class="sectionbody">\r
@@ -364,6 +370,27 @@ base-name
         least one object.\r
 </p>\r
 </dd>\r
+<dt>\r
+-q\r
+</dt>\r
+<dd>\r
+<p>\r
+        This flag makes the command not to report its progress\r
+        on the standard error stream.\r
+</p>\r
+</dd>\r
+<dt>\r
+--no-reuse-delta\r
+</dt>\r
+<dd>\r
+<p>\r
+        When creating a packed archive in a repository that\r
+        has existing packs, the command reuses existing deltas.\r
+        This sometimes results in a slightly suboptimal pack.\r
+        This flag tells the command not to reuse existing deltas\r
+        but compute them from scratch.\r
+</p>\r
+</dd>\r
 </dl>\r
 </div>\r
 <h2>Author</h2>\r
@@ -385,7 +412,7 @@ base-name
 </div>\r
 <div id="footer">\r
 <div id="footer-text">\r
-Last updated 06-Jan-2006 17:12:41 PDT\r
+Last updated 22-Feb-2006 10:44:47 UTC\r
 </div>\r
 </div>\r
 </body>\r
index 2d67d3911ed9e6081534f5311b0a76c632f73a6d..4cb2e83faa76c4a251fc37686c738093b31606b4 100644 (file)
@@ -8,7 +8,10 @@ git-pack-objects - Create a packed archive of objects.
 
 SYNOPSIS
 --------
-'git-pack-objects' [--non-empty] [--local] [--incremental] [--window=N] [--depth=N] {--stdout | base-name} < object-list
+[verse]
+'git-pack-objects' [-q] [--no-reuse-delta] [--non-empty]
+       [--local] [--incremental] [--window=N] [--depth=N]
+       {--stdout | base-name} < object-list
 
 
 DESCRIPTION
@@ -32,6 +35,10 @@ Placing both in the pack/ subdirectory of $GIT_OBJECT_DIRECTORY (or
 any of the directories on $GIT_ALTERNATE_OBJECT_DIRECTORIES)
 enables git to read from such an archive.
 
+In a packed archive, an object is either stored as a compressed
+whole, or as a difference from some other object.  The latter is
+often called a delta.
+
 
 OPTIONS
 -------
@@ -74,6 +81,18 @@ base-name::
         Only create a packed archive if it would contain at
         least one object.
 
+-q::
+       This flag makes the command not to report its progress
+       on the standard error stream.
+
+--no-reuse-delta::
+       When creating a packed archive in a repository that
+       has existing packs, the command reuses existing deltas.
+       This sometimes results in a slightly suboptimal pack.
+       This flag tells the command not to reuse existing deltas
+       but compute them from scratch.
+
+
 Author
 ------
 Written by Linus Torvalds <torvalds@osdl.org>
index 5bf5b062d0ac3a69e35b8c27e27af2af344e0c6c..69ec97713f1bb5ebaa4e0a1e1dc4d713624da4f4 100644 (file)
@@ -312,6 +312,11 @@ four parents before the current master head).</p>
 to fast forward the remote ref that matches &lt;dst&gt;.  If\r
 the optional plus <tt>+</tt> is used, the remote ref is updated\r
 even if it does not result in a fast forward update.</p>\r
+<p>Note: If no explicit refspec is found, (that is neither\r
+on the command line nor in any Push line of the\r
+corresponding remotes file---see below), then all the\r
+refs that exist both on the local side and on the remote\r
+side are updated.</p>\r
 <p>Some short-cut notations are also supported.</p>\r
 <ul>\r
 <li>\r
@@ -496,7 +501,7 @@ Pull: refs/heads/&lt;head&gt;:&lt;remote&gt;</tt></pre>
 </div>\r
 <div id="footer">\r
 <div id="footer-text">\r
-Last updated 07-Feb-2006 08:04:31 UTC\r
+Last updated 22-Feb-2006 10:44:47 UTC\r
 </div>\r
 </div>\r
 </body>\r
index 5b891105b2f9b425db61ee778a7f49eabf3ebcc5..6f4a48a109acf4fc512aa6dff6254db27fdeeb25 100644 (file)
@@ -43,6 +43,12 @@ to fast forward the remote ref that matches <dst>.  If
 the optional plus `+` is used, the remote ref is updated
 even if it does not result in a fast forward update.
 +
+Note: If no explicit refspec is found, (that is neither
+on the command line nor in any Push line of the
+corresponding remotes file---see below), then all the
+refs that exist both on the local side and on the remote
+side are updated.
++
 Some short-cut notations are also supported.
 +
 * `tag <tag>` means the same as `refs/tags/<tag>:refs/tags/<tag>`.
index bf6487331c630265cb14b68d83f011fff5ab6c7d..bf0a3af40a4d503fb18a367d35a9103e134d1662 100644 (file)
@@ -3,7 +3,7 @@
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
 <head>\r
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
-<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<meta name="generator" content="AsciiDoc 7.0.2" />\r
 <style type="text/css">\r
 /* Debug borders */\r
 p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
@@ -272,16 +272,65 @@ git-rebase(1) Manual Page
 </div>\r
 <h2>SYNOPSIS</h2>\r
 <div class="sectionbody">\r
-<p><em>git-rebase</em> &lt;upstream&gt; [&lt;head&gt;]</p>\r
+<p><em>git-rebase</em> [--onto &lt;newbase&gt;] &lt;upstream&gt; [&lt;branch&gt;]</p>\r
 </div>\r
 <h2>DESCRIPTION</h2>\r
 <div class="sectionbody">\r
-<p>Rebases local commits to the new head of the upstream tree.</p>\r
+<p>git-rebase applies to &lt;upstream&gt; (or optionally to &lt;newbase&gt;) commits\r
+from &lt;branch&gt; that do not appear in &lt;upstream&gt;. When &lt;branch&gt; is not\r
+specified it defaults to the current branch (HEAD).</p>\r
+<p>When git-rebase is complete, &lt;branch&gt; will be updated to point to the\r
+newly created line of commit objects, so the previous line will not be\r
+accessible unless there are other references to it already.</p>\r
+<p>Assume the following history exists and the current branch is "topic":</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>      A---B---C topic\r
+     /\r
+D---E---F---G master</tt></pre>\r
+</div></div>\r
+<p>From this point, the result of the following commands:</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>git-rebase master\r
+git-rebase master topic</tt></pre>\r
+</div></div>\r
+<p>would be:</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>              A'--B'--C' topic\r
+             /\r
+D---E---F---G master</tt></pre>\r
+</div></div>\r
+<p>While, starting from the same point, the result of the following\r
+commands:</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>git-rebase --onto master~1 master\r
+git-rebase --onto master~1 master topic</tt></pre>\r
+</div></div>\r
+<p>would be:</p>\r
+<div class="literalblock">\r
+<div class="content">\r
+<pre><tt>          A'--B'--C' topic\r
+         /\r
+D---E---F---G master</tt></pre>\r
+</div></div>\r
 </div>\r
 <h2>OPTIONS</h2>\r
 <div class="sectionbody">\r
 <dl>\r
 <dt>\r
+&lt;newbase&gt;\r
+</dt>\r
+<dd>\r
+<p>\r
+        Starting point at which to create the new commits. If the\r
+        --onto option is not specified, the starting point is\r
+        &lt;upstream&gt;.\r
+</p>\r
+</dd>\r
+<dt>\r
 &lt;upstream&gt;\r
 </dt>\r
 <dd>\r
@@ -313,7 +362,7 @@ git-rebase(1) Manual Page
 </div>\r
 <div id="footer">\r
 <div id="footer-text">\r
-Last updated 27-Dec-2005 00:16:32 PDT\r
+Last updated 22-Feb-2006 10:44:47 UTC\r
 </div>\r
 </div>\r
 </body>\r
index 16c158f439c7299b92c4419d8a6233ef20fed914..f037d1280eb629339d82bb1eabf0ede7a1e25708 100644 (file)
@@ -7,14 +7,54 @@ git-rebase - Rebase local commits to new upstream head.
 
 SYNOPSIS
 --------
-'git-rebase' <upstream> [<head>]
+'git-rebase' [--onto <newbase>] <upstream> [<branch>]
 
 DESCRIPTION
 -----------
-Rebases local commits to the new head of the upstream tree.
+git-rebase applies to <upstream> (or optionally to <newbase>) commits
+from <branch> that do not appear in <upstream>. When <branch> is not
+specified it defaults to the current branch (HEAD).
+
+When git-rebase is complete, <branch> will be updated to point to the
+newly created line of commit objects, so the previous line will not be
+accessible unless there are other references to it already.
+
+Assume the following history exists and the current branch is "topic":
+
+          A---B---C topic
+         /
+    D---E---F---G master
+
+From this point, the result of the following commands:
+
+    git-rebase master
+    git-rebase master topic
+
+would be:
+
+                  A'--B'--C' topic
+                 /
+    D---E---F---G master
+
+While, starting from the same point, the result of the following
+commands:
+
+    git-rebase --onto master~1 master
+    git-rebase --onto master~1 master topic
+
+would be:
+
+              A'--B'--C' topic
+             /
+    D---E---F---G master
 
 OPTIONS
 -------
+<newbase>::
+       Starting point at which to create the new commits. If the
+       --onto option is not specified, the starting point is
+       <upstream>.
+
 <upstream>::
        Upstream branch to compare against.
 
index 4066cb80a661a33352b6deb150f3aef2fdc2f457..1fada778c30e7e669bc252f66593070e46b2d392 100644 (file)
@@ -3,7 +3,7 @@
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
 <head>\r
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
-<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<meta name="generator" content="AsciiDoc 7.0.2" />\r
 <style type="text/css">\r
 /* Debug borders */\r
 p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
@@ -272,7 +272,7 @@ git-repack(1) Manual Page
 </div>\r
 <h2>SYNOPSIS</h2>\r
 <div class="sectionbody">\r
-<p><em>git-repack</em> [-a] [-d] [-l] [-n]</p>\r
+<p><em>git-repack</em> [-a] [-d] [-f] [-l] [-n] [-q]</p>\r
 </div>\r
 <h2>DESCRIPTION</h2>\r
 <div class="sectionbody">\r
@@ -319,6 +319,24 @@ engines, disk storage, etc.</p>
 </p>\r
 </dd>\r
 <dt>\r
+-f\r
+</dt>\r
+<dd>\r
+<p>\r
+        Pass the <tt>--no-reuse-delta</tt> option to <tt>git pack-objects</tt>, see\r
+        <a href="git-pack-objects.html">git-pack-objects(1)</a>.\r
+</p>\r
+</dd>\r
+<dt>\r
+-q\r
+</dt>\r
+<dd>\r
+<p>\r
+        Pass the <tt>-q</tt> option to <tt>git pack-objects</tt>, see\r
+        <a href="git-pack-objects.html">git-pack-objects(1)</a>.\r
+</p>\r
+</dd>\r
+<dt>\r
 -n\r
 </dt>\r
 <dd>\r
@@ -348,7 +366,7 @@ engines, disk storage, etc.</p>
 </div>\r
 <div id="footer">\r
 <div id="footer-text">\r
-Last updated 27-Dec-2005 00:16:34 PDT\r
+Last updated 22-Feb-2006 10:44:48 UTC\r
 </div>\r
 </div>\r
 </body>\r
index 9060fe889724182e5478df72a8b9331f7411601c..6c0f792dad8f23833a8a28cf08aec74aafcbeb4a 100644 (file)
@@ -9,7 +9,7 @@ objects into pack files.
 
 SYNOPSIS
 --------
-'git-repack' [-a] [-d] [-l] [-n]
+'git-repack' [-a] [-d] [-f] [-l] [-n] [-q]
 
 DESCRIPTION
 -----------
@@ -43,6 +43,14 @@ OPTIONS
         Pass the `--local` option to `git pack-objects`, see
         gitlink:git-pack-objects[1].
 
+-f::
+        Pass the `--no-reuse-delta` option to `git pack-objects`, see
+        gitlink:git-pack-objects[1].
+
+-q::
+        Pass the `-q` option to `git pack-objects`, see
+        gitlink:git-pack-objects[1].
+
 -n::
         Do not update the server information with
         `git update-server-info`.
index d97d30dcefd9f617265ede354d33dcbebe415969..1969989332f8c9d7d5f76dd6cfef23e8982828c6 100644 (file)
@@ -3,7 +3,7 @@
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">\r
 <head>\r
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />\r
-<meta name="generator" content="AsciiDoc 7.0.1" />\r
+<meta name="generator" content="AsciiDoc 7.0.2" />\r
 <style type="text/css">\r
 /* Debug borders */\r
 p, li, dt, dd, div, pre, h1, h2, h3, h4, h5, h6 {\r
@@ -272,15 +272,18 @@ git-update-index(1) Manual Page
 </div>\r
 <h2>SYNOPSIS</h2>\r
 <div class="sectionbody">\r
-<p><em>git-update-index</em>\r
+<div class="verseblock">\r
+<div class="content"><em>git-update-index</em>\r
              [--add] [--remove | --force-remove] [--replace]\r
              [--refresh [-q] [--unmerged] [--ignore-missing]]\r
              [--cacheinfo &lt;mode&gt; &lt;object&gt; &lt;file&gt;]*\r
              [--chmod=(+|-)x]\r
+             [--assume-unchanged | --no-assume-unchanged]\r
+             [--really-refresh]\r
              [--info-only] [--index-info]\r
              [-z] [--stdin]\r
              [--verbose]\r
-             [--] [&lt;file&gt;]*</p>\r
+             [--] [&lt;file&gt;]*</div></div>\r
 </div>\r
 <h2>DESCRIPTION</h2>\r
 <div class="sectionbody">\r
@@ -375,6 +378,23 @@ using the various options:</p>
 </p>\r
 </dd>\r
 <dt>\r
+--assume-unchanged, --no-assume-unchanged\r
+</dt>\r
+<dd>\r
+<p>\r
+        When these flags are specified, the object name recorded\r
+        for the paths are not updated.  Instead, these options\r
+        sets and unsets the "assume unchanged" bit for the\r
+        paths.  When the "assume unchanged" bit is on, git stops\r
+        checking the working tree files for possible\r
+        modifications, so you need to manually unset the bit to\r
+        tell git when you change the working tree file. This is\r
+        sometimes helpful when working with a big project on a\r
+        filesystem that has very slow lstat(2) system call\r
+        (e.g. cifs).\r
+</p>\r
+</dd>\r
+<dt>\r
 --info-only\r
 </dt>\r
 <dd>\r
@@ -541,6 +561,33 @@ for that path.  After the above, we would end up with this:</p>
 100755 8a1218a1024a212bb3db30becd860315f9f3ac52 2       frotz</tt></pre>\r
 </div></div>\r
 </div>\r
+<h2>Using "assume unchanged" bit</h2>\r
+<div class="sectionbody">\r
+<p>Many operations in git depend on your filesystem to have an\r
+efficient <tt>lstat(2)</tt> implementation, so that <tt>st_mtime</tt>\r
+information for working tree files can be cheaply checked to see\r
+if the file contents have changed from the version recorded in\r
+the index file.  Unfortunately, some filesystems have\r
+inefficient <tt>lstat(2)</tt>.  If your filesystem is one of them, you\r
+can set "assume unchanged" bit to paths you have not changed to\r
+cause git not to do this check.  Note that setting this bit on a\r
+path does not mean git will check the contents of the file to\r
+see if it has changed &#8212; it makes git to omit any checking and\r
+assume it has <strong>not</strong> changed.  When you make changes to working\r
+tree files, you have to explicitly tell git about it by dropping\r
+"assume unchanged" bit, either before or after you modify them.</p>\r
+<p>In order to set "assume unchanged" bit, use <tt>--assume-unchanged</tt>\r
+option.  To unset, use <tt>--no-assume-unchanged</tt>.</p>\r
+<p>The command looks at <tt>core.ignorestat</tt> configuration variable.  When\r
+this is true, paths updated with <tt>git-update-index paths&#8230;</tt> and\r
+paths updated with other git commands that update both index and\r
+working tree (e.g. <tt>git-apply --index</tt>, <tt>git-checkout-index -u</tt>,\r
+and <tt>git-read-tree -u</tt>) are automatically marked as "assume\r
+unchanged".  Note that "assume unchanged" bit is <strong>not</strong> set if\r
+<tt>git-update-index --refresh</tt> finds the working tree file matches\r
+the index (use <tt>git-update-index --really-refresh</tt> if you want\r
+to mark them as "assume unchanged").</p>\r
+</div>\r
 <h2>Examples</h2>\r
 <div class="sectionbody">\r
 <p>To update and refresh only the files already checked out:</p>\r
@@ -548,6 +595,34 @@ for that path.  After the above, we would end up with this:</p>
 <div class="content">\r
 <pre><tt>$ git-checkout-index -n -f -a &amp;&amp; git-update-index --ignore-missing --refresh</tt></pre>\r
 </div></div>\r
+<p>On an inefficient filesystem with <tt>core.ignorestat</tt> set:</p>\r
+<div class="listingblock">\r
+<div class="content">\r
+<pre><tt>$ git update-index --really-refresh <b>(1)</b>\r
+$ git update-index --no-assume-unchanged foo.c <b>(2)</b>\r
+$ git diff --name-only <b>(3)</b>\r
+$ edit foo.c\r
+$ git diff --name-only <b>(4)</b>\r
+M foo.c\r
+$ git update-index foo.c <b>(5)</b>\r
+$ git diff --name-only <b>(6)</b>\r
+$ edit foo.c\r
+$ git diff --name-only <b>(7)</b>\r
+$ git update-index --no-assume-unchanged foo.c <b>(8)</b>\r
+$ git diff --name-only <b>(9)</b>\r
+M foo.c\r
+\r
+<b>(1)</b> forces lstat(2) to set "assume unchanged" bits for paths\r
+    that match index.\r
+<b>(2)</b> mark the path to be edited.\r
+<b>(3)</b> this does lstat(2) and finds index matches the path.\r
+<b>(4)</b> this does lstat(2) and finds index does not match the path.\r
+<b>(5)</b> registering the new version to index sets "assume unchanged" bit.\r
+<b>(6)</b> and it is assumed unchanged.\r
+<b>(7)</b> even after you edit it.\r
+<b>(8)</b> you can tell about the change after the fact.\r
+<b>(9)</b> now it checks with lstat(2) and finds it has been changed.</tt></pre>\r
+</div></div>\r
 </div>\r
 <h2>Configuration</h2>\r
 <div class="sectionbody">\r
@@ -558,6 +633,8 @@ This causes the command to ignore differences in file modes recorded
 in the index and the file mode on the filesystem if they differ only on\r
 executable bit.   On such an unfortunate filesystem, you may\r
 need to use <tt>git-update-index --chmod=</tt>.</p>\r
+<p>The command looks at <tt>core.ignorestat</tt> configuration variable.  See\r
+<em>Using "assume unchanged" bit</em> section above.</p>\r
 </div>\r
 <h2>See Also</h2>\r
 <div class="sectionbody">\r
@@ -577,7 +654,7 @@ need to use <tt>git-update-index --chmod=</tt>.</p>
 </div>\r
 <div id="footer">\r
 <div id="footer-text">\r
-Last updated 27-Dec-2005 00:16:52 PDT\r
+Last updated 22-Feb-2006 10:44:48 UTC\r
 </div>\r
 </div>\r
 </body>\r
index c74311dabd28f144c06f5f55182269d25691a270..0a1b0ad56de61bba8f5dd19df79e2e73c4f759b7 100644 (file)
@@ -8,11 +8,14 @@ git-update-index - Modifies the index or directory cache
 
 SYNOPSIS
 --------
+[verse]
 'git-update-index'
             [--add] [--remove | --force-remove] [--replace] 
             [--refresh [-q] [--unmerged] [--ignore-missing]]
             [--cacheinfo <mode> <object> <file>]\*
             [--chmod=(+|-)x]
+            [--assume-unchanged | --no-assume-unchanged]
+            [--really-refresh]
             [--info-only] [--index-info]
             [-z] [--stdin]
             [--verbose]
@@ -65,6 +68,18 @@ OPTIONS
 --chmod=(+|-)x::
         Set the execute permissions on the updated files.        
 
+--assume-unchanged, --no-assume-unchanged::
+       When these flags are specified, the object name recorded
+       for the paths are not updated.  Instead, these options
+       sets and unsets the "assume unchanged" bit for the
+       paths.  When the "assume unchanged" bit is on, git stops
+       checking the working tree files for possible
+       modifications, so you need to manually unset the bit to
+       tell git when you change the working tree file. This is
+       sometimes helpful when working with a big project on a
+       filesystem that has very slow lstat(2) system call
+       (e.g. cifs).
+
 --info-only::
        Do not create objects in the object database for all
        <file> arguments that follow this flag; just insert
@@ -193,6 +208,37 @@ $ git ls-files -s
 ------------
 
 
+Using "assume unchanged" bit
+----------------------------
+
+Many operations in git depend on your filesystem to have an
+efficient `lstat(2)` implementation, so that `st_mtime`
+information for working tree files can be cheaply checked to see
+if the file contents have changed from the version recorded in
+the index file.  Unfortunately, some filesystems have
+inefficient `lstat(2)`.  If your filesystem is one of them, you
+can set "assume unchanged" bit to paths you have not changed to
+cause git not to do this check.  Note that setting this bit on a
+path does not mean git will check the contents of the file to
+see if it has changed -- it makes git to omit any checking and
+assume it has *not* changed.  When you make changes to working
+tree files, you have to explicitly tell git about it by dropping
+"assume unchanged" bit, either before or after you modify them.
+
+In order to set "assume unchanged" bit, use `--assume-unchanged`
+option.  To unset, use `--no-assume-unchanged`.
+
+The command looks at `core.ignorestat` configuration variable.  When
+this is true, paths updated with `git-update-index paths...` and
+paths updated with other git commands that update both index and
+working tree (e.g. `git-apply --index`, `git-checkout-index -u`,
+and `git-read-tree -u`) are automatically marked as "assume
+unchanged".  Note that "assume unchanged" bit is *not* set if
+`git-update-index --refresh` finds the working tree file matches
+the index (use `git-update-index --really-refresh` if you want
+to mark them as "assume unchanged").
+
+
 Examples
 --------
 To update and refresh only the files already checked out:
@@ -201,6 +247,35 @@ To update and refresh only the files already checked out:
 $ git-checkout-index -n -f -a && git-update-index --ignore-missing --refresh
 ----------------
 
+On an inefficient filesystem with `core.ignorestat` set:
+
+------------
+$ git update-index --really-refresh <1>
+$ git update-index --no-assume-unchanged foo.c <2>
+$ git diff --name-only <3>
+$ edit foo.c
+$ git diff --name-only <4>
+M foo.c
+$ git update-index foo.c <5>
+$ git diff --name-only <6>
+$ edit foo.c
+$ git diff --name-only <7>
+$ git update-index --no-assume-unchanged foo.c <8>
+$ git diff --name-only <9>
+M foo.c
+
+<1> forces lstat(2) to set "assume unchanged" bits for paths
+    that match index.
+<2> mark the path to be edited.
+<3> this does lstat(2) and finds index matches the path.
+<4> this does lstat(2) and finds index does not match the path.
+<5> registering the new version to index sets "assume unchanged" bit.
+<6> and it is assumed unchanged.
+<7> even after you edit it.
+<8> you can tell about the change after the fact.
+<9> now it checks with lstat(2) and finds it has been changed.
+------------
+
 
 Configuration
 -------------
@@ -213,6 +288,9 @@ in the index and the file mode on the filesystem if they differ only on
 executable bit.   On such an unfortunate filesystem, you may
 need to use `git-update-index --chmod=`.
 
+The command looks at `core.ignorestat` configuration variable.  See
+'Using "assume unchanged" bit' section above.
+
 
 See Also
 --------