1. 19 3月, 2007 1 次提交
    • L
      Avoid unnecessary strlen() calls · 304de2d2
      Linus Torvalds 提交于
      This is a micro-optimization that grew out of the mailing list discussion
      about "strlen()" showing up in profiles.
      
      We used to pass regular C strings around to the low-level tree walking
      routines, and while this worked fine, it meant that we needed to call
      strlen() on strings that the caller always actually knew the size of
      anyway.
      
      So pass the length of the string down wih the string, and avoid
      unnecessary calls to strlen(). Also, when extracting a pathname from a
      tree entry, use "tree_entry_len()" instead of strlen(), since the length
      of the pathname is directly calculable from the decoded tree entry itself
      without having to actually do another strlen().
      
      This shaves off another ~5-10% from some loads that are very tree
      intensive (notably doing commit filtering by a pathspec).
      
      Signed-off-by: Linus Torvalds  <torvalds@linux-foundation.org>"
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      304de2d2
  2. 15 3月, 2007 1 次提交
  3. 27 2月, 2007 1 次提交
    • N
      convert object type handling from a string to a number · 21666f1a
      Nicolas Pitre 提交于
      We currently have two parallel notation for dealing with object types
      in the code: a string and a numerical value.  One of them is obviously
      redundent, and the most used one requires more stack space and a bunch
      of strcmp() all over the place.
      
      This is an initial step for the removal of the version using a char array
      found in object reading code paths.  The patch is unfortunately large but
      there is no sane way to split it in smaller parts without breaking the
      system.
      Signed-off-by: NNicolas Pitre <nico@cam.org>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      21666f1a
  4. 27 10月, 2006 1 次提交
    • R
      Make git-cherry handle root trees · 2b60356d
      Rene Scharfe 提交于
      This patch on top of 'next' makes built-in git-cherry handle root
      commits.
      
      It moves the static function log-tree.c::diff_root_tree() to
      tree-diff.c and makes it more similar to diff_tree_sha1() by
      shuffling around arguments and factoring out the call to
      log_tree_diff_flush().  Consequently the name is changed to
      diff_root_tree_sha1().  It is a version of diff_tree_sha1() that
      compares the empty tree (= root tree) against a single 'real' tree.
      
      This function is then used in get_patch_id() to compute patch IDs
      for initial commits instead of SEGFAULTing, as the current code
      does if confronted with parentless commits.
      Signed-off-by: NRene Scharfe <rene.scharfe@lsrfire.ath.cx>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      2b60356d
  5. 18 8月, 2006 1 次提交
  6. 15 8月, 2006 1 次提交
  7. 11 4月, 2006 1 次提交
    • J
      tree-diff: do not assume we use only one pathspec · a8baa7b9
      Junio C Hamano 提交于
      The way tree-diff was set up assumed we would use only one set
      of pathspec during the entire life of the program.  Move the
      pathspec related static variables out to diff_options structure
      so that we can filter commits with one set of paths while show
      the actual diffs using different set of paths.
      
      I suspect this breaks blame.c, and makes "git log paths..." to
      default to the --full-diff, the latter of which is dealt with
      the next commit.
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      a8baa7b9
  8. 04 4月, 2006 1 次提交
  9. 30 3月, 2006 1 次提交
    • J
      tree/diff header cleanup. · 1b0c7174
      Junio C Hamano 提交于
      Introduce tree-walk.[ch] and move "struct tree_desc" and
      associated functions from various places.
      
      Rename DIFF_FILE_CANON_MODE(mode) macro to canon_mode(mode) and
      move it to cache.h.  This macro returns the canonicalized
      st_mode value in the host byte order for files, symlinks and
      directories -- to be compared with a tree_desc entry.
      create_ce_mode(mode) in cache.h is similar but is intended to be
      used for index entries (so it does not work for directories) and
      returns the value in the network byte order.
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      1b0c7174
  10. 01 2月, 2006 1 次提交
  11. 27 12月, 2005 1 次提交
  12. 23 10月, 2005 1 次提交
    • L
      Split up tree diff functions into tree-diff.c library · ac1b3d12
      Linus Torvalds 提交于
      This makes the tree diff functionality independent of the "git-diff-tree"
      program, by splitting the core functionality up into a library file.
      
      This will be needed for when we teach git-rev-list to only follow a
      specified set of pathnames, rather than the global revision history.
      
      Most of it is a fairly straightforward code move, but it also involves
      some calling convention cleanup, and moving some of the static variables
      from diff-tree.c into the options structure.
      
      The actual tree change callback routines also become paramterized by the
      diff_options structure, allowing the library functionality to do something
      else than just show the diff on stdout.
      
      Right now the only user of this functionality remains git-diff-tree
      itself.
      Signed-off-by: NLinus Torvalds <torvalds@osdl.org>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      ac1b3d12