Code

git-fetch, git-branch: Support local --track via a special remote '.'
[git.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>
 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
 
 
 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
        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
 
 --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
        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
 
 
 Author