diff options
| author | Jeff King <peff@peff.net> | 2015-06-22 06:45:59 -0400 | 
|---|---|---|
| committer | Junio C Hamano <gitster@pobox.com> | 2015-06-22 14:55:52 -0700 | 
| commit | 6a951937ae1abb5fe438bfb41ebb28c5abe0419d (patch) | |
| tree | 0661a045de2c3d3753209985cd132f57c30627af /git-gui/lib/commit.tcl | |
| parent | 44b877e9bc944258db096a0ec57151be7c8cbf66 (diff) | |
cat-file: add --batch-all-objects option
It can sometimes be useful to examine all objects in the
repository. Normally this is done with "git rev-list --all
--objects", but:
  1. That shows only reachable objects. You may want to look
     at all available objects.
  2. It's slow. We actually open each object to walk the
     graph. If your operation is OK with seeing unreachable
     objects, it's an order of magnitude faster to just
     enumerate the loose directories and pack indices.
You can do this yourself using "ls" and "git show-index",
but it's non-obvious.  This patch adds an option to
"cat-file --batch-check" to operate on all available
objects (rather than reading names from stdin).
This is based on a proposal by Charles Bailey to provide a
separate "git list-all-objects" command. That is more
orthogonal, as it splits enumerating the objects from
getting information about them. However, in practice you
will either:
  a. Feed the list of objects directly into cat-file anyway,
     so you can find out information about them. Keeping it
     in a single process is more efficient.
  b. Ask the listing process to start telling you more
     information about the objects, in which case you will
     reinvent cat-file's batch-check formatter.
Adding a cat-file option is simple and efficient. And if you
really do want just the object names, you can always do:
  git cat-file --batch-check='%(objectname)' --batch-all-objects
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'git-gui/lib/commit.tcl')
0 files changed, 0 insertions, 0 deletions
