git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: [PATCH] --count feature for git shortlog

From
Jeff King <peff@peff.net>
Date
Jul 1, 2015, 11:50 UTC
Message-ID
<20150701115036.GA31158@peff.net>
In-Reply-To
<CAKDoJU42kDs3QXYjo7rJ-vLMJtUdv9AwttJLHnya+toG6cSatQ@mail.gmail.com>
On Tue, Jun 30, 2015 at 08:00:53PM -0700, Lawrence Siebert wrote:
Show 17 quoted lines
> The following doesn't currently run:  `git rev-list --count
> --use-bitmap-index HEAD`
> 
> This is an optional parameter for rev-list from commit
> aa32939fea9c8934b41efce56015732fa12b8247 which can't currently be used
> because of changes in parameter parsing, but which modifies `--count`
> and which may be faster. I've gotten it working again, both by
> changing the current repo code to make it work, and also by building
> from that commit, and when I tested it on the whole repo, it seems
> like it's less variable in speed then `git rev-list --count HEAD`. but
> not necessarily consistently faster like tests suggested it was when
> it was committed. Obviously I'm not testing on the same system as the
> original committer, or with the same compiler, or even using the same
> version of the linux kernel repo, so those may be a factor.  It may
> also work better in a circumstance that I haven't accounted for, like
> an older repo, on a per file basis when getting per file commit counts
> for all files, or something like that.
Can you give more details?
In a copy of linux.git with bitmaps:
  $ git log -1 --oneline
  64fb1d0 Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc
  $ ls -l .git/objects/pack/
  total 892792
  -r--r--r-- 1 peff peff  24498374 May 21 13:39 pack-182149ca37c3f2d8fa190e4add772ae08af0e9d2.bitmap
  -r--r--r-- 1 peff peff 115283036 May 21 13:39 pack-182149ca37c3f2d8fa190e4add772ae08af0e9d2.idx
  -r--r--r-- 1 peff peff 774420808 May 21 13:39 pack-182149ca37c3f2d8fa190e4add772ae08af0e9d2.pack

The packfiles were created with "git repack -adb". It shows big speedups for this exact operation:

  $ git version
  git version 2.5.0.rc0
  $ time git rev-list --count HEAD
  515406
  real    0m9.500s
  user    0m9.424s
  sys     0m0.092s
  $ time git rev-list --use-bitmap-index --count HEAD
  515406
  real    0m0.392s
  user    0m0.328s
  sys     0m0.064s
Note that this would not work with, say:
  git rev-list --use-bitmap-index --count HEAD -- Makefile

as the bitmap index does not have enough information to do path limiting (we should probably disallow this or fall back to the non-bitmap code path, but right now we just ignore the path limiter).

Show 6 quoted lines
> I'm thinking I could submit a patch that makes it work again, and
> leave it to the user to decide whether to use it or not.   There is
> also a --test-bitmap option which compares the regular count with the
> bitmap count. I'm not sure if the implication there was regression
> testing or that --use-bitmap-index might give the wrong results in
> certain circumstances.  Vincent, could you clarify?

Yes, `--test-bitmap` is just for internal testing; you should always get the same results.

-Peff
Previous: Lawrence SiebertNext: Junio C Hamano
Message 14 of 15 in “--count feature for git shortlog”
  1. --count feature for git shortlogLawrence Siebert, Jun 29, 2015
  2. --count feature for git shortlogLawrence Siebert, Jun 29, 2015
  3. --count feature for git shortlogLawrence Siebert, Jun 29, 2015
  4. Junio C HamanoJun 29, 2015
  5. Lawrence SiebertJun 29, 2015
  6. Junio C HamanoJun 29, 2015
  7. Lawrence SiebertJun 29, 2015
  8. Johannes SchindelinJun 30, 2015
  9. John KeepingJun 30, 2015
  10. Junio C HamanoJul 3, 2015
  11. Lawrence SiebertJul 3, 2015
  12. Jakub NarębskiJul 21, 2015
  13. Lawrence SiebertJul 1, 2015
  14. Jeff KingJul 1, 2015
  15. Junio C HamanoJul 1, 2015

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.