1. 21 2月, 2007 2 次提交
    • J
      prefixcmp(): fix-up leftover strncmp(). · 1968d77d
      Junio C Hamano 提交于
      There were instances of strncmp() that were formatted improperly
      (e.g. whitespace around parameter before closing parenthesis)
      that caused the earlier mechanical conversion step to miss
      them.  This step cleans them up.
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      1968d77d
    • J
      Mechanical conversion to use prefixcmp() · cc44c765
      Junio C Hamano 提交于
      This mechanically converts strncmp() to use prefixcmp(), but only when
      the parameters match specific patterns, so that they can be verified
      easily.  Leftover from this will be fixed in a separate step, including
      idiotic conversions like
      
          if (!strncmp("foo", arg, 3))
      
        =>
      
          if (!(-prefixcmp(arg, "foo")))
      
      This was done by using this script in px.perl
      
         #!/usr/bin/perl -i.bak -p
         if (/strncmp\(([^,]+), "([^\\"]*)", (\d+)\)/ && (length($2) == $3)) {
                 s|strncmp\(([^,]+), "([^\\"]*)", (\d+)\)|prefixcmp($1, "$2")|;
         }
         if (/strncmp\("([^\\"]*)", ([^,]+), (\d+)\)/ && (length($1) == $3)) {
                 s|strncmp\("([^\\"]*)", ([^,]+), (\d+)\)|(-prefixcmp($2, "$1"))|;
         }
      
      and running:
      
         $ git grep -l strncmp -- '*.c' | xargs perl px.perl
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      cc44c765
  2. 19 2月, 2007 1 次提交
  3. 14 2月, 2007 2 次提交
    • J
      teach diff machinery about --ignore-space-at-eol · 859f9c45
      Johannes Schindelin 提交于
      `git diff --ignore-space-at-eol` will ignore whitespace at the
      line ends.
      Signed-off-by: NJohannes Schindelin <Johannes.Schindelin@gmx.de>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      859f9c45
    • L
      Mark places that need blob munging later for CRLF conversion. · bd3a5b5e
      Linus Torvalds 提交于
      Here's a patch that I think we can merge right now. There may be
      other places that need this, but this at least points out the
      three places that read/write working tree files for git
      update-index, checkout and diff respectively. That should cover
      a lot of it [jc: git-apply uses an entirely different codepath
      both for reading and writing].
      
      Some day we can actually implement it. In the meantime, this
      points out a place for people to start. We *can* even start with
      a really simple "we do CRLF conversion automatically, regardless
      of filename" kind of approach, that just look at the data (all
      three cases have the _full_ file data already in memory) and
      says "ok, this is text, so let's convert to/from DOS format
      directly".
      
      THAT somebody can write in ten minutes, and it would already
      make git much nicer on a DOS/Windows platform, I suspect.
      
      And it would be totally zero-cost if you just make it a config
      option (but please make it dynamic with the _default_ just being
      0/1 depending on whether it's UNIX/Windows, just so that UNIX
      people can _test_ it easily).
      Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      bd3a5b5e
  4. 12 2月, 2007 3 次提交
  5. 10 2月, 2007 1 次提交
  6. 09 1月, 2007 1 次提交
  7. 07 1月, 2007 1 次提交
    • J
      diff-index --cached --raw: show tree entry on the LHS for unmerged entries. · e9c84099
      Junio C Hamano 提交于
      This updates the way diffcore represents an unmerged pair
      somewhat.  It used to be that entries with mode=0 on both sides
      were used to represent an unmerged pair, but now it has an
      explicit flag.  This is to allow diff-index --cached to report
      the entry from the tree when the path is unmerged in the index.
      
      This is used in updating "git reset <tree> -- <path>" to restore
      absense of the path in the index from the tree.
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      e9c84099
  8. 30 12月, 2006 1 次提交
    • S
      Replace mmap with xmmap, better handling MAP_FAILED. · c4712e45
      Shawn O. Pearce 提交于
      In some cases we did not even bother to check the return value of
      mmap() and just assume it worked.  This is bad, because if we are
      out of virtual address space the kernel returned MAP_FAILED and we
      would attempt to dereference that address, segfaulting without any
      real error output to the user.
      
      We are replacing all calls to mmap() with xmmap() and moving all
      MAP_FAILED checking into that single location.  If a mmap call
      fails we try to release enough least-recently-used pack windows
      to possibly succeed, then retry the mmap() attempt.  If we cannot
      mmap even after releasing pack memory then we die() as none of our
      callers have any reasonable recovery strategy for a failed mmap.
      Signed-off-by: NShawn O. Pearce <spearce@spearce.org>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      c4712e45
  9. 22 12月, 2006 1 次提交
  10. 21 12月, 2006 1 次提交
    • J
      simplify inclusion of system header files. · 85023577
      Junio C Hamano 提交于
      This is a mechanical clean-up of the way *.c files include
      system header files.
      
       (1) sources under compat/, platform sha-1 implementations, and
           xdelta code are exempt from the following rules;
      
       (2) the first #include must be "git-compat-util.h" or one of
           our own header file that includes it first (e.g. config.h,
           builtin.h, pkt-line.h);
      
       (3) system headers that are included in "git-compat-util.h"
           need not be included in individual C source files.
      
       (4) "git-compat-util.h" does not have to include subsystem
           specific header files (e.g. expat.h).
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      85023577
  11. 20 12月, 2006 1 次提交
  12. 16 12月, 2006 2 次提交
    • N
      make commit message a little more consistent and conforting · ebd124c6
      Nicolas Pitre 提交于
      It is nicer to let the user know when a commit succeeded all the time,
      not only the first time.  Also the commit sha1 is much more useful than
      the tree sha1 in this case.
      
      This patch also introduces a -q switch to supress this message as well
      as the summary of created/deleted files.
      Signed-off-by: NNicolas Pitre <nico@cam.org>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      ebd124c6
    • S
      Avoid accessing a slow working copy during diffcore operations. · 1510fea7
      Shawn O. Pearce 提交于
      The Cygwin folks have done a fine job at creating a POSIX layer
      on Windows That Just Works(tm).  However it comes with a penalty;
      accessing files in the working tree by way of stat/open/mmap can
      be slower for diffcore than inflating the data from a blob which
      is stored in a packfile.
      
      This performance problem is especially an issue in merge-recursive
      when dealing with nearly 7000 added files, as we are loading
      each file's content from the working directory to perform rename
      detection.  I have literally seen (and sadly watched) paint dry in
      less time than it takes for merge-recursive to finish such a merge.
      On the other hand this very same merge runs very fast on Solaris.
      
      If Git is compiled with NO_FAST_WORKING_DIRECTORY set then we will
      avoid looking at the working directory when the blob in question
      is available within a packfile and the caller doesn't need the data
      unpacked into a temporary file.
      
      We don't use loose objects as they have the same open/mmap/close
      costs as the working directory file access, but have the additional
      CPU overhead of needing to inflate the content before use.  So it
      is still faster to use the working tree file over the loose object.
      
      If the caller needs the file data unpacked into a temporary file
      its likely because they are going to call an external diff program,
      passing the file as a parameter.  In this case reusing the working
      tree file will be faster as we don't need to inflate the data and
      write it out to a temporary file.
      
      The NO_FAST_WORKING_DIRECTORY feature is enabled by default on
      Cygwin, as that is the platform which currently appears to benefit
      the most from this option.
      Signed-off-by: NShawn O. Pearce <spearce@spearce.org>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      1510fea7
  13. 13 12月, 2006 1 次提交
    • A
      Allow subcommand.color and color.subcommand color configuration · a159ca0c
      Andy Parkins 提交于
      While adding colour to the branch command it was pointed out that a
      config option like "branch.color" conflicts with the pre-existing
      "branch.something" namespace used for specifying default merge urls and
      branches.  The suggested solution was to flip the order of the
      components to "color.branch", which I did for colourising branch.
      
      This patch does the same thing for
        - git-log (color.diff)
        - git-status (color.status)
        - git-diff (color.diff)
        - pager (color.pager)
      
      I haven't removed the old config options; but they should probably be
      deprecated and eventually removed to prevent future namespace
      collisions.  I've done this deprecation by changing the documentation
      for the config file to match the new names; and adding the "color.XXX"
      options to contrib/completion/git-completion.bash.
      
      Unfortunately git-svn reads "diff.color" and "pager.color"; which I
      don't like to change unilaterally.
      Signed-off-by: NAndy Parkins <andyparkins@gmail.com>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      a159ca0c
  14. 12 12月, 2006 1 次提交
  15. 22 11月, 2006 1 次提交
    • J
      git-diff/git-apply: make diff output a bit friendlier to GNU patch (part 2) · 1a9eb3b9
      Junio C Hamano 提交于
      Somebody was wondering on #git channel why a git generated diff
      does not apply with GNU patch when the filename contains a SP.
      It is because GNU patch expects to find TAB (and trailing timestamp)
      on ---/+++ (old_name and new_name) lines after the filenames.
      
      The "diff --git" output format was carefully designed to be
      compatible with GNU patch where it can, but whitespace
      characters were always a pain.
      
      This adds an extra TAB (but not trailing timestamp) to old_name
      and new_name lines of git-diff output when the filename has a SP
      in it.  An earlier patch updated git-apply to prepare for this.
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      1a9eb3b9
  16. 14 10月, 2006 1 次提交
  17. 06 10月, 2006 1 次提交
    • J
      Turn on recursive with --summary · d7014dc0
      Johannes Schindelin 提交于
      This makes "git log/diff --summary" imply recursive behaviour,
      whose effect is summarized in one test output:
      
          --- a/t/t4013/diff.diff-tree_--pretty_--root_--summary_initial
          +++ b/t/t4013/diff.diff-tree_--pretty_--root_--summary_initial
          @@ -5,7 +5,7 @@ Date:   Mon Jun 26 00:00:00 2006 +0000
      
      	 Initial
      
          - create mode 040000 dir
          + create mode 100644 dir/sub
            create mode 100644 file0
            create mode 100644 file2
           $
      
      When a file is created in a subdirectory, we used to say just
      the directory name only when that directory also was created,
      which did not make sense from two reasons.  It is not any more
      significant to create a new file in a new directory than to
      create a new file in an existing directory, and even if it were,
      reportinging the new directory name without saying the actual
      filename is not useful.
      Signed-off-by: NJohannes Schindelin <Johannes.Schindelin@gmx.de>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      d7014dc0
  18. 30 9月, 2006 1 次提交
  19. 29 9月, 2006 3 次提交
  20. 27 9月, 2006 2 次提交
  21. 24 9月, 2006 1 次提交
  22. 09 9月, 2006 1 次提交
  23. 08 9月, 2006 1 次提交
  24. 07 9月, 2006 1 次提交
  25. 02 9月, 2006 1 次提交
    • S
      Replace uses of strdup with xstrdup. · 9befac47
      Shawn Pearce 提交于
      Like xmalloc and xrealloc xstrdup dies with a useful message if
      the native strdup() implementation returns NULL rather than a
      valid pointer.
      
      I just tried to use xstrdup in new code and found it to be missing.
      However I expected it to be present as xmalloc and xrealloc are
      already commonly used throughout the code.
      
      [jc: removed the part that deals with last_XXX, which I am
       finding more and more dubious these days.]
      Signed-off-by: NShawn O. Pearce <spearce@spearce.org>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      9befac47
  26. 24 8月, 2006 1 次提交
    • S
      Convert memcpy(a,b,20) to hashcpy(a,b). · e702496e
      Shawn Pearce 提交于
      This abstracts away the size of the hash values when copying them
      from memory location to memory location, much as the introduction
      of hashcmp abstracted away hash value comparsion.
      
      A few call sites were using char* rather than unsigned char* so
      I added the cast rather than open hashcpy to be void*.  This is a
      reasonable tradeoff as most call sites already use unsigned char*
      and the existing hashcmp is also declared to be unsigned char*.
      
      [jc: Splitted the patch to "master" part, to be followed by a
       patch for merge-recursive.c which is not in "master" yet.
      
       Fixed the cast in the latter hunk to combine-diff.c which was
       wrong in the original.
      
       Also converted ones left-over in combine-diff.c, diff-lib.c and
       upload-pack.c ]
      Signed-off-by: NShawn O. Pearce <spearce@spearce.org>
      Signed-off-by: NJunio C Hamano <junkio@cox.net>
      e702496e
  27. 18 8月, 2006 1 次提交
  28. 17 8月, 2006 1 次提交
  29. 16 8月, 2006 2 次提交
  30. 15 8月, 2006 1 次提交
  31. 11 8月, 2006 1 次提交