1. 21 7月, 2016 4 次提交
    • J
      check_everything_connected: use a struct with named options · 7043c707
      Jeff King 提交于
      The number of variants of check_everything_connected has
      grown over the years, so that the "real" function takes
      several possibly-zero, possibly-NULL arguments. We hid the
      complexity behind some wrapper functions, but this doesn't
      scale well when we want to add new options.
      
      If we add more wrapper variants to handle the new options,
      then we can get a combinatorial explosion when those options
      might be used together (right now nobody wants to use both
      "shallow" and "transport" together, so we get by with just a
      few wrappers).
      
      If instead we add new parameters to each function, each of
      which can have a default value, then callers who want the
      defaults end up with confusing invocations like:
      
        check_everything_connected(fn, 0, data, -1, 0, NULL);
      
      where it is unclear which parameter is which (and every
      caller needs updated when we add new options).
      
      Instead, let's add a struct to hold all of the optional
      parameters. This is a little more verbose for the callers
      (who have to declare the struct and fill it in), but it
      makes their code much easier to follow, because every option
      is named as it is set (and unused options do not have to be
      mentioned at all).
      
      Note that we could also stick the iteration function and its
      callback data into the option struct, too. But since those
      are required for each call, by avoiding doing so, we can let
      very simple callers just pass "NULL" for the options and not
      worry about the struct at all.
      
      While we're touching each site, let's also rename the
      function to check_connected(). The existing name was quite
      long, and not all of the wrappers even used the full name.
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      7043c707
    • J
      check_everything_connected: convert to argv_array · 3be89f9b
      Jeff King 提交于
      This avoids the magic "9" array-size which we must avoid
      overflowing, making further patches simpler.
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      3be89f9b
    • J
      rev-list: add optional progress reporting · 434ea3cd
      Jeff King 提交于
      It's easy to ask rev-list to do a traversal that may takes
      many seconds (e.g., by calling "--objects --all"). In theory
      you can monitor its progress by the output you get to
      stdout, but this isn't always easy.
      
      Some operations, like "--count", don't make any output until
      the end.
      
      And some callers, like check_everything_connected(), are
      using it just for the error-checking of the traversal, and
      throw away stdout entirely.
      
      This patch adds a "--progress" option which can be used to
      give some eye-candy for a user waiting for a long traversal.
      This is just a rev-list option and not a regular traversal
      option, because it needs cooperation from the callbacks in
      builtin/rev-list.c to do the actual count.
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      434ea3cd
    • J
      check_everything_connected: always pass --quiet to rev-list · f26eef30
      Jeff King 提交于
      The check_everything_connected function takes a "quiet"
      parameter which does two things if non-zero:
      
        1. redirect rev-list's stderr to /dev/null to avoid
           showing errors to the user
      
        2. pass "--quiet" to rev-list
      
      Item (1) is obviously useful. But item (2) is
      surprisingly not. For rev-list, "--quiet" does not have
      anything to do with chattiness on stderr; it tells rev-list
      not to bother writing the list of traversed objects to
      stdout, for efficiency.  And since we always redirect
      rev-list's stdout to /dev/null in this function, there is no
      point in asking it to ever write anything to stdout.
      
      The efficiency gains are modest; a best-of-five run of "git
      rev-list --objects --all" on linux.git dropped from 32.013s
      to 30.502s when adding "--quiet". That's only about 5%, but
      given how easy it is, it's worth doing.
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      f26eef30
  2. 20 7月, 2016 17 次提交
    • J
      Sixth batch of topics for 2.10 · 08bb3500
      Junio C Hamano 提交于
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      08bb3500
    • J
      Merge branch 'ls/p4-tmp-refs' · 36cafe44
      Junio C Hamano 提交于
      "git p4" used a location outside $GIT_DIR/refs/ to place its
      temporary branches, which has been moved to refs/git-p4-tmp/.
      
      * ls/p4-tmp-refs:
        git-p4: place temporary refs used for branch import under refs/git-p4-tmp
      36cafe44
    • J
      Merge branch 'js/am-call-theirs-theirs-in-fallback-3way' · 3d55eea8
      Junio C Hamano 提交于
      One part of "git am" had an oddball helper function that called
      stuff from outside "his" as opposed to calling what we have "ours",
      which was not gender-neutral and also inconsistent with the rest of
      the system where outside stuff is usuall called "theirs" in
      contrast to "ours".
      
      * js/am-call-theirs-theirs-in-fallback-3way:
        am: counteract gender bias
      3d55eea8
    • J
      Merge branch 'jk/write-file' · 2b6456b8
      Junio C Hamano 提交于
      General code clean-up around a helper function to write a
      single-liner to a file.
      
      * jk/write-file:
        branch: use write_file_buf instead of write_file
        use write_file_buf where applicable
        write_file: add format attribute
        write_file: add pointer+len variant
        write_file: use xopen
        write_file: drop "gently" form
        branch: use non-gentle write_file for branch description
        am: ignore return value of write_file()
        config: fix bogus fd check when setting up default config
      2b6456b8
    • J
      Merge branch 'jk/printf-format' · 96e08010
      Junio C Hamano 提交于
      Code clean-up to avoid using a variable string that compilers may
      feel untrustable as printf-style format given to write_file()
      helper function.
      
      * jk/printf-format:
        commit.c: remove print_commit_list()
        avoid using sha1_to_hex output as printf format
        walker: let walker_say take arbitrary formats
      96e08010
    • J
      Merge branch 'rs/help-c-source-with-gitattributes' · f5236a77
      Junio C Hamano 提交于
      The .c/.h sources are marked as such in our .gitattributes file so
      that "git diff -W" and friends would work better.
      
      * rs/help-c-source-with-gitattributes:
        .gitattributes: set file type for C files
      f5236a77
    • J
      Merge branch 'nd/fetch-ref-summary' · 566fdaf6
      Junio C Hamano 提交于
      Improve the look of the way "git fetch" reports what happened to
      each ref that was fetched.
      
      * nd/fetch-ref-summary:
        fetch: reduce duplicate in ref update status lines with placeholder
        fetch: align all "remote -> local" output
        fetch: change flag code for displaying tag update and deleted ref
        fetch: refactor ref update status formatting code
        git-fetch.txt: document fetch output
      566fdaf6
    • J
      Merge branch 'jk/test-match-signal' · 39cadeec
      Junio C Hamano 提交于
      The test framework learned a new helper test_match_signal to
      check an exit code from getting killed by an expected signal.
      
      * jk/test-match-signal:
        t/lib-git-daemon: use test_match_signal
        test_must_fail: use test_match_signal
        t0005: use test_match_signal as appropriate
        tests: factor portable signal check out of t0005
      39cadeec
    • J
      Merge branch 'jk/common-main' · d4c6375f
      Junio C Hamano 提交于
      There are certain house-keeping tasks that need to be performed at
      the very beginning of any Git program, and programs that are not
      built-in commands had to do them exactly the same way as "git"
      potty does.  It was easy to make mistakes in one-off standalone
      programs (like test helpers).  A common "main()" function that
      calls cmd_main() of individual program has been introduced to
      make it harder to make mistakes.
      
      * jk/common-main:
        mingw: declare main()'s argv as const
        common-main: call git_setup_gettext()
        common-main: call restore_sigpipe_to_default()
        common-main: call sanitize_stdfds()
        common-main: call git_extract_argv0_path()
        add an extra level of indirection to main()
      d4c6375f
    • J
      Merge branch 'ak/lazy-prereq-mktemp' · df9da64a
      Junio C Hamano 提交于
      A test that unconditionally used "mktemp" learned that the command
      is not necessarily available everywhere.
      
      * ak/lazy-prereq-mktemp:
        t7610: test for mktemp before test execution
      df9da64a
    • J
      Merge branch 'nd/icase' · a883c31a
      Junio C Hamano 提交于
      "git grep -i" has been taught to fold case in non-ascii locales
      correctly.
      
      * nd/icase:
        grep.c: reuse "icase" variable
        diffcore-pickaxe: support case insensitive match on non-ascii
        diffcore-pickaxe: Add regcomp_or_die()
        grep/pcre: support utf-8
        gettext: add is_utf8_locale()
        grep/pcre: prepare locale-dependent tables for icase matching
        grep: rewrite an if/else condition to avoid duplicate expression
        grep/icase: avoid kwsset when -F is specified
        grep/icase: avoid kwsset on literal non-ascii strings
        test-regex: expose full regcomp() to the command line
        test-regex: isolate the bug test code
        grep: break down an "if" stmt in preparation for next changes
      a883c31a
    • J
      Merge branch 'bc/cocci' · a63d31b4
      Junio C Hamano 提交于
      Conversion from unsigned char sha1[20] to struct object_id
      continues.
      
      * bc/cocci:
        diff: convert prep_temp_blob() to struct object_id
        merge-recursive: convert merge_recursive_generic() to object_id
        merge-recursive: convert leaf functions to use struct object_id
        merge-recursive: convert struct merge_file_info to object_id
        merge-recursive: convert struct stage_data to use object_id
        diff: rename struct diff_filespec's sha1_valid member
        diff: convert struct diff_filespec to struct object_id
        coccinelle: apply object_id Coccinelle transformations
        coccinelle: convert hashcpy() with null_sha1 to hashclr()
        contrib/coccinelle: add basic Coccinelle transforms
        hex: add oid_to_hex_r()
      a63d31b4
    • J
      Merge branch 'js/log-to-diffopt-file' · 63641fb0
      Junio C Hamano 提交于
      The commands in the "log/diff" family have had an FILE* pointer in the
      data structure they pass around for a long time, but some codepaths
      used to always write to the standard output.  As a preparatory step
      to make "git format-patch" available to the internal callers, these
      codepaths have been updated to consistently write into that FILE*
      instead.
      
      * js/log-to-diffopt-file:
        mingw: fix the shortlog --output=<file> test
        diff: do not color output when --color=auto and --output=<file> is given
        t4211: ensure that log respects --output=<file>
        shortlog: respect the --output=<file> setting
        format-patch: use stdout directly
        format-patch: avoid freopen()
        format-patch: explicitly switch off color when writing to files
        shortlog: support outputting to streams other than stdout
        graph: respect the diffopt.file setting
        line-log: respect diffopt's configured output file stream
        log-tree: respect diffopt's configured output file stream
        log: prepare log/log-tree to reuse the diffopt.close_file attribute
      63641fb0
    • J
      Merge branch 'sb/submodule-parallel-fetch' · 7725bebe
      Junio C Hamano 提交于
      Fix recently introduced codepaths that are involved in parallel
      submodule operations, which gave up on reading too early, and
      could have wasted CPU while attempting to write under a corner
      case condition.
      
      * sb/submodule-parallel-fetch:
        hoist out handle_nonblock function for xread and xwrite
        xwrite: poll on non-blocking FDs
        xread: retry after poll on EAGAIN/EWOULDBLOCK
      7725bebe
    • J
      Merge branch 'lf/recv-sideband-cleanup' · e0e56cbf
      Junio C Hamano 提交于
      Code simplification.
      
      * lf/recv-sideband-cleanup:
        sideband.c: small optimization of strbuf usage
        sideband.c: refactor recv_sideband()
      e0e56cbf
    • J
      Merge branch 'dk/blame-move-no-reason-for-1-line-context' · 7418a6b1
      Junio C Hamano 提交于
      "git blame -M" missed a single line that was moved within the file.
      
      * dk/blame-move-no-reason-for-1-line-context:
        blame: require 0 context lines while finding moved lines with -M
      7418a6b1
    • J
      Merge branch 'nd/connect-ssh-command-config' · dc21164e
      Junio C Hamano 提交于
      A new configuration variable core.sshCommand has been added to
      specify what value for GIT_SSH_COMMAND to use per repository.
      
      * nd/connect-ssh-command-config:
        connect: read $GIT_SSH_COMMAND from config file
      dc21164e
  3. 16 7月, 2016 5 次提交
  4. 15 7月, 2016 2 次提交
    • J
      Merge branch 'jk/upload-pack-hook' · 75676c8c
      Junio C Hamano 提交于
      A hot-fix to make a test working in mingw again.
      
      * jk/upload-pack-hook:
        mingw: fix regression in t1308-config-set
      75676c8c
    • J
      mingw: fix regression in t1308-config-set · b738396c
      Johannes Schindelin 提交于
      When we tried to fix in 58461bdf (t1308: do not get fooled by symbolic
      links to the source tree, 2016-06-02) an obscure case where the user
      cd's into Git's source code via a symbolic link, a regression was
      introduced that affects all test runs on Windows.
      
      The original patch introducing the test case in question was careful to
      use `$(pwd)` instead of `$PWD`.
      
      This was done to account for the fact that Git's test suite uses shell
      scripting even on Windows, where the shell's Unix-y paths are
      incompatible with the main Git executable's idea of paths: it only
      accepts Windows paths.
      
      It is an awkward but necessary thing, then, to use `$(pwd)` (which gives
      us a Windows path) when interacting with the Git executable and `$PWD`
      (which gives the shell's idea of the current working directory in Unix-y
      form) for shell scripts, including the test suite itself.
      
      Obviously this broke the use case of the Git maintainer when changing
      the working directory into Git's source code directory via a symlink,
      i.e. when `$(pwd)` does not agree with `$PWD`.
      
      However, we must not fix that use case at the expense of regressing
      another use case.
      
      Let's special-case Windows here, even if it is ugly, for lack of a more
      elegant solution.
      Signed-off-by: NJohannes Schindelin <johannes.schindelin@gmx.de>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      b738396c
  5. 14 7月, 2016 12 次提交
    • J
      Fifth batch of topics for 2.10 · 79ed43c2
      Junio C Hamano 提交于
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      79ed43c2
    • J
      Merge branch 'jk/big-and-future-archive-tar' · 7a23f736
      Junio C Hamano 提交于
      "git archive" learned to handle files that are larger than 8GB and
      commits far in the future than expressible by the traditional US-TAR
      format.
      
      * jk/big-and-future-archive-tar:
        archive-tar: drop return value
        archive-tar: write extended headers for far-future mtime
        archive-tar: write extended headers for file sizes >= 8GB
        t5000: test tar files that overflow ustar headers
        t9300: factor out portable "head -c" replacement
      7a23f736
    • J
      Merge branch 'nd/ita-cleanup' · 42bd6681
      Junio C Hamano 提交于
      Git does not know what the contents in the index should be for a
      path added with "git add -N" yet, so "git grep --cached" should not
      show hits (or show lack of hits, with -L) in such a path, but that
      logic does not apply to "git grep", i.e. searching in the working
      tree files.  But we did so by mistake, which has been corrected.
      
      * nd/ita-cleanup:
        grep: fix grepping for "intent to add" files
        t7810-grep.sh: fix a whitespace inconsistency
        t7810-grep.sh: fix duplicated test name
      42bd6681
    • J
      Merge branch 'ps/rebase-i-auto-unstash-upon-abort' · 5eb1e9f1
      Junio C Hamano 提交于
      "git rebase -i --autostash" did not restore the auto-stashed change
      when the operation was aborted.
      
      * ps/rebase-i-auto-unstash-upon-abort:
        rebase -i: restore autostash on abort
      5eb1e9f1
    • J
      Merge branch 'js/t3404-grammo-fix' · 6c35952a
      Junio C Hamano 提交于
      Grammofix.
      
      * js/t3404-grammo-fix:
        t3404: fix a grammo (commands are ran -> commands are run)
      6c35952a
    • J
      Merge branch 'js/sign-empty-commit-fix' · c5109266
      Junio C Hamano 提交于
      "git commit --amend --allow-empty-message -S" for a commit without
      any message body could have misidentified where the header of the
      commit object ends.
      
      * js/sign-empty-commit-fix:
        commit -S: avoid invalid pointer with empty message
      c5109266
    • J
      Merge branch 'mm/doc-tt' · ce18123c
      Junio C Hamano 提交于
      More mark-up updates to typeset strings that are expected to
      literally typed by the end user in fixed-width font.
      
      * mm/doc-tt:
        doc: typeset HEAD and variants as literal
        CodingGuidelines: formatting HEAD in documentation
        doc: typeset long options with argument as literal
        doc: typeset '--' as literal
        doc: typeset long command-line options as literal
        doc: typeset short command-line options as literal
        Documentation/git-mv.txt: fix whitespace indentation
      ce18123c
    • J
      Merge branch 'dg/subtree-rebase-test' · fc8a3a60
      Junio C Hamano 提交于
      Add a test to specify the desired behaviour that currently is not
      available in "git rebase -Xsubtree=...".
      
      * dg/subtree-rebase-test:
        contrib/subtree: Add a test for subtree rebase that loses commits
      fc8a3a60
    • J
      Merge branch 'nd/doc-new-command' · 7aa46d2b
      Junio C Hamano 提交于
      Typofix in a doc.
      
      * nd/doc-new-command:
        new-command.txt: correct the command description file
      7aa46d2b
    • J
      Merge branch 'ew/gc-auto-pack-limit-fix' · 97865e83
      Junio C Hamano 提交于
      "gc.autoPackLimit" when set to 1 should not trigger a repacking
      when there is only one pack, but the code counted poorly and did
      so.
      
      * ew/gc-auto-pack-limit-fix:
        gc: fix off-by-one error with gc.autoPackLimit
      97865e83
    • J
      Merge branch 'ah/unpack-trees-advice-messages' · 67166a8d
      Junio C Hamano 提交于
      Grammofix.
      
      * ah/unpack-trees-advice-messages:
        unpack-trees: fix English grammar in do-this-before-that messages
      67166a8d
    • J
      Merge branch 'va/i18n-even-more' · 2703572b
      Junio C Hamano 提交于
      More markings of messages for i18n, with updates to various tests
      to pass GETTEXT_POISON tests.
      
      One patch from the original submission dropped due to conflicts
      with jk/upload-pack-hook, which is still in flux.
      
      * va/i18n-even-more: (38 commits)
        t5541: become resilient to GETTEXT_POISON
        i18n: branch: mark comment when editing branch description for translation
        i18n: unmark die messages for translation
        i18n: submodule: escape shell variables inside eval_gettext
        i18n: submodule: join strings marked for translation
        i18n: init-db: join message pieces
        i18n: remote: allow translations to reorder message
        i18n: remote: mark URL fallback text for translation
        i18n: standardise messages
        i18n: sequencer: add period to error message
        i18n: merge: change command option help to lowercase
        i18n: merge: mark messages for translation
        i18n: notes: mark options for translation
        i18n: notes: mark strings for translation
        i18n: transport-helper.c: change N_() call to _()
        i18n: bisect: mark strings for translation
        t5523: use test_i18ngrep for negation
        t4153: fix negated test_i18ngrep call
        t9003: become resilient to GETTEXT_POISON
        tests: unpack-trees: update to use test_i18n* functions
        ...
      2703572b