Subject: [PATCH v4 0/9] git checkout: more cleanups, optimisation, less lstat() calls

From: Kjetil Barvik <[email-masked]>
Date: Mon, 09 Feb 2009 21:54:03 +0100

Changes since v3

-- patch 4/9 ---
 - use memcpy() instead of memmove()

-- patch 9/9 ---
 - NOTE/NB: this patch is only a debug patch, not be included in the
   final GIT release version.

OK, sorry that it took a while, but I was investigating why it seems
that patch 1/9 increases the user time.  As it is hard to get the
exact same test results on each run (I guess that "racy git" has
something to say in this case), I think that I should let it go, and
if necessary post a patch later on.

I have not done anything with patch 7/9, since Johannes Sixt wrote:

   "In the case of this patch, the timestamp is queried via the handle
    that made the change, and in this case special case the timestamp
    could be correct nevertheless. The guarantee doesn't cover this
    case, but it would be natural, and perhaps it Just Works?"

So, I let it be up to Johannes to decide if there should be an
"#ifndef FSTAT_UNRELIABLE" test around the fstat() usage inside patch
7/9.

Kjetil Barvik (9):
  lstat_cache(): small cleanup and optimisation
  lstat_cache(): generalise longest_match_lstat_cache()
  lstat_cache(): swap func(length, string) into func(string, length)
  unlink_entry(): introduce schedule_dir_for_removal()
  create_directories(): remove some memcpy() and strchr() calls
  write_entry(): cleanup of some duplicated code
  write_entry(): use fstat() instead of lstat() when file is open
  show_patch_diff(): remove a call to fstat()
  lstat_cache(): print a warning if doing ping-pong between cache types

 Documentation/CodingGuidelines |    3 +
 builtin-add.c                  |    2 +-
 builtin-apply.c                |    2 +-
 builtin-update-index.c         |    2 +-
 cache.h                        |   10 ++-
 combine-diff.c                 |    4 +-
 diff-lib.c                     |    2 +-
 dir.c                          |    2 +-
 entry.c                        |  108 ++++++++++++-------------
 symlinks.c                     |  176 ++++++++++++++++++++++++++++++----------
 unpack-trees.c                 |   34 ++------
 11 files changed, 207 insertions(+), 138 deletions(-)