1. 11 10月, 2016 2 次提交
    • J
      link_alt_odb_entry: handle normalize_path errors · 670c359d
      Jeff King 提交于
      When we add a new alternate to the list, we try to normalize
      out any redundant "..", etc. However, we do not look at the
      return value of normalize_path_copy(), and will happily
      continue with a path that could not be normalized. Worse,
      the normalizing process is done in-place, so we are left
      with whatever half-finished working state the normalizing
      function was in.
      
      Fortunately, this cannot cause us to read past the end of
      our buffer, as that working state will always leave the
      NUL from the original path in place. And we do tend to
      notice problems when we check is_directory() on the path.
      But you can see the nonsense that we feed to is_directory
      with an entry like:
      
        this/../../is/../../way/../../too/../../deep/../../to/../../resolve
      
      in your objects/info/alternates, which yields:
      
        error: object directory
        /to/e/deep/too/way//ects/this/../../is/../../way/../../too/../../deep/../../to/../../resolve
        does not exist; check .git/objects/info/alternates.
      
      We can easily fix this just by checking the return value.
      But that makes it hard to generate a good error message,
      since we're normalizing in-place and our input value has
      been overwritten by cruft.
      
      Instead, let's provide a strbuf helper that does an in-place
      normalize, but restores the original contents on error. This
      uses a second buffer under the hood, which is slightly less
      efficient, but this is not a performance-critical code path.
      
      The strbuf helper can also properly set the "len" parameter
      of the strbuf before returning. Just doing:
      
        normalize_path_copy(buf.buf, buf.buf);
      
      will shorten the string, but leave buf.len at the original
      length. That may be confusing to later code which uses the
      strbuf.
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      670c359d
    • J
      t5613: clarify "too deep" recursion tests · f0f86fa9
      Jeff King 提交于
      These tests are just trying to show that we allow recursion
      up to a certain depth, but not past it. But the counting is
      a bit non-intuitive, and rather than test at the edge of the
      breakage, we test "OK" cases in the middle of the chain.
      Let's explain what's going on, and explicitly test the
      switch between "OK" and "too deep".
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      f0f86fa9
  2. 04 10月, 2016 22 次提交
    • J
      t5613: do not chdir in main process · 8f2ed267
      Jeff King 提交于
      Our usual style when working with subdirectories is to chdir
      inside a subshell or to use "git -C", which means we do not
      have to constantly return to the main test directory. Let's
      convert this old test, which does not follow that style.
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      8f2ed267
    • J
      t5613: whitespace/style cleanups · 128a348d
      Jeff King 提交于
      Our normal test style these days puts the opening quote of
      the body on the description line, and indents the body with
      a single tab. This ancient test did not follow this.
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      128a348d
    • J
      t5613: use test_must_fail · 195eb465
      Jeff King 提交于
      Besides being our normal style, this correctly checks for an
      error exit() versus signal death.
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      195eb465
    • J
      t5613: drop test_valid_repo function · b28a88f2
      Jeff King 提交于
      This function makes sure that "git fsck" does not report any
      errors. But "--full" has been the default since f29cd393
      (fsck: default to "git fsck --full", 2009-10-20), and we can
      use the exit code (instead of counting the lines) since
      e2b4f635 (fsck: exit with non-zero status upon errors,
      2007-03-05).
      
      So we can just use "git fsck", which is shorter and more
      flexible (e.g., we can use "git -C").
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      b28a88f2
    • J
      t5613: drop reachable_via function · 32d8b422
      Jeff King 提交于
      This function was never used since its inception in dd05ea17
      (test case for transitive info/alternates, 2006-05-07).
      Which is just as well, since it mutates the repo state in a
      way that would invalidate further tests, without cleaning up
      after itself. Let's get rid of it so that nobody is tempted
      to use it.
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      32d8b422
    • J
      Sync with 2.10.1 · 0cf36115
      Junio C Hamano 提交于
      * maint:
        Git 2.10.1
      0cf36115
    • J
      Seventh batch for 2.11 · 30d687df
      Junio C Hamano 提交于
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      30d687df
    • J
      Merge branch 'pb/rev-list-reverse-with-count' · 8f0e5439
      Junio C Hamano 提交于
      Doc update to clarify what "log -3 --reverse" does.
      
      * pb/rev-list-reverse-with-count:
        rev-list-options: clarify the usage of --reverse
      8f0e5439
    • J
      Merge branch 'dt/tree-fsck' · 4e34e20c
      Junio C Hamano 提交于
      The codepath in "git fsck" to detect malformed tree objects has
      been updated not to die but keep going after detecting them.
      
      * dt/tree-fsck:
        fsck: handle bad trees like other errors
        tree-walk: be more specific about corrupt tree errors
      4e34e20c
    • J
      Merge branch 'kd/mailinfo-quoted-string' · fe252ef8
      Junio C Hamano 提交于
      An author name, that spelled a backslash-quoted double quote in the
      human readable part "My \"double quoted\" name", was not unquoted
      correctly while applying a patch from a piece of e-mail.
      
      * kd/mailinfo-quoted-string:
        mailinfo: unescape quoted-pair in header fields
        t5100-mailinfo: replace common path prefix with variable
      fe252ef8
    • J
      Merge branch 'mh/diff-indent-heuristic' · e704c618
      Junio C Hamano 提交于
      Clean-up for a recently graduated topic.
      
      * mh/diff-indent-heuristic:
        xdiff: rename "struct group" to "struct xdlgroup"
      e704c618
    • J
      Merge branch 'dt/mailinfo' · 883ac022
      Junio C Hamano 提交于
      * dt/mailinfo:
        add David Turner's Two Sigma address
      883ac022
    • J
      Merge branch 'va/git-gui-i18n' · cb3debdc
      Junio C Hamano 提交于
      "git gui" l10n to Portuguese.
      
      * va/git-gui-i18n:
        git-gui: l10n: add Portuguese translation
        git-gui i18n: mark strings for translation
      cb3debdc
    • J
      Merge branch 'rs/git-gui-use-modern-git-merge-syntax' · 5a2c86fb
      Junio C Hamano 提交于
      The original command line syntax for "git merge", which was "git
      merge <msg> HEAD <parent>...", has been deprecated for quite some
      time, and "git gui" was the last in-tree user of the syntax.  This
      is finally fixed, so that we can move forward with the deprecation.
      
      * rs/git-gui-use-modern-git-merge-syntax:
        git-gui: stop using deprecated merge syntax
      5a2c86fb
    • J
      Merge branch 'jc/verify-loose-object-header' · 71a57ab3
      Junio C Hamano 提交于
      Codepaths that read from an on-disk loose object were too loose in
      validating what they are reading is a proper object file and
      sometimes read past the data they read from the disk, which has
      been corrected.  H/t to Gustavo Grieco for reporting.
      
      * jc/verify-loose-object-header:
        unpack_sha1_header(): detect malformed object header
        streaming: make sure to notice corrupt object
      71a57ab3
    • J
      Merge branch 'nd/init-core-worktree-in-multi-worktree-world' · 53eb85e6
      Junio C Hamano 提交于
      "git init" tried to record core.worktree in the repository's
      'config' file when GIT_WORK_TREE environment variable was set and
      it was different from where GIT_DIR appears as ".git" at its top,
      but the logic was faulty when .git is a "gitdir:" file that points
      at the real place, causing trouble in working trees that are
      managed by "git worktree".  This has been corrected.
      
      * nd/init-core-worktree-in-multi-worktree-world:
        init: kill git_link variable
        init: do not set unnecessary core.worktree
        init: kill set_git_dir_init()
        init: call set_git_dir_init() from within init_db()
        init: correct re-initialization from a linked worktree
      53eb85e6
    • J
      Merge branch 'ik/gitweb-force-highlight' · 34740849
      Junio C Hamano 提交于
      "gitweb" can spawn "highlight" to show blob contents with
      (programming) language-specific syntax highlighting, but only
      when the language is known.  "highlight" can however be told
      to make the guess itself by giving it "--force" option, which
      has been enabled.
      
      * ik/gitweb-force-highlight:
        gitweb: use highlight's shebang detection
        gitweb: remove unused guess_file_syntax() parameter
      34740849
    • J
      Merge branch 'rs/copy-array' · b1f0a856
      Junio C Hamano 提交于
      Code cleanup.
      
      * rs/copy-array:
        use COPY_ARRAY
        add COPY_ARRAY
      b1f0a856
    • J
      Git 2.10.1 · 6406bdc0
      Junio C Hamano 提交于
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      6406bdc0
    • J
      Merge branch 'jk/ident-ai-canonname-could-be-null' into maint · 11738ddf
      Junio C Hamano 提交于
      In the codepath that comes up with the hostname to be used in an
      e-mail when the user didn't tell us, we looked at ai_canonname
      field in struct addrinfo without making sure it is not NULL first.
      
      * jk/ident-ai-canonname-could-be-null:
        ident: handle NULL ai_canonname
      11738ddf
    • J
      Merge branch 'jk/doc-cvs-update' into maint · 3d0049ea
      Junio C Hamano 提交于
      Documentation around tools to import from CVS was fairly outdated.
      
      * jk/doc-cvs-update:
        docs/cvs-migration: mention cvsimport caveats
        docs/cvs-migration: update link to cvsps homepage
        docs/cvsimport: prefer cvs-fast-export to parsecvs
      3d0049ea
    • J
      Merge branch 'jk/pack-tag-of-tag' into maint · f4315eed
      Junio C Hamano 提交于
      "git pack-objects --include-tag" was taught that when we know that
      we are sending an object C, we want a tag B that directly points at
      C but also a tag A that points at the tag B.  We used to miss the
      intermediate tag B in some cases.
      
      * jk/pack-tag-of-tag:
        pack-objects: walk tag chains for --include-tag
        t5305: simplify packname handling
        t5305: use "git -C"
        t5305: drop "dry-run" of unpack-objects
        t5305: move cleanup into test block
      f4315eed
  3. 30 9月, 2016 16 次提交
    • J
      Sync with maint · 3ef7618e
      Junio C Hamano 提交于
      * maint:
        Prepare for 2.10.1
      3ef7618e
    • J
      Sixth batch for 2.11 · 641b158a
      Junio C Hamano 提交于
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      641b158a
    • J
      Merge branch 'jc/worktree-config' · ed0006aa
      Junio C Hamano 提交于
      "git worktree", even though it used the default_abbrev setting that
      ought to be affected by core.abbrev configuration variable, ignored
      the variable setting.  The command has been taught to read the
      default set of configuration variables to correct this.
      
      * jc/worktree-config:
        worktree: honor configuration variables
      ed0006aa
    • J
      Merge branch 'jk/ident-ai-canonname-could-be-null' · fff948fe
      Junio C Hamano 提交于
      In the codepath that comes up with the hostname to be used in an
      e-mail when the user didn't tell us, we looked at ai_canonname
      field in struct addrinfo without making sure it is not NULL first.
      
      * jk/ident-ai-canonname-could-be-null:
        ident: handle NULL ai_canonname
      fff948fe
    • J
      Merge branch 'jt/fetch-pack-in-vain-count-with-stateless' · 938c2a63
      Junio C Hamano 提交于
      When "git fetch" tries to find where the history of the repository
      it runs in has diverged from what the other side has, it has a
      mechanism to avoid digging too deep into irrelevant side branches.
      This however did not work well over the "smart-http" transport due
      to a design bug, which has been fixed.
      
      * jt/fetch-pack-in-vain-count-with-stateless:
        fetch-pack: do not reset in_vain on non-novel acks
      938c2a63
    • J
      Merge branch 'jk/verify-packfile-gently' · 5c2c2d4a
      Junio C Hamano 提交于
      A low-level function verify_packfile() was meant to show errors
      that were detected without dying itself, but under some conditions
      it didn't and died instead, which has been fixed.
      
      * jk/verify-packfile-gently:
        verify_packfile: check pack validity before accessing data
      5c2c2d4a
    • J
      Merge branch 'jt/mailinfo-fold-in-body-headers' · 4cff50b3
      Junio C Hamano 提交于
      When "git format-patch --stdout" output is placed as an in-body
      header and it uses the RFC2822 header folding, "git am" failed to
      put the header line back into a single logical line.  The
      underlying "git mailinfo" was taught to handle this properly.
      
      * jt/mailinfo-fold-in-body-headers:
        mailinfo: handle in-body header continuations
        mailinfo: make is_scissors_line take plain char *
        mailinfo: separate in-body header processing
      4cff50b3
    • J
      Prepare for 2.10.1 · 92d42666
      Junio C Hamano 提交于
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      92d42666
    • J
      Merge branch 'tg/add-chmod+x-fix' into maint · 36f64036
      Junio C Hamano 提交于
      "git add --chmod=+x <pathspec>" added recently only toggled the
      executable bit for paths that are either new or modified. This has
      been corrected to flip the executable bit for all paths that match
      the given pathspec.
      
      * tg/add-chmod+x-fix:
        t3700-add: do not check working tree file mode without POSIXPERM
        t3700-add: create subdirectory gently
        add: modify already added files when --chmod is given
        read-cache: introduce chmod_index_entry
        update-index: add test for chmod flags
      36f64036
    • J
      Merge branch 'et/add-chmod-x' into maint · bf3a55a2
      Junio C Hamano 提交于
      "git add --chmod=+x" added recently lacked documentation, which has
      been corrected.
      
      * et/add-chmod-x:
        add: document the chmod option
      bf3a55a2
    • J
      Merge branch 'rt/rebase-i-broken-insn-advise' into maint · cec5f0bf
      Junio C Hamano 提交于
      When "git rebase -i" is given a broken instruction, it told the
      user to fix it with "--edit-todo", but didn't say what the step
      after that was (i.e. "--continue").
      
      * rt/rebase-i-broken-insn-advise:
        rebase -i: improve advice on bad instruction lines
      cec5f0bf
    • J
      Merge branch 'ls/travis-homebrew-path-fix' into maint · d2a4131e
      Junio C Hamano 提交于
      The procedure to build Git on Mac OS X for Travis CI hardcoded the
      internal directory structure we assumed HomeBrew uses, which was a
      no-no.  The procedure has been updated to ask HomeBrew things we
      need to know to fix this.
      
      * ls/travis-homebrew-path-fix:
        travis-ci: ask homebrew for its path instead of hardcoding it
      d2a4131e
    • J
      Merge branch 'js/regexec-buf' into maint · 300e95f7
      Junio C Hamano 提交于
      Some codepaths in "git diff" used regexec(3) on a buffer that was
      mmap(2)ed, which may not have a terminating NUL, leading to a read
      beyond the end of the mapped region.  This was fixed by introducing
      a regexec_buf() helper that takes a <ptr,len> pair with REG_STARTEND
      extension.
      
      * js/regexec-buf:
        regex: use regexec_buf()
        regex: add regexec_buf() that can work on a non NUL-terminated string
        regex: -G<pattern> feeds a non NUL-terminated string to regexec() and fails
      300e95f7
    • J
      Merge branch 'nd/checkout-disambiguation' into maint · d336b675
      Junio C Hamano 提交于
      "git checkout <word>" does not follow the usual disambiguation
      rules when the <word> can be both a rev and a path, to allow
      checking out a branch 'foo' in a project that happens to have a
      file 'foo' in the working tree without having to disambiguate.
      This was poorly documented and the check was incorrect when the
      command was run from a subdirectory.
      
      * nd/checkout-disambiguation:
        checkout: fix ambiguity check in subdir
        checkout.txt: document a common case that ignores ambiguation rules
        checkout: add some spaces between code and comment
      d336b675
    • J
      Merge branch 'ep/doc-check-ref-format-example' into maint · 71065841
      Junio C Hamano 提交于
      A shell script example in check-ref-format documentation has been
      fixed.
      
      * ep/doc-check-ref-format-example:
        git-check-ref-format.txt: fixup documentation
      71065841
    • J
      Merge branch 'mm/config-color-ui-default-to-auto' into maint · a74a3b7a
      Junio C Hamano 提交于
      Documentation for individual configuration variables to control use
      of color (like `color.grep`) said that their default value is
      'false', instead of saying their default is taken from `color.ui`.
      When we updated the default value for color.ui from 'false' to
      'auto' quite a while ago, all of them broke.  This has been
      corrected.
      
      * mm/config-color-ui-default-to-auto:
        Documentation/config: default for color.* is color.ui
      a74a3b7a