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 f47ba08..bc76ff8 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 89e4614..7e29383 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 129ef2b..ed81380 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 fe53412..e813f84 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 e5635bc..b54eb91 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 2d67d39..4cb2e83 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 5bf5b06..69ec977 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 5b89110..6f4a48a 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 bf64873..bf0a3af 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 16c158f..f037d12 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 4066cb8..1fada77 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 9060fe8..6c0f792 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 d97d30d..1969989 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 c74311d..0a1b0ad 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
 --------