1. 28 5月, 2014 1 次提交
  2. 10 5月, 2014 1 次提交
  3. 09 5月, 2014 8 次提交
  4. 08 5月, 2014 1 次提交
  5. 23 4月, 2014 1 次提交
  6. 18 4月, 2014 2 次提交
    • K
      Revert "rebase: fix run_specific_rebase's use of "return" on FreeBSD" · 8cd65967
      Kyle J. McKay 提交于
      This reverts commit 99855ddf.
      
      The workaround 99855ddf introduced to deal with problematic
      "return" statements in scripts run by "dot" commands located
      inside functions only handles one part of the problem.  The
      issue has now been addressed by not using "return" statements
      in this way in the git-rebase--*.sh scripts.
      
      This workaround is therefore no longer necessary, so clean
      up the code by reverting it.
      Signed-off-by: NKyle J. McKay <mackyle@gmail.com>
      Acked-by: NMatthieu Moy <Matthieu.Moy@imag.fr>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      8cd65967
    • K
      rebase: avoid non-function use of "return" on FreeBSD · 9f50d32b
      Kyle J. McKay 提交于
      Since a1549e10, 15d4bf2e and 01a1e646 (first appearing in v1.8.4)
      the git-rebase--*.sh scripts have used a "return" to stop execution
      of the dot-sourced file and return to the "dot" command that
      dot-sourced it.  The /bin/sh utility on FreeBSD however behaves
      poorly under some circumstances when such a "return" is executed.
      
      In particular, if the "dot" command is contained within a function,
      then when a "return" is executed by the script it runs (that is not
      itself inside a function), control will return from the function
      that contains the "dot" command skipping any statements that might
      follow the dot command inside that function.  Commit 99855ddf (first
      appearing in v1.8.4.1) addresses this by making the "dot" command
      the last line in the function.
      
      Unfortunately the FreeBSD /bin/sh may also execute some statements
      in the script run by the "dot" command that appear after the
      troublesome "return".  The fix in 99855ddf does not address this
      problem.
      
      For example, if you have script1.sh with these contents:
      
      run_script2() {
              . "$(dirname -- "$0")/script2.sh"
              _e=$?
              echo only this line should show
              [ $_e -eq 5 ] || echo expected status 5 got $_e
              return 3
      }
      run_script2
      e=$?
      [ $e -eq 3 ] || { echo expected status 3 got $e; exit 1; }
      
      And script2.sh with these contents:
      
      if [ 5 -gt 3 ]; then
              return 5
      fi
      case bad in *)
              echo always shows
      esac
      echo should not get here
      ! :
      
      When running script1.sh (e.g. '/bin/sh script1.sh' or './script1.sh'
      after making it executable), the expected output from a POSIX shell
      is simply the single line:
      
      only this line should show
      
      However, when run using FreeBSD's /bin/sh, the following output
      appears instead:
      
      should not get here
      expected status 3 got 1
      
      Not only did the lines following the "dot" command in the run_script2
      function in script1.sh get skipped, but additional lines in script2.sh
      following the "return" got executed -- but not all of them (e.g. the
      "echo always shows" line did not run).
      
      These issues can be avoided by not using a top-level "return" in
      script2.sh.  If script2.sh is changed to this:
      
      main() {
              if [ 5 -gt 3 ]; then
                      return 5
              fi
              case bad in *)
                      echo always shows
              esac
              echo should not get here
              ! :
      }
      main
      
      Then it behaves the same when using FreeBSD's /bin/sh as when using
      other more POSIX compliant /bin/sh implementations.
      
      We fix the git-rebase--*.sh scripts in a similar fashion by moving
      the top-level code that contains "return" statements into its own
      function and then calling that as the last line in the script.
      Signed-off-by: NKyle J. McKay <mackyle@gmail.com>
      Acked-by: NMatthieu Moy <Matthieu.Moy@imag.fr>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      9f50d32b
  7. 12 4月, 2014 2 次提交
    • K
      test: fix t5560 on FreeBSD · ff7a1c67
      Kyle J. McKay 提交于
      Since fd0a8c2e (first appearing in v1.7.0), the
      t/t5560-http-backend-noserver.sh test has used a backslash escape
      inside a ${} expansion in order to specify a literal '?' character.
      
      Unfortunately the FreeBSD /bin/sh does not interpret this correctly.
      
      In a POSIX compliant shell, the following:
      
      x='one?two?three'
      echo "${x#*\?}"
      
      Would be expected to produce this:
      
      two?three
      
      When using the FreeBSD /bin/sh instead you get this:
      
      one?two?three
      
      In fact the FreeBSD /bin/sh treats the backslash as a literal
      character to match so that this:
      
      y='one\two\three'
      echo "${y#*\?}"
      
      Produces this unexpected value:
      
      wo\three
      
      In this case the backslash is not only treated literally, it also
      fails to defeat the special meaning of the '?' character.
      
      Instead, we can use the [...] construct to defeat the special meaning
      of the '?' character and match it exactly in a way that works for the
      FreeBSD /bin/sh as well as other POSIX /bin/sh implementations.
      
      Changing the example like so:
      
      x='one?two?three'
      echo "${x#*[?]}"
      
      Produces the expected output using the FreeBSD /bin/sh.
      
      Therefore, change the use of \? to [?] in order to be compatible with
      the FreeBSD /bin/sh which allows t/t5560-http-backend-noserver.sh to
      pass on FreeBSD again.
      Signed-off-by: NKyle J. McKay <mackyle@gmail.com>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      ff7a1c67
    • K
      test: fix t7001 cp to use POSIX options · 00764ca1
      Kyle J. McKay 提交于
      Since 11502468 and 04c1ee57 (both first appearing in v1.8.5), the
      t7001-mv test has used "cp -a" to perform a copy in several of the
      tests.
      
      However, the "-a" option is not required for a POSIX cp utility and
      some platforms' cp utilities do not support it.
      
      The POSIX equivalent of -a is -R -P -p.
      
      Change "cp -a" to "cp -R -P -p" so that the t7001-mv test works
      on systems with a cp utility that only implements the POSIX
      required set of options and not the "-a" option.
      Signed-off-by: NKyle J. McKay <mackyle@gmail.com>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      00764ca1
  8. 10 4月, 2014 9 次提交
  9. 09 4月, 2014 3 次提交
  10. 04 4月, 2014 10 次提交
  11. 03 4月, 2014 1 次提交
  12. 02 4月, 2014 1 次提交
    • J
      t4212: loosen far-in-future test for AIX · f80d1f95
      Jeff King 提交于
      One of the tests in t4212 checks our behavior when we feed
      gmtime a date so far in the future that it gives up and
      returns NULL. Some implementations, like AIX, may actually
      just provide us a bogus result instead.
      
      It's not worth it for us to come up with heuristics that
      guess whether the return value is sensible or not. On good
      platforms where gmtime reports the problem to us with NULL,
      we will print the epoch value. On bad platforms, we will
      print garbage.  But our test should be written for the
      lowest common denominator so that it passes everywhere.
      Reported-by: NCharles Bailey <cbailey32@bloomberg.net>
      Signed-off-by: NJeff King <peff@peff.net>
      Signed-off-by: NJunio C Hamano <gitster@pobox.com>
      f80d1f95