1. 22 1月, 2008 1 次提交
  2. 11 1月, 2008 1 次提交
  3. 05 1月, 2008 1 次提交
  4. 18 12月, 2007 1 次提交
  5. 17 12月, 2007 1 次提交
    • J
      threaded pack-objects: Use condition variables for thread communication. · 50f22ada
      Johannes Sixt 提交于
      In the threaded pack-objects code the main thread and the worker threads
      must mutually signal that they have assigned a new pack of work or have
      completed their work, respectively. Previously, the code used mutexes that
      were locked in one thread and unlocked from a different thread, which is
      bogus (and happens to work on Linux).
      
      Here we rectify the implementation by using condition variables: There is
      one condition variable on which the main thread waits until a thread
      requests new work; and each worker thread has its own condition variable
      on which it waits until it is assigned new work or signaled to terminate.
      
      As a cleanup, the worker threads are spawned only after the initial work
      packages have been assigned.
      Signed-off-by: NJohannes Sixt <johannes.sixt@telecom.at>
      Acked-by: NNicolas Pitre <nico@cam.org>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      50f22ada
  6. 11 12月, 2007 1 次提交
  7. 08 12月, 2007 3 次提交
    • N
      pack-objects: fix threaded load balancing · 384b32c0
      Nicolas Pitre 提交于
      The current method consists of a master thread serving chunks of objects
      to work threads when they're done with their previous chunk.  The issue
      is to determine the best chunk size: making it too large creates poor
      load balancing, while making it too small has a negative effect on pack
      size because of the increased number of chunk boundaries and poor delta
      window utilization.
      
      This patch implements a completely different approach by initially
      splitting the work in large chunks uniformly amongst all threads, and
      whenever a thread is done then it steals half of the remaining work from
      another thread with the largest amount of unprocessed objects.
      
      This has the advantage of greatly reducing the number of chunk boundaries
      with an almost perfect load balancing.
      Signed-off-by: NNicolas Pitre <nico@cam.org>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      384b32c0
    • N
      pack-objects: reverse the delta search sort list · b904166c
      Nicolas Pitre 提交于
      It is currently sorted and then walked backward.  Not only this doesn't
      feel natural for my poor brain, but it would make the next patch less
      obvious as well.
      
      So reverse the sort order, and reverse the list walking direction,
      which effectively produce the exact same end result as before.
      
      Also bring the relevant comment nearer the actual code and adjust it
      accordingly, with minor additional clarifications.
      Signed-off-by: NNicolas Pitre <nico@cam.org>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      b904166c
    • N
      pack-objects: fix delta cache size accounting · b7a28f78
      Nicolas Pitre 提交于
      The wrong value was substracted from delta_cache_size when replacing
      a cached delta, as trg_entry->delta_size was used after the old size
      had been replaced by the new size.
      
      Noticed by Linus.
      Signed-off-by: NNicolas Pitre <nico@cam.org>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      b7a28f78
  8. 17 11月, 2007 1 次提交
    • L
      Fix rev-list when showing objects involving submodules · 481f0ee6
      Linus Torvalds 提交于
      The function mark_tree_uninteresting() assumed that the tree entries
      are blob when they are not trees.  This is not so.  Since we do
      not traverse into submodules (yet), the gitlinks should be ignored.
      
      In general, we should try to start moving away from using the
      "S_ISLNK()" like things for internal git state. It was a mistake to
      just assume the numbers all were same across all systems in the first
      place.  This implementation converts to the "object_type", and then
      uses a case statement.
      
      Noticed by Ilari on IRC.
      Test script taken from an earlier version by Dscho.
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      481f0ee6
  9. 14 11月, 2007 1 次提交
    • L
      Fix rev-list when showing objects involving submodules · 4d1012c3
      Linus Torvalds 提交于
      The function mark_tree_uninteresting() assumed that the tree entries
      are blob when they are not trees.  This is not so.  Since we do
      not traverse into submodules (yet), the gitlinks should be ignored.
      
      In general, we should try to start moving away from using the
      "S_ISLNK()" like things for internal git state. It was a mistake to
      just assume the numbers all were same across all systems in the first
      place.  This implementation converts to the "object_type", and then
      uses a case statement.
      
      Noticed by Ilari on IRC.
      Test script taken from an earlier version by Dscho.
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      4d1012c3
  10. 02 11月, 2007 2 次提交
  11. 31 10月, 2007 3 次提交
  12. 19 10月, 2007 1 次提交
    • S
      Change 'Deltifying objects' to 'Compressing objects' · 9c60a966
      Shawn O. Pearce 提交于
      Recently I was referred to the Grammar Police as the git-pack-objects
      progress message 'Deltifying %u objects' is considered to be not
      proper English to at least some small but vocal segment of the
      English speaking population.  Techncially we are applying delta
      compression to these objects at this stage, so the new term is
      slightly more acceptable to the Grammar Police but is also just
      as correct.
      Signed-off-by: NShawn O. Pearce <spearce@spearce.org>
      9c60a966
  13. 17 10月, 2007 4 次提交
  14. 18 9月, 2007 1 次提交
    • J
      pack-objects --keep-unreachable · 08cdfb13
      Junio C Hamano 提交于
      This new option is meant to be used in conjunction with the
      options "git repack -a -d" usually invokes the underlying
      pack-objects with.  When this option is given, objects unreachable
      from the refs in packs named with --unpacked= option are added
      to the resulting pack, in addition to the reachable objects that
      are not in packs marked with *.keep files.
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      08cdfb13
  15. 15 9月, 2007 1 次提交
  16. 13 9月, 2007 1 次提交
  17. 11 9月, 2007 2 次提交
  18. 10 9月, 2007 3 次提交
  19. 06 9月, 2007 4 次提交
  20. 02 9月, 2007 1 次提交
    • J
      Keep last used delta base in the delta window · 77639870
      Junio C Hamano 提交于
      This is based on Martin Koegler's idea to keep the object that
      was successfully used as the base of the delta when it is about
      to fall off the edge of the window.  Instead of doing so only
      for the objects at the edge of the window, this makes the window
      a lru eviction mechanism.  If an entry is used as a base, it is
      moved to the last of the queue to be evicted.
      
      This is a quick-and-dirty implementation, as it keeps the original
      implementation of the data structure used for the window.  This
      originally was done as an array, not as an array of pointers,
      because it was meant to be used as a cyclic FIFO buffer and a
      plain array avoids an extra pointer indirection, while its FIFOness
      eant that we are not "moving" the entries like this patch does.
      
      The runtime from three versions were comparable.  It seems to
      make the resulting chain even shorter, which can only be good.
      
      (stock "master") 15782196 bytes
      chain length = 1: 2972 objects
      chain length = 2: 2651 objects
      chain length = 3: 2369 objects
      chain length = 4: 2121 objects
      chain length = 5: 1877 objects
      ...
      chain length = 46: 490 objects
      chain length = 47: 515 objects
      chain length = 48: 527 objects
      chain length = 49: 570 objects
      chain length = 50: 408 objects
      
      (with your patch) 15745736 bytes (0.23% smaller)
      chain length = 1: 3137 objects
      chain length = 2: 2688 objects
      chain length = 3: 2322 objects
      chain length = 4: 2146 objects
      chain length = 5: 1824 objects
      ...
      chain length = 46: 503 objects
      chain length = 47: 509 objects
      chain length = 48: 536 objects
      chain length = 49: 588 objects
      chain length = 50: 357 objects
      
      (with this patch) 15612086 bytes (1.08% smaller)
      chain length = 1: 4831 objects
      chain length = 2: 3811 objects
      chain length = 3: 2964 objects
      chain length = 4: 2352 objects
      chain length = 5: 1944 objects
      ...
      chain length = 46: 327 objects
      chain length = 47: 353 objects
      chain length = 48: 304 objects
      chain length = 49: 298 objects
      chain length = 50: 135 objects
      
      [jc: this is with code simplification follow-up from Nico]
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      77639870
  21. 31 8月, 2007 1 次提交
  22. 25 8月, 2007 1 次提交
  23. 20 8月, 2007 1 次提交
    • L
      Make thin-pack generation subproject aware. · 1211be6b
      Linus Torvalds 提交于
      When a thin pack wants to send a tree object at "sub/dir", and
      the commit that is common between the sender and the receiver
      that is used as the base object has a subproject at that path,
      we should not try to use the data at "sub/dir" of the base tree
      as a tree object.  It is not a tree to begin with, and more
      importantly, the commit object there does not have to even
      exist.
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      1211be6b
  24. 16 8月, 2007 1 次提交
  25. 15 8月, 2007 1 次提交
  26. 13 7月, 2007 1 次提交