1. 14 11月, 2018 1 次提交
    • N
      checkout: disambiguate dwim tracking branches and local files · be4908f1
      Nguyễn Thái Ngọc Duy 提交于
      When checkout dwim is added in [1], it is restricted to only dwim when
      certain conditions are met and fall back to default checkout behavior
      otherwise. It turns out falling back could be confusing. One of the
      conditions to turn
      
          git checkout frotz
      
      to
      
          git checkout -b frotz origin/frotz
      
      is that frotz must not exist as a file. But when the user comes to
      expect "git checkout frotz" to create the branch "frotz" and there
      happens to be a file named "frotz", git's silently reverting "frotz"
      file content is not helping. This is reported in Git mailing list [2]
      and even used as an example of "Git is bad" elsewhere [3].
      
      We normally try to do the right thing, but when there are multiple
      "right things" to do, it's best to leave it to the user to decide.
      Check this case, ask the user to to disambiguate:
      
      - "git checkout -- foo" will check out path "foo"
      - "git checkout foo --" will dwim and create branch "foo" [4]
      
      For users who do not want dwim, use --no-guess. It's useless in this
      particular case because "git checkout --no-guess foo --" will just
      fail. But it could be used by scripts.
      
      [1] 70c9ac2f (DWIM "git checkout frotz" to "git checkout -b frotz
          origin/frotz" - 2009-10-18)
      [2] https://public-inbox.org/git/CACsJy8B2TVr1g+k+eSQ=pBEO3WN4_LtgLo9gpur8X7Z9GOFL_A@mail.gmail.com/
      [3] https://news.ycombinator.com/item?id=18230655
      [4] a047fafc (checkout: allow dwim for branch creation for "git
          checkout $branch --" - 2013-10-18)
      Signed-off-by: NNguyễn Thái Ngọc Duy <pclouds@gmail.com>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      be4908f1
  2. 13 11月, 2018 32 次提交
    • J
      Tenth batch for 2.20 · d166e6af
      Junio C Hamano 提交于
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      d166e6af
    • J
      Merge branch 'nd/complete-format-patch' · 95182c65
      Junio C Hamano 提交于
      The support for format-patch (and send-email) by the command-line
      completion script (in contrib/) has been simplified a bit.
      
      * nd/complete-format-patch:
        completion: use __gitcomp_builtin for format-patch
      95182c65
    • J
      Merge branch 'nd/tree-walk-path-exclusion' · 1e4a714e
      Junio C Hamano 提交于
      Pathspec matching against a tree object were buggy when negative
      pathspec elements were involved, which has been fixed.
      
      * nd/tree-walk-path-exclusion:
        tree-walk.c: fix overoptimistic inclusion in :(exclude) matching
      1e4a714e
    • J
      Merge branch 'sg/travis-install-dependencies' · 57f06d5a
      Junio C Hamano 提交于
      The procedure to install dependencies before testing at Travis CI
      is getting revamped for both simplicity and flexibility, taking
      advantage of the recent move to the vm-based environment.
      
      * sg/travis-install-dependencies:
        travis-ci: install packages in 'ci/install-dependencies.sh'
      57f06d5a
    • J
      Merge branch 'bp/add-diff-files-optim' · 9235a6ce
      Junio C Hamano 提交于
      "git add" needs to internally run "diff-files" equivalent, and the
      codepath learned the same optimization as "diff-files" has to run
      lstat(2) in parallel to find which paths have been updated in the
      working tree.
      
      * bp/add-diff-files-optim:
        add: speed up cmd_add() by utilizing read_cache_preload()
      9235a6ce
    • J
      Merge branch 'jk/xdiff-interface' · 39d23dfa
      Junio C Hamano 提交于
      The interface into "xdiff" library used to discover the offset and
      size of a generated patch hunk by first formatting it into the
      textual hunk header "@@ -n,m +k,l @@" and then parsing the numbers
      out.  A new interface has been introduced to allow callers a more
      direct access to them.
      
      * jk/xdiff-interface:
        xdiff-interface: drop parse_hunk_header()
        range-diff: use a hunk callback
        diff: convert --check to use a hunk callback
        combine-diff: use an xdiff hunk callback
        diff: use hunk callback for word-diff
        diff: discard hunk headers for patch-ids earlier
        diff: avoid generating unused hunk header lines
        xdiff-interface: provide a separate consume callback for hunks
        xdiff: provide a separate emit callback for hunks
      39d23dfa
    • J
      Merge branch 'jk/misc-unused-fixes' · f22838aa
      Junio C Hamano 提交于
      Assorted fixes for bugs found while auditing -Wunused-parameter
      warnings.
      
      * jk/misc-unused-fixes:
        approxidate: fix NULL dereference in date_time()
        pathspec: handle non-terminated strings with :(attr)
        approxidate: handle pending number for "specials"
        rev-list: handle flags for --indexed-objects
      f22838aa
    • J
      Merge branch 'nd/per-worktree-ref-iteration' · e146cc97
      Junio C Hamano 提交于
      The code to traverse objects for reachability, used to decide what
      objects are unreferenced and expendable, have been taught to also
      consider per-worktree refs of other worktrees as starting points to
      prevent data loss.
      
      * nd/per-worktree-ref-iteration:
        git-worktree.txt: correct linkgit command name
        reflog expire: cover reflog from all worktrees
        fsck: check HEAD and reflog from other worktrees
        fsck: move fsck_head_link() to get_default_heads() to avoid some globals
        revision.c: better error reporting on ref from different worktrees
        revision.c: correct a parameter name
        refs: new ref types to make per-worktree refs visible to all worktrees
        Add a place for (not) sharing stuff between worktrees
        refs.c: indent with tabs, not spaces
      e146cc97
    • J
      Merge branch 'bp/refresh-index-using-preload' · 11aa560d
      Junio C Hamano 提交于
      The helper function to refresh the cached stat information in the
      in-core index has learned to perform the lstat() part of the
      operation in parallel on multi-core platforms.
      
      * bp/refresh-index-using-preload:
        refresh_index: remove unnecessary calls to preload_index()
        speed up refresh_index() by utilizing preload_index()
      11aa560d
    • J
      Merge branch 'ag/rebase-i-in-c' · 409b3f28
      Junio C Hamano 提交于
      Code clean-up for a topic already in 'master'.
      
      * ag/rebase-i-in-c:
        sequencer.c: remove a stray semicolon
      409b3f28
    • J
      Merge branch 'al/send-email-auto-cte-fixup' · 2281aa87
      Junio C Hamano 提交于
      "git send-email --transfer-encoding=..." in recent versions of Git
      sometimes produced an empty "Content-Transfer-Encoding:" header,
      which has been corrected.
      
      * al/send-email-auto-cte-fixup:
        send-email: avoid empty transfer encoding header
      2281aa87
    • J
      Merge branch 'ds/add-missing-tags' · 291123e6
      Junio C Hamano 提交于
      The history traversal used to implement the tag-following has been
      optimized by introducing a new helper.
      
      * ds/add-missing-tags:
        remote: make add_missing_tags() linear
        test-reach: test get_reachable_subset
        commit-reach: implement get_reachable_subset
      291123e6
    • J
      Merge branch 'sh/mingw-safer-compat-poll' · 1961efec
      Junio C Hamano 提交于
      Windows fix.
      
      * sh/mingw-safer-compat-poll:
        poll: use GetTickCount64() to avoid wrap-around issues
      1961efec
    • J
      Merge branch 'js/rebase-p-tests' · 6e31fa9c
      Junio C Hamano 提交于
      In preparation to the day when we can deprecate and remove the
      "rebase -p", make sure we can skip and later remove tests for
      it.
      
      * js/rebase-p-tests:
        tests: optionally skip `git rebase -p` tests
        t3418: decouple test cases from a previous `rebase -p` test case
        t3404: decouple some test cases from outcomes of previous test cases
      6e31fa9c
    • J
      Merge branch 'pw/am-rebase-read-author-script' · 6b2a5243
      Junio C Hamano 提交于
      Unify code to read the author-script used in "git am" and the
      commands that use the sequencer machinery, e.g. "git rebase -i".
      
      * pw/am-rebase-read-author-script:
        sequencer: use read_author_script()
        add read_author_script() to libgit
        am: rename read_author_script()
        am: improve author-script error reporting
        am: don't die in read_author_script()
      6b2a5243
    • J
      Merge branch 'jc/war-on-string-list' · fd4bb380
      Junio C Hamano 提交于
      Replace three string-list instances used as look-up tables in "git
      fetch" with hashmaps.
      
      * jc/war-on-string-list:
        fetch: replace string-list used as a look-up table with a hashmap
      fd4bb380
    • J
      Merge branch 'ag/rev-parse-all-exclude-fix' · 20d04b44
      Junio C Hamano 提交于
      "git rev-parse --exclude=* --branches --branches"  (i.e. first
      saying "add only things that do not match '*' out of all branches"
      and then adding all branches, without any exclusion this time")
      worked as expected, but "--exclude=* --all --all" did not work the
      same way, which has been fixed.
      
      * ag/rev-parse-all-exclude-fix:
        rev-parse: clear --exclude list after 'git rev-parse --all'
      20d04b44
    • J
      Merge branch 'jt/tighten-fetch-proto-v2-response' · 67cf2fa3
      Junio C Hamano 提交于
      "git fetch" was a bit loose in parsing resposes from the other side
      when talking over the protocol v2.
      
      * jt/tighten-fetch-proto-v2-response:
        fetch-pack: be more precise in parsing v2 response
      67cf2fa3
    • J
      Merge branch 'ao/submodule-wo-gitmodules-checked-out' · abb4824d
      Junio C Hamano 提交于
      The submodule support has been updated to read from the blob at
      HEAD:.gitmodules when the .gitmodules file is missing from the
      working tree.
      
      * ao/submodule-wo-gitmodules-checked-out:
        t/helper: add test-submodule-nested-repo-config
        submodule: support reading .gitmodules when it's not in the working tree
        submodule: add a helper to check if it is safe to write to .gitmodules
        t7506: clean up .gitmodules properly before setting up new scenario
        submodule: use the 'submodule--helper config' command
        submodule--helper: add a new 'config' subcommand
        t7411: be nicer to future tests and really clean things up
        t7411: merge tests 5 and 6
        submodule: factor out a config_set_in_gitmodules_file_gently function
        submodule: add a print_config_from_gitmodules() helper
      abb4824d
    • J
      Merge branch 'nb/worktree-api-doc' · 504bdc59
      Junio C Hamano 提交于
      Code readability fix.
      
      * nb/worktree-api-doc:
        worktree: rename is_worktree_locked to worktree_lock_reason
        worktree: update documentation for lock_reason and lock_reason_valid
      504bdc59
    • J
      Merge branch 'ma/sequencer-do-reset-saner-loop-termination' · daa82824
      Junio C Hamano 提交于
      Code readability fix.
      
      * ma/sequencer-do-reset-saner-loop-termination:
        sequencer: break out of loop explicitly
      daa82824
    • J
      Merge branch 'js/mingw-utf8-env' · 0474cd19
      Junio C Hamano 提交于
      Windows fix.
      
      * js/mingw-utf8-env:
        mingw: reencode environment variables on the fly (UTF-16 <-> UTF-8)
        t7800: fix quoting
      0474cd19
    • J
      Merge branch 'js/mingw-perl5lib' · 6c268fdd
      Junio C Hamano 提交于
      Windows fix.
      
      * js/mingw-perl5lib:
        mingw: unset PERL5LIB by default
        config: move Windows-specific config settings into compat/mingw.c
        config: allow for platform-specific core.* config settings
        config: rename `dummy` parameter to `cb` in git_default_config()
      6c268fdd
    • J
      Merge branch 'js/mingw-isatty-and-dup2' · fbfdc075
      Junio C Hamano 提交于
      Windows fix.
      
      * js/mingw-isatty-and-dup2:
        mingw: fix isatty() after dup2()
      fbfdc075
    • J
      Merge branch 'ab/pack-tests-cleanup' · bce4fc60
      Junio C Hamano 提交于
      A couple of tests used to leave the repository in a state that is
      deliberately corrupt, which have been corrected.
      
      * ab/pack-tests-cleanup:
        index-pack tests: don't leave test repo dirty at end
        pack-objects tests: don't leave test .git corrupt at end
        pack-objects test: modernize style
      bce4fc60
    • J
      Merge branch 'ds/test-multi-pack-index' · 5fb92632
      Junio C Hamano 提交于
      Tests for the recently introduced multi-pack index machinery.
      
      * ds/test-multi-pack-index:
        packfile: close multi-pack-index in close_all_packs
        multi-pack-index: define GIT_TEST_MULTI_PACK_INDEX
        midx: close multi-pack-index on repack
        midx: fix broken free() in close_midx()
      5fb92632
    • J
      Merge branch 'nd/wildmatch-double-asterisk' · 25e4da89
      Junio C Hamano 提交于
      A pattern with '**' that does not have a slash on either side used
      to be an invalid one, but the code now treats such double-asterisks
      the same way as two normal asterisks that happen to be adjacent to
      each other.
      
      * nd/wildmatch-double-asterisk:
        wildmatch: change behavior of "foo**bar" in WM_PATHNAME mode
      25e4da89
    • J
      Merge branch 'nd/per-worktree-config' · 8c758f9a
      Junio C Hamano 提交于
      A fourth class of configuration files (in addition to the
      traditional "system wide", "per user in the $HOME directory" and
      "per repository in the $GIT_DIR/config") has been introduced so
      that different worktrees that share the same repository (hence the
      same $GIT_DIR/config file) can use different customization.
      
      * nd/per-worktree-config:
        worktree: add per-worktree config files
        t1300: extract and use test_cmp_config()
      8c758f9a
    • J
      Merge branch 'jk/stream-pack-non-delta-clarification' · c657aa05
      Junio C Hamano 提交于
      Additional comment on a tricky piece of code to help developers.
      
      * jk/stream-pack-non-delta-clarification:
        read_istream_pack_non_delta(): document input handling
      c657aa05
    • J
      Merge branch 'jk/proto-v2-ref-prefix-fix' · 81c365bb
      Junio C Hamano 提交于
      "git ls-remote $there foo" was broken by recent update for the
      protocol v2 and stopped showing refs that match 'foo' that are not
      refs/{heads,tags}/foo, which has been fixed.
      
      * jk/proto-v2-ref-prefix-fix:
        ls-remote: pass heads/tags prefixes to transport
        ls-remote: do not send ref prefixes for patterns
      81c365bb
    • J
      Merge branch 'jk/detect-truncated-zlib-input' · 879a8d4b
      Junio C Hamano 提交于
      A regression in Git 2.12 era made "git fsck" fall into an infinite
      loop while processing truncated loose objects.
      
      * jk/detect-truncated-zlib-input:
        cat-file: handle streaming failures consistently
        check_stream_sha1(): handle input underflow
        t1450: check large blob in trailing-garbage test
      879a8d4b
    • J
      Merge branch 'nd/config-split' · fd7761a1
      Junio C Hamano 提交于
      Split the overly large Documentation/config.txt file into million
      little pieces.  This potentially allows each individual piece
      included into the manual page of the command it affects more easily.
      
      * nd/config-split: (81 commits)
        config.txt: remove config/dummy.txt
        config.txt: move worktree.* to a separate file
        config.txt: move web.* to a separate file
        config.txt: move versionsort.* to a separate file
        config.txt: move user.* to a separate file
        config.txt: move url.* to a separate file
        config.txt: move uploadpack.* to a separate file
        config.txt: move uploadarchive.* to a separate file
        config.txt: move transfer.* to a separate file
        config.txt: move tag.* to a separate file
        config.txt: move submodule.* to a separate file
        config.txt: move stash.* to a separate file
        config.txt: move status.* to a separate file
        config.txt: move splitIndex.* to a separate file
        config.txt: move showBranch.* to a separate file
        config.txt: move sequencer.* to a separate file
        config.txt: move sendemail-config.txt to config/
        config.txt: move reset.* to a separate file
        config.txt: move rerere.* to a separate file
        config.txt: move repack.* to a separate file
        ...
      fd7761a1
  3. 07 11月, 2018 1 次提交
    • J
      approxidate: fix NULL dereference in date_time() · aa097b88
      Jeff King 提交于
      When we see a time like "noon", we pass "12" to our date_time() helper,
      which sets the hour to 12pm. If the current time is before noon, then we
      wrap around to yesterday using date_yesterday(). But unlike the normal
      calls to date_yesterday() from approxidate_alpha(), we pass a NULL "num"
      parameter. Since c27cc94f (approxidate: handle pending number for
      "specials", 2018-11-02), that causes a segfault.
      
      One way to fix this is by checking for NULL. But arguably date_time() is
      abusing our helper by passing NULL in the first place (and this is the
      only case where one of these "special" parsers is used this way). So
      instead, let's have it just do the 1-day subtraction itself. It's still
      just a one-liner due to our update_tm() helper.
      
      Note that the test added here is a little funny, as we say "10am noon",
      which makes the "10am" seem pointless.  But this bug can only be
      triggered when it the currently-parsed hour is before the special time.
      The latest special time is "tea" at 1700, but t0006 uses a hard-coded
      TEST_DATE_NOW of 1900. We could reset TEST_DATE_NOW, but that may lead
      to confusion in other tests. Just saying "10am noon" makes this test
      self-contained.
      Reported-by: NCarlo Arenas <carenas@gmail.com>
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      aa097b88
  4. 06 11月, 2018 6 次提交