1. 18 4月, 2013 1 次提交
  2. 13 4月, 2013 2 次提交
  3. 07 4月, 2013 3 次提交
    • J
      Git 1.8.1.6 · 2137ce01
      Junio C Hamano 提交于
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      2137ce01
    • J
      Merge branch 'jc/directory-attrs-regression-fix' into maint-1.8.1 · 4bbb830a
      Junio C Hamano 提交于
      A pattern "dir" (without trailing slash) in the attributes file
      stopped matching a directory "dir" by mistake with an earlier change
      that wanted to allow pattern "dir/" to also match.
      
      * jc/directory-attrs-regression-fix:
        t: check that a pattern without trailing slash matches a directory
        dir.c::match_pathname(): pay attention to the length of string parameters
        dir.c::match_pathname(): adjust patternlen when shifting pattern
        dir.c::match_basename(): pay attention to the length of string parameters
        attr.c::path_matches(): special case paths that end with a slash
        attr.c::path_matches(): the basename is part of the pathname
      4bbb830a
    • T
      remote-helpers/test-bzr.sh: do not use "grep '\s'" · 0e9b3272
      Torsten Bögershausen 提交于
      Using grep "devel\s\+3:" to find at least one whitspace is not
      portable on all grep versions; not all grep versions understand "\s"
      as a "whitespace".
      
      Use a literal TAB followed by SPACE.
      
      The + as a qualifier for "one or more" is not a basic regular
      expression; use egrep instead of grep.
      Signed-off-by: NTorsten Bögershausen <tboegi@web.de>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      0e9b3272
  4. 04 4月, 2013 1 次提交
  5. 03 4月, 2013 11 次提交
  6. 29 3月, 2013 5 次提交
    • J
      t: check that a pattern without trailing slash matches a directory · efa5f825
      Jeff King 提交于
      Prior to v1.8.1.1, with:
      
        git init
        echo content >foo &&
        mkdir subdir &&
        echo content >subdir/bar &&
        echo "subdir export-ignore" >.gitattributes
        git add . &&
        git commit -m one &&
        git archive HEAD | tar tf -
      
      the resulting archive would contain only "foo" and ".gitattributes",
      not subdir.  This was broken with a recent change that intended to
      allow "subdir/ export-ignore" to also exclude the directory, but
      instead ended up _requiring_ the trailing slash by mistake.
      
      A pattern "subdir" should match any path "subdir", whether it is a
      directory or a non-directory.  A pattern "subdir/" insists that a
      path "subdir" must be a directory for it to match.
      
      This patch adds test not just for this simple case, but also for
      deeper cross-directory cases, as well as cases with wildcards.
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      efa5f825
    • J
      dir.c::match_pathname(): pay attention to the length of string parameters · ab3aebc1
      Jeff King 提交于
      This function takes two counted strings: a <pattern, patternlen> pair
      and a <pathname, pathlen> pair. But we end up feeding the result to
      fnmatch, which expects NUL-terminated strings.
      
      We can fix this by calling the fnmatch_icase_mem function, which
      handles re-allocating into a NUL-terminated string if necessary.
      
      While we're at it, we can avoid even calling fnmatch in some cases. In
      addition to patternlen, we get "prefix", the size of the pattern that
      contains no wildcard characters. We do a straight match of the prefix
      part first, and then use fnmatch to cover the rest. But if there are
      no wildcards in the pattern at all, we do not even need to call
      fnmatch; we would simply be comparing two empty strings.
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      ab3aebc1
    • J
      dir.c::match_pathname(): adjust patternlen when shifting pattern · 982ac873
      Jeff King 提交于
      If we receive a pattern that starts with "/", we shift it
      forward to avoid looking at the "/" part. Since the prefix
      and patternlen parameters are counts of what is in the
      pattern, we must decrement them as we increment the pointer.
      
      We remembered to handle prefix, but not patternlen. This
      didn't cause any bugs, though, because the patternlen
      parameter is not actually used. Since it will be used in
      future patches, let's correct this oversight.
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      982ac873
    • J
      dir.c::match_basename(): pay attention to the length of string parameters · 0b6e56df
      Junio C Hamano 提交于
      The function takes two counted strings (<basename, basenamelen> and
      <pattern, patternlen>) as parameters, together with prefix (the
      length of the prefix in pattern that is to be matched literally
      without globbing against the basename) and EXC_* flags that tells it
      how to match the pattern against the basename.
      
      However, it did not pay attention to the length of these counted
      strings.  Update them to do the following:
      
       * When the entire pattern is to be matched literally, the pattern
         matches the basename only when the lengths of them are the same,
         and they match up to that length.
      
       * When the pattern is "*" followed by a string to be matched
         literally, make sure that the basenamelen is equal or longer than
         the "literal" part of the pattern, and the tail of the basename
         string matches that literal part.
      
       * Otherwise, use the new fnmatch_icase_mem helper to make
         sure we only lookmake sure we use only look at the
         counted part of the strings.  Because these counted strings are
         full strings most of the time, we check for termination
         to avoid unnecessary allocation.
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      0b6e56df
    • J
      attr.c::path_matches(): special case paths that end with a slash · dc09e9ec
      Junio C Hamano 提交于
      The function is given a string that ends with a slash to signal that
      the path is a directory to make sure that a pattern that ends with a
      slash (i.e. MUSTBEDIR) can tell directories and non-directories
      apart.  However, the pattern itself (pat->pattern and
      pat->patternlen) that came from such a MUSTBEDIR pattern is
      represented as a string that ends with a slash, but patternlen does
      not count that trailing slash. A MUSTBEDIR pattern "element/" is
      represented as a counted string <"element/", 7> and this must match
      match pathname "element/".
      
      Because match_basename() and match_pathname() want to see pathname
      "element" to match against the pattern <"element/", 7>, reduce the
      length of the path to exclude the trailing slash when calling
      these functions.
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      dc09e9ec
  7. 28 3月, 2013 4 次提交
  8. 27 3月, 2013 1 次提交
  9. 26 3月, 2013 8 次提交
  10. 23 3月, 2013 1 次提交
    • K
      Fix revision walk for commits with the same dates · c19d1b4e
      Kacper Kornet 提交于
      Logic in still_interesting function allows to stop the commits
      traversing if the oldest processed commit is not older then the
      youngest commit on the list to process and the list contains only
      commits marked as not interesting ones. It can be premature when dealing
      with a set of coequal commits. For example git rev-list A^! --not B
      provides wrong answer if all commits in the range A..B had the same
      commit time and there are more then 7 of them.
      
      To fix this problem the relevant part of the logic in still_interesting
      is changed to: the walk can be stopped if the oldest processed commit is
      younger then the youngest commit on the list to processed.
      Signed-off-by: NKacper Kornet <draenog@pld-linux.org>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      c19d1b4e
  11. 22 3月, 2013 1 次提交
  12. 21 3月, 2013 1 次提交
  13. 18 3月, 2013 1 次提交
    • M
      pack-refs: add fully-peeled trait · c29c46fa
      Michael Haggerty 提交于
      Older versions of pack-refs did not write peel lines for
      refs outside of refs/tags. This meant that on reading the
      pack-refs file, we might set the REF_KNOWS_PEELED flag for
      such a ref, even though we do not know anything about its
      peeled value.
      
      The previous commit updated the writer to always peel, no
      matter what the ref is. That means that packed-refs files
      written by newer versions of git are fine to be read by both
      old and new versions of git. However, we still have the
      problem of reading packed-refs files written by older
      versions of git, or by other implementations which have not
      yet learned the same trick.
      
      The simplest fix would be to always unset the
      REF_KNOWS_PEELED flag for refs outside of refs/tags that do
      not have a peel line (if it has a peel line, we know it is
      valid, but we cannot assume a missing peel line means
      anything). But that loses an important optimization, as
      upload-pack should not need to load the object pointed to by
      refs/heads/foo to determine that it is not a tag.
      
      Instead, we add a "fully-peeled" trait to the packed-refs
      file. If it is set, we know that we can trust a missing peel
      line to mean that a ref cannot be peeled. Otherwise, we fall
      back to assuming nothing.
      
      [commit message and tests by Jeff King <peff@peff.net>]
      Signed-off-by: NMichael Haggerty <mhagger@alum.mit.edu>
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      c29c46fa