1. 16 10月, 2018 8 次提交
    • J
      Merge branch 'en/merge-cleanup' · 74bb4635
      Junio C Hamano 提交于
      Code clean-up.
      
      * en/merge-cleanup:
        merge-recursive: rename merge_file_1() and merge_content()
        merge-recursive: remove final remaining caller of merge_file_one()
        merge-recursive: avoid wrapper function when unnecessary and wasteful
        merge-recursive: set paths correctly when three-way merging content
      74bb4635
    • J
      Merge branch 'rj/header-check' · ff6bbce6
      Junio C Hamano 提交于
      Header files clean-up.
      
      * rj/header-check:
        delta-islands.h: add missing forward declarations (hdr-check)
        midx.h: add missing forward declarations (hdr-check)
        refs/refs-internal.h: add missing declarations (hdr-check)
        refs/packed-backend.h: add missing declaration (hdr-check)
        refs/ref-cache.h: add missing declarations (hdr-check)
        ewah/ewok_rlw.h: add missing include (hdr-check)
        json-writer.h: add missing include (hdr-check)
        Makefile: add a hdr-check target
      ff6bbce6
    • J
      Merge branch 'ma/config-doc-update' · 7a3335db
      Junio C Hamano 提交于
      Doc update.
      
      * ma/config-doc-update:
        git-config.txt: fix 'see: above' note
        Doc: use `--type=bool` instead of `--bool`
      7a3335db
    • J
      Merge branch 'jk/delta-islands-with-bitmap-reuse-delta-fix' · 73b9c6f5
      Junio C Hamano 提交于
      Fix interactions between two recent topics.
      
      * jk/delta-islands-with-bitmap-reuse-delta-fix:
        pack-objects: handle island check for "external" delta base
      73b9c6f5
    • J
      Merge branch 'tq/refs-internal-comment-fix' · eea5e03a
      Junio C Hamano 提交于
      Fix for typo in a sample code in comment.
      
      * tq/refs-internal-comment-fix:
        refs: docstring typo
      eea5e03a
    • J
      Merge branch 'ts/alias-of-alias' · 506ee60d
      Junio C Hamano 提交于
      An alias that expands to another alias has so far been forbidden,
      but now it is allowed to create such an alias.
      
      * ts/alias-of-alias:
        t0014: introduce an alias testing suite
        alias: show the call history when an alias is looping
        alias: add support for aliases of an alias
      506ee60d
    • J
      Merge branch 'ds/commit-graph-with-grafts' · 6d8f8ebb
      Junio C Hamano 提交于
      The recently introduced commit-graph auxiliary data is incompatible
      with mechanisms such as replace & grafts that "breaks" immutable
      nature of the object reference relationship.  Disable optimizations
      based on its use (and updating existing commit-graph) when these
      incompatible features are in use in the repository.
      
      * ds/commit-graph-with-grafts:
        commit-graph: close_commit_graph before shallow walk
        commit-graph: not compatible with uninitialized repo
        commit-graph: not compatible with grafts
        commit-graph: not compatible with replace objects
        test-repository: properly init repo
        commit-graph: update design document
        refs.c: upgrade for_each_replace_ref to be a each_repo_ref_fn callback
        refs.c: migrate internal ref iteration to pass thru repository argument
      6d8f8ebb
    • J
      Merge branch 'ab/commit-graph-progress' · 36d767d0
      Junio C Hamano 提交于
      Generation of (experimental) commit-graph files have so far been
      fairly silent, even though it takes noticeable amount of time in a
      meaningfully large repository.  The users will now see progress
      output.
      
      * ab/commit-graph-progress:
        gc: fix regression in 7b0f2292 impacting --quiet
        commit-graph verify: add progress output
        commit-graph write: add progress output
      36d767d0
  2. 10 10月, 2018 7 次提交
    • J
      Third batch for 2.20 · 5a0cc8ac
      Junio C Hamano 提交于
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      5a0cc8ac
    • J
      Merge branch 'ab/fsck-skiplist' · 66ec2373
      Junio C Hamano 提交于
      Update fsck.skipList implementation and documentation.
      
      * ab/fsck-skiplist:
        fsck: support comments & empty lines in skipList
        fsck: use oidset instead of oid_array for skipList
        fsck: use strbuf_getline() to read skiplist file
        fsck: add a performance test for skipList
        fsck: add a performance test
        fsck: document that skipList input must be unabbreviated
        fsck: document and test commented & empty line skipList input
        fsck: document and test sorted skipList input
        fsck tests: add a test for no skipList input
        fsck tests: setup of bogus commit object
      66ec2373
    • J
      Merge branch 'ds/multi-pack-verify' · 468b3221
      Junio C Hamano 提交于
      "git multi-pack-index" learned to detect corruption in the .midx
      file it uses, and this feature has been integrated into "git fsck".
      
      * ds/multi-pack-verify:
        fsck: verify multi-pack-index
        multi-pack-index: report progress during 'verify'
        multi-pack-index: verify object offsets
        multi-pack-index: fix 32-bit vs 64-bit size check
        multi-pack-index: verify oid lookup order
        multi-pack-index: verify oid fanout order
        multi-pack-index: verify missing pack
        multi-pack-index: verify packname order
        multi-pack-index: verify corrupt chunk lookup table
        multi-pack-index: verify bad header
        multi-pack-index: add 'verify' verb
      468b3221
    • J
      Merge branch 'bc/hash-independent-tests' · d555663f
      Junio C Hamano 提交于
      Various tests have been updated to make it easier to swap the
      hash function used for object identification.
      
      * bc/hash-independent-tests:
        t5318: use test_oid for HASH_LEN
        t1407: make hash size independent
        t1406: make hash-size independent
        t1405: make hash size independent
        t1400: switch hard-coded object ID to variable
        t1006: make hash size independent
        t0064: make hash size independent
        t0002: abstract away SHA-1 specific constants
        t0000: update tests for SHA-256
        t0000: use hash translation table
        t: add test functions to translate hash-related values
      d555663f
    • J
      Merge branch 'nd/test-tool' · 77b5046a
      Junio C Hamano 提交于
      Test helper binaries clean-up.
      
      * nd/test-tool:
        Makefile: add a hint about TEST_BUILTINS_OBJS
        t/helper: merge test-dump-fsmonitor into test-tool
        t/helper: merge test-parse-options into test-tool
        t/helper: merge test-pkt-line into test-tool
        t/helper: merge test-dump-untracked-cache into test-tool
        t/helper: keep test-tool command list sorted
      77b5046a
    • J
      Merge branch 'nd/config-split' · 3ba371f9
      Junio C Hamano 提交于
      Split Documentation/config.txt for easier maintenance.
      
      * nd/config-split:
        config.txt: move submodule part out to a separate file
        config.txt: move sequence.editor out of "core" part
        config.txt: move sendemail part out to a separate file
        config.txt: move receive part out to a separate file
        config.txt: move push part out to a separate file
        config.txt: move pull part out to a separate file
        config.txt: move gui part out to a separate file
        config.txt: move gitcvs part out to a separate file
        config.txt: move format part out to a separate file
        config.txt: move fetch part out to a separate file
        config.txt: follow camelCase naming
      3ba371f9
    • J
      Declare that the next one will be named 2.20 · 2efbb7f5
      Junio C Hamano 提交于
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      2efbb7f5
  3. 28 9月, 2018 17 次提交
    • J
      Sync with 2.19.1 · f84b9b09
      Junio C Hamano 提交于
      * maint:
        Git 2.19.1
        Git 2.18.1
        Git 2.17.2
        fsck: detect submodule paths starting with dash
        fsck: detect submodule urls starting with dash
        Git 2.16.5
        Git 2.15.3
        Git 2.14.5
        submodule-config: ban submodule paths that start with a dash
        submodule-config: ban submodule urls that start with dash
        submodule--helper: use "--" to signal end of clone options
      f84b9b09
    • J
      Git 2.19.1 · cae598d9
      Junio C Hamano 提交于
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      cae598d9
    • J
      Sync with 2.18.1 · 1958ad50
      Junio C Hamano 提交于
      * maint-2.18:
        Git 2.18.1
        Git 2.17.2
        fsck: detect submodule paths starting with dash
        fsck: detect submodule urls starting with dash
        Git 2.16.5
        Git 2.15.3
        Git 2.14.5
        submodule-config: ban submodule paths that start with a dash
        submodule-config: ban submodule urls that start with dash
        submodule--helper: use "--" to signal end of clone options
      1958ad50
    • J
      Git 2.18.1 · 268fbcd1
      Junio C Hamano 提交于
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      268fbcd1
    • J
      Sync with 2.17.2 · 44f87dac
      Junio C Hamano 提交于
      * maint-2.17:
        Git 2.17.2
        fsck: detect submodule paths starting with dash
        fsck: detect submodule urls starting with dash
        Git 2.16.5
        Git 2.15.3
        Git 2.14.5
        submodule-config: ban submodule paths that start with a dash
        submodule-config: ban submodule urls that start with dash
        submodule--helper: use "--" to signal end of clone options
      44f87dac
    • J
      Git 2.17.2 · 6e9e91e9
      Junio C Hamano 提交于
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      6e9e91e9
    • J
      fsck: detect submodule paths starting with dash · 1a7fd1fb
      Jeff King 提交于
      As with urls, submodule paths with dashes are ignored by
      git, but may end up confusing older versions. Detecting them
      via fsck lets us prevent modern versions of git from being a
      vector to spread broken .gitmodules to older versions.
      
      Compared to blocking leading-dash urls, though, this
      detection may be less of a good idea:
      
        1. While such paths provide confusing and broken results,
           they don't seem to actually work as option injections
           against anything except "cd". In particular, the
           submodule code seems to canonicalize to an absolute
           path before running "git clone" (so it passes
           /your/clone/-sub).
      
        2. It's more likely that we may one day make such names
           actually work correctly. Even after we revert this fsck
           check, it will continue to be a hassle until hosting
           servers are all updated.
      
      On the other hand, it's not entirely clear that the behavior
      in older versions is safe. And if we do want to eventually
      allow this, we may end up doing so with a special syntax
      anyway (e.g., writing "./-sub" in the .gitmodules file, and
      teaching the submodule code to canonicalize it when
      comparing).
      
      So on balance, this is probably a good protection.
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      1a7fd1fb
    • J
      fsck: detect submodule urls starting with dash · a124133e
      Jeff King 提交于
      Urls with leading dashes can cause mischief on older
      versions of Git. We should detect them so that they can be
      rejected by receive.fsckObjects, preventing modern versions
      of git from being a vector by which attacks can spread.
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      a124133e
    • J
      Sync with 2.16.5 · e43aab77
      Junio C Hamano 提交于
      * maint-2.16:
        Git 2.16.5
        Git 2.15.3
        Git 2.14.5
        submodule-config: ban submodule paths that start with a dash
        submodule-config: ban submodule urls that start with dash
        submodule--helper: use "--" to signal end of clone options
      e43aab77
    • J
      Git 2.16.5 · 27d05d1a
      Junio C Hamano 提交于
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      27d05d1a
    • J
      Sync with 2.15.3 · 424aac65
      Junio C Hamano 提交于
      * maint-2.15:
        Git 2.15.3
        Git 2.14.5
        submodule-config: ban submodule paths that start with a dash
        submodule-config: ban submodule urls that start with dash
        submodule--helper: use "--" to signal end of clone options
      424aac65
    • J
      Git 2.15.3 · 924c623e
      Junio C Hamano 提交于
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      924c623e
    • J
      Sync with Git 2.14.4 · 902df9f5
      Junio C Hamano 提交于
      * maint-2.14:
        Git 2.14.5
        submodule-config: ban submodule paths that start with a dash
        submodule-config: ban submodule urls that start with dash
        submodule--helper: use "--" to signal end of clone options
      902df9f5
    • J
      Git 2.14.5 · d0832b28
      Junio C Hamano 提交于
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      d0832b28
    • J
      submodule-config: ban submodule paths that start with a dash · 273c6149
      Jeff King 提交于
      We recently banned submodule urls that look like
      command-line options. This is the matching change to ban
      leading-dash paths.
      
      As with the urls, this should not break any use cases that
      currently work. Even with our "--" separator passed to
      git-clone, git-submodule.sh gets confused. Without the code
      portion of this patch, the clone of "-sub" added in t7417
      would yield results like:
      
          /path/to/git-submodule: 410: cd: Illegal option -s
          /path/to/git-submodule: 417: cd: Illegal option -s
          /path/to/git-submodule: 410: cd: Illegal option -s
          /path/to/git-submodule: 417: cd: Illegal option -s
          Fetched in submodule path '-sub', but it did not contain b56243f8f4eb91b2f1f8109452e659f14dd3fbe4. Direct fetching of that commit failed.
      
      Moreover, naively adding such a submodule doesn't work:
      
        $ git submodule add $url -sub
        The following path is ignored by one of your .gitignore files:
        -sub
      
      even though there is no such ignore pattern (the test script
      hacks around this with a well-placed "git mv").
      
      Unlike leading-dash urls, though, it's possible that such a
      path _could_ be useful if we eventually made it work. So
      this commit should be seen not as recommending a particular
      policy, but rather temporarily closing off a broken and
      possibly dangerous code-path. We may revisit this decision
      later.
      
      There are two minor differences to the tests in t7416 (that
      covered urls):
      
        1. We don't have a "./-sub" escape hatch to make this
           work, since the submodule code expects to be able to
           match canonical index names to the path field (so you
           are free to add submodule config with that path, but we
           would never actually use it, since an index entry would
           never start with "./").
      
        2. After this patch, cloning actually succeeds. Since we
           ignore the submodule.*.path value, we fail to find a
           config stanza for our submodule at all, and simply
           treat it as inactive. We still check for the "ignoring"
           message.
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      273c6149
    • J
      submodule-config: ban submodule urls that start with dash · f6adec4e
      Jeff King 提交于
      The previous commit taught the submodule code to invoke our
      "git clone $url $path" with a "--" separator so that we
      aren't confused by urls or paths that start with dashes.
      
      However, that's just one code path. It's not clear if there
      are others, and it would be an easy mistake to add one in
      the future. Moreover, even with the fix in the previous
      commit, it's quite hard to actually do anything useful with
      such an entry. Any url starting with a dash must fall into
      one of three categories:
      
       - it's meant as a file url, like "-path". But then any
         clone is not going to have the matching path, since it's
         by definition relative inside the newly created clone. If
         you spell it as "./-path", the submodule code sees the
         "/" and translates this to an absolute path, so it at
         least works (assuming the receiver has the same
         filesystem layout as you). But that trick does not apply
         for a bare "-path".
      
       - it's meant as an ssh url, like "-host:path". But this
         already doesn't work, as we explicitly disallow ssh
         hostnames that begin with a dash (to avoid option
         injection against ssh).
      
       - it's a remote-helper scheme, like "-scheme::data". This
         _could_ work if the receiver bends over backwards and
         creates a funny-named helper like "git-remote--scheme".
         But normally there would not be any helper that matches.
      
      Since such a url does not work today and is not likely to do
      anything useful in the future, let's simply disallow them
      entirely. That protects the existing "git clone" path (in a
      belt-and-suspenders way), along with any others that might
      exist.
      
      Our tests cover two cases:
      
        1. A file url with "./" continues to work, showing that
           there's an escape hatch for people with truly silly
           repo names.
      
        2. A url starting with "-" is rejected.
      
      Note that we expect case (2) to fail, but it would have done
      so even without this commit, for the reasons given above.
      So instead of just expecting failure, let's also check for
      the magic word "ignoring" on stderr. That lets us know that
      we failed for the right reason.
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      f6adec4e
    • J
      submodule--helper: use "--" to signal end of clone options · 98afac7a
      Jeff King 提交于
      When we clone a submodule, we call "git clone $url $path".
      But there's nothing to say that those components can't begin
      with a dash themselves, confusing git-clone into thinking
      they're options. Let's pass "--" to make it clear what we
      expect.
      
      There's no test here, because it's actually quite hard to
      make these names work, even with "git clone" parsing them
      correctly. And we're going to restrict these cases even
      further in future commits. So we'll leave off testing until
      then; this is just the minimal fix to prevent us from doing
      something stupid with a badly formed entry.
      Reported-by: Njoernchen <joernchen@phenoelit.de>
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      98afac7a
  4. 25 9月, 2018 8 次提交
    • J
      Second batch post 2.19 · fe8321ec
      Junio C Hamano 提交于
      fe8321ec
    • J
      Merge branch 'tg/range-diff-corner-case-fix' · 51bbcda1
      Junio C Hamano 提交于
      Recently added "range-diff" had a corner-case bug to cause it
      segfault, which has been corrected.
      
      * tg/range-diff-corner-case-fix:
        linear-assignment: fix potential out of bounds memory access
      51bbcda1
    • J
      Merge branch 'sg/split-index-test' · cff90bdc
      Junio C Hamano 提交于
      Test updates.
      
      * sg/split-index-test:
        t0090: disable GIT_TEST_SPLIT_INDEX for the test checking split index
        t1700-split-index: drop unnecessary 'grep'
      cff90bdc
    • J
      Merge branch 'en/update-ref-no-deref-stdin' · f52b7eea
      Junio C Hamano 提交于
      "git update-ref" learned to make both "--no-deref" and "--stdin"
      work at the same time.
      
      * en/update-ref-no-deref-stdin:
        update-ref: allow --no-deref with --stdin
        update-ref: fix type of update_flags variable to match its usage
      f52b7eea
    • J
      Merge branch 'ms/remote-error-message-update' · 00d5f665
      Junio C Hamano 提交于
      Update error messages given by "git remote" and make them consistent.
      
      * ms/remote-error-message-update:
        builtin/remote: quote remote name on error to display empty name
      00d5f665
    • J
      Merge branch 'jt/lazy-object-fetch-fix' · ee99ba7a
      Junio C Hamano 提交于
      The code to backfill objects in lazily cloned repository did not
      work correctly, which has been corrected.
      
      * jt/lazy-object-fetch-fix:
        fetch-object: set exact_oid when fetching
        fetch-object: unify fetch_object[s] functions
      ee99ba7a
    • J
      Merge branch 'en/sequencer-empty-edit-result-aborts' · 4af130af
      Junio C Hamano 提交于
      "git rebase" etc. in Git 2.19 fails to abort when given an empty
      commit log message as result of editing, which has been corrected.
      
      * en/sequencer-empty-edit-result-aborts:
        sequencer: fix --allow-empty-message behavior, make it smarter
      4af130af
    • J
      Merge branch 'ds/reachable' · 0f7ac90d
      Junio C Hamano 提交于
      Recent update broke the reachability algorithm when refs (e.g.
      tags) that point at objects that are not commit were involved,
      which has been fixed.
      
      * ds/reachable:
        commit-reach: fix memory and flag leaks
        commit-reach: properly peel tags
      0f7ac90d