1. 18 4月, 2014 3 次提交
  2. 17 4月, 2014 5 次提交
  3. 12 4月, 2014 2 次提交
    • K
      test: fix t5560 on FreeBSD · ff7a1c67
      Kyle J. McKay 提交于
      Since fd0a8c2e (first appearing in v1.7.0), the
      t/t5560-http-backend-noserver.sh test has used a backslash escape
      inside a ${} expansion in order to specify a literal '?' character.
      
      Unfortunately the FreeBSD /bin/sh does not interpret this correctly.
      
      In a POSIX compliant shell, the following:
      
      x='one?two?three'
      echo "${x#*\?}"
      
      Would be expected to produce this:
      
      two?three
      
      When using the FreeBSD /bin/sh instead you get this:
      
      one?two?three
      
      In fact the FreeBSD /bin/sh treats the backslash as a literal
      character to match so that this:
      
      y='one\two\three'
      echo "${y#*\?}"
      
      Produces this unexpected value:
      
      wo\three
      
      In this case the backslash is not only treated literally, it also
      fails to defeat the special meaning of the '?' character.
      
      Instead, we can use the [...] construct to defeat the special meaning
      of the '?' character and match it exactly in a way that works for the
      FreeBSD /bin/sh as well as other POSIX /bin/sh implementations.
      
      Changing the example like so:
      
      x='one?two?three'
      echo "${x#*[?]}"
      
      Produces the expected output using the FreeBSD /bin/sh.
      
      Therefore, change the use of \? to [?] in order to be compatible with
      the FreeBSD /bin/sh which allows t/t5560-http-backend-noserver.sh to
      pass on FreeBSD again.
      Signed-off-by: NKyle J. McKay <mackyle@gmail.com>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      ff7a1c67
    • K
      test: fix t7001 cp to use POSIX options · 00764ca1
      Kyle J. McKay 提交于
      Since 11502468 and 04c1ee57 (both first appearing in v1.8.5), the
      t7001-mv test has used "cp -a" to perform a copy in several of the
      tests.
      
      However, the "-a" option is not required for a POSIX cp utility and
      some platforms' cp utilities do not support it.
      
      The POSIX equivalent of -a is -R -P -p.
      
      Change "cp -a" to "cp -R -P -p" so that the t7001-mv test works
      on systems with a cp utility that only implements the POSIX
      required set of options and not the "-a" option.
      Signed-off-by: NKyle J. McKay <mackyle@gmail.com>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      00764ca1
  4. 10 4月, 2014 10 次提交
  5. 09 4月, 2014 13 次提交
  6. 08 4月, 2014 2 次提交
  7. 05 4月, 2014 3 次提交
    • J
      pack-objects: do not reuse packfiles without --delta-base-offset · 69e4b342
      Jeff King 提交于
      When we are sending a packfile to a remote, we currently try
      to reuse a whole chunk of packfile without bothering to look
      at the individual objects. This can make things like initial
      clones much lighter on the server, as we can just dump the
      packfile bytes.
      
      However, it's possible that the other side cannot read our
      packfile verbatim. For example, we may have objects stored
      as OFS_DELTA, but the client is an antique version of git
      that only understands REF_DELTA. We negotiate this
      capability over the fetch protocol. A normal pack-objects
      run will convert OFS_DELTA into REF_DELTA on the fly, but
      the "reuse pack" code path never even looks at the objects.
      
      This patch disables packfile reuse if the other side is
      missing any capabilities that we might have used in the
      on-disk pack. Right now the only one is OFS_DELTA, but we
      may need to expand in the future (e.g., if packv4 introduces
      new object types).
      
      We could be more thorough and only disable reuse in this
      case when we actually have an OFS_DELTA to send, but:
      
        1. We almost always will have one, since we prefer
           OFS_DELTA to REF_DELTA when possible. So this case
           would almost never come up.
      
        2. Looking through the objects defeats the purpose of the
           optimization, which is to do as little work as possible
           to get the bytes to the remote.
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      69e4b342
    • V
      add `ignore_missing_links` mode to revwalk · 2db1a43f
      Vicent Marti 提交于
      When pack-objects is computing the reachability bitmap to
      serve a fetch request, it can erroneously die() if some of
      the UNINTERESTING objects are not present. Upload-pack
      throws away HAVE lines from the client for objects we do not
      have, but we may have a tip object without all of its
      ancestors (e.g., if the tip is no longer reachable and was
      new enough to survive a `git prune`, but some of its
      reachable objects did get pruned).
      
      In the non-bitmap case, we do a revision walk with the HAVE
      objects marked as UNINTERESTING. The revision walker
      explicitly ignores errors in accessing UNINTERESTING commits
      to handle this case (and we do not bother looking at
      UNINTERESTING trees or blobs at all).
      
      When we have bitmaps, however, the process is quite
      different.  The bitmap index for a pack-objects run is
      calculated in two separate steps:
      
      First, we perform an extensive walk from all the HAVEs to
      find the full set of objects reachable from them. This walk
      is usually optimized away because we are expected to hit an
      object with a bitmap during the traversal, which allows us
      to terminate early.
      
      Secondly, we perform an extensive walk from all the WANTs,
      which usually also terminates early because we hit a commit
      with an existing bitmap.
      
      Once we have the resulting bitmaps from the two walks, we
      AND-NOT them together to obtain the resulting set of objects
      we need to pack.
      
      When we are walking the HAVE objects, the revision walker
      does not know that we are walking it only to mark the
      results as uninteresting. We strip out the UNINTERESTING flag,
      because those objects _are_ interesting to us during the
      first walk. We want to keep going to get a complete set of
      reachable objects if we can.
      
      We need some way to tell the revision walker that it's OK to
      silently truncate the HAVE walk, just like it does for the
      UNINTERESTING case. This patch introduces a new
      `ignore_missing_links` flag to the `rev_info` struct, which
      we set only for the HAVE walk.
      
      It also adds tests to cover UNINTERESTING objects missing
      from several positions: a missing blob, a missing tree, and
      a missing parent commit. The missing blob already worked (as
      we do not care about its contents at all), but the other two
      cases caused us to die().
      
      Note that there are a few cases we do not need to test:
      
        1. We do not need to test a missing tree, with the blob
           still present. Without the tree that refers to it, we
           would not know that the blob is relevant to our walk.
      
        2. We do not need to test a tip commit that is missing.
           Upload-pack omits these for us (and in fact, we
           complain even in the non-bitmap case if it fails to do
           so).
      Reported-by: NSiddharth Agarwal <sid0@fb.com>
      Signed-off-by: NVicent Marti <tanoku@gmail.com>
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      2db1a43f
    • M
      MSVC: allow using ExtUtils::MakeMaker · e4eef26d
      Marat Radchenko 提交于
      Drop NO_PERL_MAKEMAKER from config.mak.uname for the MSVC platform.
      
      MakeMaker is available on Windows Perl implementations and
      installs modules to correct location, unlike NO_PERL_MAKEMAKER Makefile.
      Signed-off-by: NMarat Radchenko <marat@slonopotamus.org>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      e4eef26d
  8. 04 4月, 2014 2 次提交