1. 19 1月, 2008 3 次提交
  2. 18 1月, 2008 6 次提交
    • J
      color unchanged lines as "plain" in "diff --color-words" · 472ca780
      Jeff King 提交于
      These were mistakenly being colored in "meta" color.
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      472ca780
    • J
      autoconf: Add checking for unsetenv function · bfa8fccf
      Jakub Narebski 提交于
      Update configure.ac (and config.mak.in) by adding test for unsetenv
      (NO_UNSETENV).  Add comment about NO_UNSETENV to Makefile header, as
      original commit 731043fd adding compat/unsetenv.c didn't do that.
      Signed-off-by: NJakub Narebski <jnareb@gmail.com>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      bfa8fccf
    • T
      core-tutorial typofix · 5221ecbc
      Thomas Zander 提交于
      Signed-off-by: NThomas Zander <zander@kde.org>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      5221ecbc
    • J
      Officially deprecate repo-config. · 5c66d0d4
      Junio C Hamano 提交于
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      5c66d0d4
    • S
      Fix random fast-import errors when compiled with NO_MMAP · c9ced051
      Shawn O. Pearce 提交于
      fast-import was relying on the fact that on most systems mmap() and
      write() are synchronized by the filesystem's buffer cache.  We were
      relying on the ability to mmap() 20 bytes beyond the current end
      of the file, then later fill in those bytes with a future write()
      call, then read them through the previously obtained mmap() address.
      
      This isn't always true with some implementations of NFS, but it is
      especially not true with our NO_MMAP=YesPlease build time option used
      on some platforms.  If fast-import was built with NO_MMAP=YesPlease
      we used the malloc()+pread() emulation and the subsequent write()
      call does not update the trailing 20 bytes of a previously obtained
      "mmap()" (aka malloc'd) address.
      
      Under NO_MMAP that behavior causes unpack_entry() in sha1_file.c to
      be unable to read an object header (or data) that has been unlucky
      enough to be written to the packfile at a location such that it
      is in the trailing 20 bytes of a window previously opened on that
      same packfile.
      
      This bug has gone unnoticed for a very long time as it is highly data
      dependent.  Not only does the object have to be placed at the right
      position, but it also needs to be positioned behind some other object
      that has been accessed due to a branch cache invalidation.  In other
      words the stars had to align just right, and if you did run into
      this bug you probably should also have purchased a lottery ticket.
      
      Fortunately the workaround is a lot easier than the bug explanation.
      
      Before we allow unpack_entry() to read data from a pack window
      that has also (possibly) been modified through write() we force
      all existing windows on that packfile to be closed.  By closing
      the windows we ensure that any new access via the emulated mmap()
      will reread the packfile, updating to the current file content.
      
      This comes at a slight performance degredation as we cannot reuse
      previously cached windows when we update the packfile.  But it
      is a fairly minor difference as the window closes happen at only
      two points:
      
       - When the packfile is finalized and its .idx is generated:
      
         At this stage we are getting ready to update the refs and any
         data access into the packfile is going to be random, and is
         going after only the branch tips (to ensure they are valid).
         Our existing windows (if any) are not likely to be positioned
         at useful locations to access those final tip commits so we
         probably were closing them before anyway.
      
       - When the branch cache missed and we need to reload:
      
         At this point fast-import is getting change commands for the next
         commit and it needs to go re-read a tree object it previously
         had written out to the packfile.  What windows we had (if any)
         are not likely to cover the tree in question so we probably were
         closing them before anyway.
      
      We do try to avoid unnecessarily closing windows in the second case
      by checking to see if the packfile size has increased since the
      last time we called unpack_entry() on that packfile.  If the size
      has not changed then we have not written additional data, and any
      existing window is still vaild.  This nicely handles the cases where
      fast-import is going through a branch cache reload and needs to read
      many trees at once.  During such an event we are not likely to be
      updating the packfile so we do not cycle the windows between reads.
      
      With this change in place t9301-fast-export.sh (which was broken
      by c3b0dec5) finally works again.
      Signed-off-by: NShawn O. Pearce <spearce@spearce.org>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      c9ced051
    • B
      fast-import.c: don't try to commit marks file if write failed · fb54abd6
      Brandon Casey 提交于
      We also move the assignment of -1 to the lock file descriptor
      up, so that rollback_lock_file() can be called safely after a
      possible attempt to fclose(). This matches the contents of
      the 'if' statement just above testing success of fdopen().
      Signed-off-by: NBrandon Casey <casey@nrlssc.navy.mil>
      Acked-by: NShawn O. Pearce <spearce@spearce.org>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      fb54abd6
  3. 17 1月, 2008 10 次提交
  4. 16 1月, 2008 3 次提交
  5. 15 1月, 2008 5 次提交
  6. 14 1月, 2008 3 次提交
  7. 13 1月, 2008 3 次提交
    • L
      Fix performance regression for partial commits · fa9dcf80
      Linus Torvalds 提交于
      When running "git commit paths" to create a partial commit, we
      used to carefully build the temporary index so that we do not
      lose the cached stat information.  The rewrite of the command in
      C lost it by carelessly using read_tree().
      
      This resurrects the earlier behaviour to keep the cached stat
      information as much as possible by using one-tree merge logic.
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      fa9dcf80
    • J
      git-clean: fix off-by-one memory access when given no arguments · a8db80c2
      Jeff King 提交于
      The "seen" variable is used by match_pathspec, and must have
      as many elements as there are in the given pathspec. We
      create the pathspec either from the command line arguments
      _or_ from just the current prefix.
      
      Thus allocating "seen" based upon just argc is wrong, since
      if argc == 0, then we still have one pathspec, the prefix,
      but we don't allocate any space in "seen".
      Signed-off-by: NJeff King <peff@peff.net>
      Tested-by: Nİsmail Dönmez <ismail@pardus.org.tr>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      a8db80c2
    • E
      git-svn: handle leading/trailing whitespace from svnsync revprops · 98fa5b68
      Eric Wong 提交于
      Repositories generated by svnsync cannot be relied on to have
      properly set revprops without newlines in UUIDs and URLs.  There
      may be broken versions of svnsync out there that append extra
      newlines to UUIDs, or the revprops could've been changed by
      repository administrators at any time, too.
      
      At least one repository we've come across has an embedded
      newline erroneously set in the svnsync-uuid prop.  This is bad
      because the trailing newline is taken as another record by the
      Git.pm library, and the wantarray detection causes tmp_config()
      to return an array with an empty-but-existing second element.
      
      We will now strip leading and trailing whitespace both before
      setting and after reading the uuid and url for svnsync values.
      We will also force tmp_config to return a single scalar when
      reading existing values.
      
      SVN UUIDs should never have whitespace in them, and SVN
      repository URLs should be URI-escaped, so neither of those
      values we ever see in git-svn should actually have whitespace
      in them.
      
      Thanks to Dennis Schridde for the bug report and Junio for
      helping diagnose this.
      Signed-off-by: NEric Wong <normalperson@yhbt.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      98fa5b68
  8. 12 1月, 2008 4 次提交
  9. 11 1月, 2008 3 次提交