Teach receive-pack to run pre-receive/post-receive hooks
[gitweb.git] / Documentation / git-index-pack.txt
index 9fa4847d56be0844b91a7cbe76ead6c45a9e5bed..2229ee86b72865c656112aae87b9593d199bc2b8 100644 (file)
@@ -9,7 +9,7 @@ git-index-pack - Build pack index file for an existing packed archive
 SYNOPSIS
 --------
 'git-index-pack' [-v] [-o <index-file>] <pack-file>
-'git-index-pack' --stdin [--fix-thin] [-v] [-o <index-file>] [<pack-file>]
+'git-index-pack' --stdin [--fix-thin] [--keep] [-v] [-o <index-file>] [<pack-file>]
 
 
 DESCRIPTION
@@ -38,7 +38,10 @@ OPTIONS
        instead and a copy is then written to <pack-file>. If
        <pack-file> is not specified, the pack is written to
        objects/pack/ directory of the current git repository with
-       a default name determined from the pack content.
+       a default name determined from the pack content.  If
+       <pack-file> is not specified consider using --keep to
+       prevent a race condition between this process and
+       gitlink::git-repack[1] .
 
 --fix-thin::
        It is possible for gitlink:git-pack-objects[1] to build
@@ -48,7 +51,33 @@ OPTIONS
        and they must be included in the pack for that pack to be self
        contained and indexable. Without this option any attempt to
        index a thin pack will fail. This option only makes sense in
-       conjonction with --stdin.
+       conjunction with --stdin.
+
+--keep::
+       Before moving the index into its final destination
+       create an empty .keep file for the associated pack file.
+       This option is usually necessary with --stdin to prevent a
+       simultaneous gitlink:git-repack[1] process from deleting
+       the newly constructed pack and index before refs can be
+       updated to use objects contained in the pack.
+
+--keep='why'::
+       Like --keep create a .keep file before moving the index into
+       its final destination, but rather than creating an empty file
+       place 'why' followed by an LF into the .keep file.  The 'why'
+       message can later be searched for within all .keep files to
+       locate any which have outlived their usefulness.
+
+
+Note
+----
+
+Once the index has been created, the list of object names is sorted
+and the SHA1 hash of that list is printed to stdout. If --stdin was
+also used then this is prefixed by either "pack\t", or "keep\t" if a
+new .keep file was successfully created. This is useful to remove a
+.keep file used as a lock to prevent the race with gitlink:git-repack[1]
+mentioned above.
 
 
 Author