1. 22 10月, 2016 2 次提交
    • J
      test-lib: add --verbose-log option · 452320f1
      Jeff King 提交于
      The "--verbose" option redirects output from arbitrary
      test commands to stdout. This is useful for examining the
      output manually, like:
      
        ./t5547-push-quarantine.sh -v | less
      
      But it also means that the output is intermingled with the
      TAP directives, which can confuse a TAP parser like "prove".
      This has always been a potential problem, but became an
      issue recently when one test happened to output the word
      "ok" on a line by itself, which prove interprets as a test
      success:
      
        $ prove t5547-push-quarantine.sh :: -v
        t5547-push-quarantine.sh .. 1/? To dest.git
         * [new branch]      HEAD -> master
        To dest.git
         ! [remote rejected] reject -> reject (pre-receive hook declined)
        error: failed to push some refs to 'dest.git'
        fatal: git cat-file d08c8eba97f4e683ece08654c7c8d2ba0c03b129: bad file
        t5547-push-quarantine.sh .. Failed -1/4 subtests
      
        Test Summary Report
        -------------------
        t5547-push-quarantine.sh (Wstat: 0 Tests: 5 Failed: 0)
          Parse errors: Tests out of sequence.  Found (2) but expected (3)
                        Tests out of sequence.  Found (3) but expected (4)
                        Tests out of sequence.  Found (4) but expected (5)
                        Bad plan.  You planned 4 tests but ran 5.
        Files=1, Tests=5,  0 wallclock secs ( 0.01 usr +  0.01 sys =  0.02 CPU)
        Result: FAIL
      
      One answer is "if it hurts, don't do it", but that's not
      quite the whole story. The Travis tests use "--verbose
      --tee" so that they can get the benefit of prove's parallel
      options, along with a verbose log in case there is a
      failure. We just need the verbose output to go to the log,
      but keep stdout clean.
      
      Getting this right turns out to be surprisingly difficult.
      Here's the progression of alternatives I considered:
      
       1. Add an option to write verbose output to stderr. This is
          hard to capture, though, because we want each test to
          have its own log (because they're all run in parallel
          and the jumbled output would be useless).
      
       2. Add an option to write verbose output to a file in
          test-results. This works, but the log is missing all of
          the non-verbose output, which gives context.
      
       3. Like (2), but teach say_color() to additionally output
          to the log. This mostly works, but misses any output
          that happens outside of the say() functions (which isn't
          a lot, but is a potential maintenance headache).
      
       4. Like (2), but make the log file the same as the "--tee"
          file. That almost works, but now we have two processes
          opening the same file. That gives us two separate
          descriptors, each with their own idea of the current
          position. They'll each start writing at offset 0, and
          overwrite each other's data.
      
       5. Like (4), but in each case open the file for appending.
          That atomically positions each write at the end of the
          file.
      
          It's possible we may still get sheared writes between
          the two processes, but this is already the case when
          writing to stdout. It's not a problem in practice
          because the test harness generally waits for snippets to
          finish before writing the TAP output.
      
          We can ignore buffering issues with tee, because POSIX
          mandates that it does not buffer. Likewise, POSIX
          specifies "tee -a", so it should be available
          everywhere.
      
      This patch implements option (5), which seems to work well
      in practice.
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      452320f1
    • J
      test-lib: handle TEST_OUTPUT_DIRECTORY with spaces · 925bdc92
      Jeff King 提交于
      We are careful in test_done to handle a results directory
      with a space in it, but the "--tee" code path does not.
      Doing:
      
        export TEST_OUTPUT_DIRECTORY='/tmp/path with spaces'
        ./t000-init.sh --tee
      
      results in errors. Let's consistently double-quote our path
      variables so that this works.
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      925bdc92
  2. 07 6月, 2016 5 次提交
    • J
      Git 2.8.4 · 0b65a8db
      Junio C Hamano 提交于
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      0b65a8db
    • J
      Merge branch 'kb/msys2-tty' into maint · 1676827c
      Junio C Hamano 提交于
      The "are we talking with TTY, doing an interactive session?"
      detection has been updated to work better for "Git for Windows".
      
      * kb/msys2-tty:
        mingw: make isatty() recognize MSYS2's pseudo terminals (/dev/pty*)
      1676827c
    • J
      Merge branch 'da/difftool' into maint · 389c3289
      Junio C Hamano 提交于
      "git difftool" learned to handle unmerged paths correctly in
      dir-diff mode.
      
      * da/difftool:
        difftool: handle unmerged files in dir-diff mode
        difftool: initialize variables for readability
      389c3289
    • J
      Merge branch 'tb/core-eol-fix' into maint · 7dcbf891
      Junio C Hamano 提交于
      A couple of bugs around core.autocrlf have been fixed.
      
      * tb/core-eol-fix:
        convert.c: ident + core.autocrlf didn't work
        t0027: test cases for combined attributes
        convert: allow core.autocrlf=input and core.eol=crlf
        t0027: make commit_chk_wrnNNO() reliable
      7dcbf891
    • J
      Merge branch 'ar/diff-args-osx-precompose' into maint · 05781d37
      Junio C Hamano 提交于
      Many commands normalize command line arguments from NFD to NFC
      variant of UTF-8 on OSX, but commands in the "diff" family did
      not, causing "git diff $path" to complain that no such path is
      known to Git.  They have been taught to do the normalization.
      
      * ar/diff-args-osx-precompose:
        diff: run arguments through precompose_argv
      05781d37
  3. 01 6月, 2016 5 次提交
    • J
      More topics for 2.8.4 · 4b0891ff
      Junio C Hamano 提交于
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      4b0891ff
    • J
      Merge branch 'sb/submodule-deinit-all' into maint · 3296e1a9
      Junio C Hamano 提交于
      Correct faulty recommendation to use "git submodule deinit ." when
      de-initialising all submodules, which would result in a strange
      error message in a pathological corner case.
      
      * sb/submodule-deinit-all:
        submodule deinit: require '--all' instead of '.' for all submodules
      3296e1a9
    • J
      Merge branch 'bn/http-cookiefile-config' into maint · e646a82c
      Junio C Hamano 提交于
      "http.cookieFile" configuration variable clearly wants a pathname,
      but we forgot to treat it as such by e.g. applying tilde expansion.
      
      * bn/http-cookiefile-config:
        http: expand http.cookieFile as a path
        Documentation: config: improve word ordering for http.cookieFile
      e646a82c
    • J
      Merge branch 'jk/test-send-sh-x-trace-elsewhere' into maint · 68a6e976
      Junio C Hamano 提交于
      Running tests with '-x' option to trace the individual command
      executions is a useful way to debug test scripts, but some tests
      that capture the standard error stream and check what the command
      said can be broken with the trace output mixed in.  When running
      our tests under "bash", however, we can redirect the trace output
      to another file descriptor to keep the standard error of programs
      being tested intact.
      
      * jk/test-send-sh-x-trace-elsewhere:
        test-lib: set BASH_XTRACEFD automatically
      68a6e976
    • J
      Merge branch 'js/name-rev-use-oldest-ref' into maint · 9ee8f940
      Junio C Hamano 提交于
      "git describe --contains" often made a hard-to-justify choice of
      tag to give name to a given commit, because it tried to come up
      with a name with smallest number of hops from a tag, causing an old
      commit whose close descendant that is recently tagged were not
      described with respect to an old tag but with a newer tag.  It did
      not help that its computation of "hop" count was further tweaked to
      penalize being on a side branch of a merge.  The logic has been
      updated to favor using the tag with the oldest tagger date, which
      is a lot easier to explain to the end users: "We describe a commit
      in terms of the (chronologically) oldest tag that contains the
      commit."
      
      * js/name-rev-use-oldest-ref:
        name-rev: include taggerdate in considering the best name
      9ee8f940
  4. 27 5月, 2016 21 次提交
  5. 19 5月, 2016 7 次提交