1. 20 9月, 2005 4 次提交
  2. 19 9月, 2005 9 次提交
  3. 18 9月, 2005 11 次提交
  4. 17 9月, 2005 7 次提交
    • L
      [PATCH] Avoid building object ref lists when not needed · 8805ccac
      Linus Torvalds 提交于
      The object parsing code builds a generic "this object references that
      object" because doing a full connectivity check for fsck requires it.
      
      However, nothing else really needs it, and it's quite expensive for
      git-rev-list that can have tons of objects in flight.
      
      So, exactly like the commit buffer save thing, add a global flag to
      disable it, and use it in git-rev-list.
      
      Before:
      
      	$ /usr/bin/time git-rev-list --objects v2.6.12..HEAD | wc -l
      	12.28user 0.29system 0:12.57elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k
      	0inputs+0outputs (0major+26718minor)pagefaults 0swaps
      	59124
      
      After this change:
      
      	$ /usr/bin/time git-rev-list --objects v2.6.12..HEAD | wc -l
      	10.33user 0.18system 0:10.54elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k
      	0inputs+0outputs (0major+18509minor)pagefaults 0swaps
      	59124
      
      and note how the number of pages touched by git-rev-list for this
      particular object list has shrunk from 26,718 (104 MB) to 18,509 (72 MB).
      
      Calculating the total object difference between two git revisions is still
      clearly the most expensive git operation (both in memory and CPU time),
      but it's now less than 40% of what it used to be.
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      8805ccac
    • L
      [PATCH] Improve git-rev-list memory usage further · b0d8923e
      Linus Torvalds 提交于
      This avoids keeping tree entries around, and free's them as it traverses
      the list. This avoids building up a huge memory footprint just for these
      small but very common allocations.
      
      Before:
      
      	$ /usr/bin/time git-rev-list --objects v2.6.12..HEAD | wc -l
      	11.65user 0.38system 0:12.65elapsed 95%CPU (0avgtext+0avgdata 0maxresident)k
      	0inputs+0outputs (0major+42934minor)pagefaults 0swaps
      	59124
      
      After:
      
      	$ /usr/bin/time git-rev-list --objects v2.6.12..HEAD | wc -l
      	12.28user 0.29system 0:12.57elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k
      	0inputs+0outputs (0major+26718minor)pagefaults 0swaps
      	59124
      
      Note how the minor fault numbers - which ends up being how many pages we
      needed to map - go down from 42934 (167 MB) to 26718 (104 MB).  That is:
      
      Before:
      	42934 minor pagefaults
      
      After:
      
      	26718 minor pagefaults
      
      This is all in _addition_ to the previous fixes.  It used to be
      ~48,000 pagefaults.
      
      That's still a honking big memory footprint, but it's about half of what
      it was just a day or two ago (and this is the object list for a pretty big
      update - almost 60,000 objects. Smaller updates need less memory).
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      b0d8923e
    • J
      [PATCH] fetch.c: cleanups · d0ac30f2
      Junio C Hamano 提交于
      Clean-ups suggested by Sergey Vlasov and acked by Daniel Barkalow.
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      d0ac30f2
    • M
      [PATCH] Debian: build-depend on "bc" · 28423758
      Matthias Urlichs 提交于
      Build systems should run tests. This patch adds the necessary
      debian/control and debian/rules bits ("bc" was missing,
      t/t4002-diff-basic.sh wants it).
      Signed-off-by: NMatthias Urlichs <smurf@smurf.noris.de>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      28423758
    • J
      [PATCH] Make git-checkout failure message more friendly. · 6b82d16b
      Junio C Hamano 提交于
      ... or less so, perhaps ;-).  Suggested by Jeff Garzik.
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      6b82d16b
    • C
      [PATCH] Update git-core.spec.in · 0e60471c
      Chris Wright 提交于
      Update git-core spec file based on feedback from Fedora Extras review.
      
      - update BuildRoot to be more specific
      - eliminate Requires that must be satisfied for base system install
      - drop Vendor
      - use dist tag to differentiate between branches
      - own %{_datadir}/git-core/
      - use RPM_OPT_FLAGS in spec file
      Signed-off-by: NChris Wright <chrisw@osdl.org>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      0e60471c
    • P
      [PATCH] PATCH Documentation/git-rev-list.txt typo fix · ed0a8488
      Peter Hagervall 提交于
      An earlier commit causes a mismatch in <emphasis> and <superscript>
      tags, one way of fixing it is having no more than one caret symbol per
      line, which is the only solution I found in the asciidoc
      documentation. Ugly, but it works.
      
      [jc: ugly indeed but that is not Peter's fault.]
      Signed-off-by: NPeter Hagervall <hager@cs.umu.se>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      ed0a8488
  5. 16 9月, 2005 9 次提交
    • J
      Recommend 'less' for Debian. · b93aa3ec
      Junio C Hamano 提交于
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      b93aa3ec
    • H
      [PATCH] Require less in RPM spec · c6ae6159
      Horst von Brand 提交于
      ... and the next one will be the one to do Debian, naturally.
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      c6ae6159
    • J
      Revert breakage introduced by c80522e3. · b4416b43
      Junio C Hamano 提交于
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      b4416b43
    • J
      [PATCH] Documentation/git-rev-list.txt typo fix · 316eee8f
      jdl@freescale.com 提交于
      Fix the "superscript" problem on the git-rev-list doc page.
      Signed-off-by: NJon Loeliger <jdl@freescale.com>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      316eee8f
    • L
      [PATCH] Re-organize "git-rev-list --objects" logic · 5bdbaaa4
      Linus Torvalds 提交于
      The logic to calculate the full object list used to be very inter-twined
      with the logic that looked up the commits.
      
      For no good reason - it's actually a lot simpler to just do that logic
      as a separate pass.
      
      This improves performance a bit, and uses slightly less memory in my
      tests, but more importantly it makes the code simpler to work with and
      follow what it does.
      
      The performance win is less than I had hoped for, but I get:
      
      Before:
      
      	[torvalds@g5 linux]$ /usr/bin/time git-rev-list --objects v2.6.12..HEAD | wc -l
      	13.64user 0.42system 0:14.13elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k
      	0inputs+0outputs (0major+47947minor)pagefaults 0swaps
      	58945
      
      After:
      
      	[torvalds@g5 linux]$ /usr/bin/time git-rev-list --objects v2.6.12..HEAD | wc -l
      	11.80user 0.36system 0:12.16elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k
      	0inputs+0outputs (0major+42684minor)pagefaults 0swaps
      	58945
      
      ie it improved by 2 seconds, and took a 5000+ fewer pages (hey, that's
      20MB out of 174MB to go). And got the same number of objects (in theory,
      the more expensive one might find some more shared objects to avoid. In
      practice it obviously doesn't).
      
      I know how to make it use _lots_ less memory, which will probably speed it
      up. But that's for another time, and I'd prefer to see this go in first.
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      5bdbaaa4
    • J
      Plug diff leaks. · 5098bafb
      Junio C Hamano 提交于
      It is a bit embarrassing that it took this long for a fix since the
      problem was first reported on Aug 13th.
      
          Message-ID: <87y876gl1r.wl@mail2.atmark-techno.com>
          From: Yasushi SHOJI <yashi@atmark-techno.com>
          Newsgroups: gmane.comp.version-control.git
          Subject: [patch] possible memory leak in diff.c::diff_free_filepair()
          Date: Sat, 13 Aug 2005 19:58:56 +0900
      
      This time I used valgrind to make sure that it does not overeagerly
      discard memory that is still being used.
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      5098bafb
    • J
    • L
      [PATCH] Avoid wasting memory in git-rev-list · 60ab26de
      Linus Torvalds 提交于
      As pointed out on the list, git-rev-list can use a lot of memory.
      
      One low-hanging fruit is to free the commit buffer for commits that we
      parse. By default, parse_commit() will save away the buffer, since a lot
      of cases do want it, and re-reading it continually would be unnecessary.
      However, in many cases the buffer isn't actually necessary and saving it
      just wastes memory.
      
      We could just free the buffer ourselves, but especially in git-rev-list,
      we actually end up using the helper functions that automatically add
      parent commits to the commit lists, so we don't actually control the
      commit parsing directly.
      
      Instead, just make this behaviour of "parse_commit()" a global flag.
      Maybe this is a bit tasteless, but it's very simple, and it makes a
      noticable difference in memory usage.
      
      Before the change:
      
      	[torvalds@g5 linux]$ /usr/bin/time git-rev-list v2.6.12..HEAD > /dev/null
      	0.26user 0.02system 0:00.28elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k
      	0inputs+0outputs (0major+3714minor)pagefaults 0swaps
      
      after the change:
      
      	[torvalds@g5 linux]$ /usr/bin/time git-rev-list v2.6.12..HEAD > /dev/null
      	0.26user 0.00system 0:00.27elapsed 100%CPU (0avgtext+0avgdata 0maxresident)k
      	0inputs+0outputs (0major+2433minor)pagefaults 0swaps
      
      note how the minor faults have decreased from 3714 pages to 2433 pages.
      That's all due to the fewer anonymous pages allocated to hold the comment
      buffers and their metadata.
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      60ab26de
    • J
      Be more backward compatible with git-ssh-{push,pull}. · f71a69ab
      Junio C Hamano 提交于
      HPA reminded me that these programs knows about the name of the
      counterpart on the other end and simply symlinking the old name to
      new name locally would not be enough.
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      f71a69ab