Merge branch 'maint'
authorJunio C Hamano <gitster@pobox.com>
Sat, 8 Mar 2008 06:43:46 +0000 (22:43 -0800)
committerJunio C Hamano <gitster@pobox.com>
Sat, 8 Mar 2008 06:43:46 +0000 (22:43 -0800)
* maint:
unquote_c_style: fix off-by-one.
test-lib: fix TERM to dumb for test repeatability
config.txt: refer to --upload-pack and --receive-pack instead of --exec
git-gui: Gracefully fall back to po2msg.sh if msgfmt --tcl fails

1  2 
Documentation/config.txt
t/test-lib.sh
diff --combined Documentation/config.txt
index 683a53a0be27fda7ab90b02e34faddc20dd8b460,531ec46e957f85af2dfad69461ba81990500289e..c5e094a9c4a31568e4efb2c70af7e7808ae63528
@@@ -139,51 -139,6 +139,51 @@@ core.autocrlf:
        "text" (i.e. be subjected to the autocrlf mechanism) is
        decided purely based on the contents.
  
 +core.safecrlf::
 +      If true, makes git check if converting `CRLF` as controlled by
 +      `core.autocrlf` is reversible.  Git will verify if a command
 +      modifies a file in the work tree either directly or indirectly.
 +      For example, committing a file followed by checking out the
 +      same file should yield the original file in the work tree.  If
 +      this is not the case for the current setting of
 +      `core.autocrlf`, git will reject the file.  The variable can
 +      be set to "warn", in which case git will only warn about an
 +      irreversible conversion but continue the operation.
 ++
 +CRLF conversion bears a slight chance of corrupting data.
 +autocrlf=true will convert CRLF to LF during commit and LF to
 +CRLF during checkout.  A file that contains a mixture of LF and
 +CRLF before the commit cannot be recreated by git.  For text
 +files this is the right thing to do: it corrects line endings
 +such that we have only LF line endings in the repository.
 +But for binary files that are accidentally classified as text the
 +conversion can corrupt data.
 ++
 +If you recognize such corruption early you can easily fix it by
 +setting the conversion type explicitly in .gitattributes.  Right
 +after committing you still have the original file in your work
 +tree and this file is not yet corrupted.  You can explicitly tell
 +git that this file is binary and git will handle the file
 +appropriately.
 ++
 +Unfortunately, the desired effect of cleaning up text files with
 +mixed line endings and the undesired effect of corrupting binary
 +files cannot be distinguished.  In both cases CRLFs are removed
 +in an irreversible way.  For text files this is the right thing
 +to do because CRLFs are line endings, while for binary files
 +converting CRLFs corrupts data.
 ++
 +Note, this safety check does not mean that a checkout will generate a
 +file identical to the original file for a different setting of
 +`core.autocrlf`, but only for the current one.  For example, a text
 +file with `LF` would be accepted with `core.autocrlf=input` and could
 +later be checked out with `core.autocrlf=true`, in which case the
 +resulting file would contain `CRLF`, although the original file
 +contained `LF`.  However, in both work trees the line endings would be
 +consistent, that is either all `LF` or all `CRLF`, but never mixed.  A
 +file with mixed line endings would be reported by the `core.safecrlf`
 +mechanism.
 +
  core.symlinks::
        If false, symbolic links are checked out as small plain files that
        contain the link text. linkgit:git-update-index[1] and
@@@ -353,10 -308,6 +353,10 @@@ core.whitespace:
    error (enabled by default).
  * `indent-with-non-tab` treats a line that is indented with 8 or more
    space characters as an error (not enabled by default).
 +* `cr-at-eol` treats a carriage-return at the end of line as
 +  part of the line terminator, i.e. with it, `trailing-space`
 +  does not trigger if the character before such a carriage-return
 +  is not a whitespace (not enabled by default).
  
  alias.*::
        Command aliases for the linkgit:git[1] command wrapper - e.g.
@@@ -379,14 -330,10 +379,14 @@@ apply.whitespace:
  
  branch.autosetupmerge::
        Tells `git-branch` and `git-checkout` to setup new branches
 -      so that linkgit:git-pull[1] will appropriately merge from that
 -      remote branch.  Note that even if this option is not set,
 +      so that linkgit:git-pull[1] will appropriately merge from the
 +      starting point branch. Note that even if this option is not set,
        this behavior can be chosen per-branch using the `--track`
 -      and `--no-track` options.  This option defaults to true.
 +      and `--no-track` options. The valid settings are: `false` -- no
 +      automatic setup is done; `true` -- automatic setup is done when the
 +      starting point is a remote branch; `always` -- automatic setup is
 +      done when the starting point is either a local branch or remote
 +      branch. This option defaults to true.
  
  branch.<name>.remote::
        When in branch <name>, it tells `git fetch` which remote to fetch.
@@@ -497,13 -444,6 +497,13 @@@ color.status.<slot>:
  commit.template::
        Specify a file to use as the template for new commit messages.
  
 +color.ui::
 +      When set to `always`, always use colors in all git commands which
 +      are capable of colored output. When false (or `never`), never. When
 +      set to `true` or `auto`, use colors only when the output is to the
 +      terminal. When more specific variables of color.* are set, they always
 +      take precedence over this setting. Defaults to false.
 +
  diff.autorefreshindex::
        When using `git diff` to compare with work tree
        files, do not consider stat-only change as changed.
@@@ -556,11 -496,6 +556,11 @@@ format.suffix:
        `.patch`. Use this variable to change that suffix (make sure to
        include the dot if you want it).
  
 +format.pretty::
 +      The default pretty format for log/show/whatchanged command,
 +      See linkgit:git-log[1], linkgit:git-show[1],
 +      linkgit:git-whatchanged[1].
 +
  gc.aggressiveWindow::
        The window size parameter used in the delta compression
        algorithm used by 'git gc --aggressive'.  This defaults
@@@ -754,10 -689,8 +754,10 @@@ merge.summary:
  
  merge.tool::
        Controls which merge resolution program is used by
 -      linkgit:git-mergetool[1].  Valid values are: "kdiff3", "tkdiff",
 -      "meld", "xxdiff", "emerge", "vimdiff", "gvimdiff", and "opendiff".
 +      linkgit:git-mergetool[1].  Valid built-in values are: "kdiff3",
 +      "tkdiff", "meld", "xxdiff", "emerge", "vimdiff", "gvimdiff", and
 +      "opendiff".  Any other value is treated is custom merge tool
 +      and there must be a corresponing mergetool.<tool>.cmd option.
  
  merge.verbosity::
        Controls the amount of output shown by the recursive merge
@@@ -784,31 -717,6 +784,31 @@@ mergetool.<tool>.path:
        Override the path for the given tool.  This is useful in case
        your tool is not in the PATH.
  
 +mergetool.<tool>.cmd::
 +      Specify the command to invoke the specified merge tool.  The
 +      specified command is evaluated in shell with the following
 +      variables available: 'BASE' is the name of a temporary file
 +      containing the common base of the files to be merged, if available;
 +      'LOCAL' is the name of a temporary file containing the contents of
 +      the file on the current branch; 'REMOTE' is the name of a temporary
 +      file containing the contents of the file from the branch being
 +      merged; 'MERGED' contains the name of the file to which the merge
 +      tool should write the results of a successful merge.
 +
 +mergetool.<tool>.trustExitCode::
 +      For a custom merge command, specify whether the exit code of
 +      the merge command can be used to determine whether the merge was
 +      successful.  If this is not set to true then the merge target file
 +      timestamp is checked and the merge assumed to have been successful
 +      if the file has been updated, otherwise the user is prompted to
 +      indicate the success of the merge.
 +
 +mergetool.keepBackup::
 +      After performing a merge, the original file with conflict markers
 +      can be saved as a file with a `.orig` extension.  If this variable
 +      is set to `false` then this file is not preserved.  Defaults to
 +      `true` (i.e. keep the backup files).
 +
  pack.window::
        The size of the window used by linkgit:git-pack-objects[1] when no
        window size is given on the command line. Defaults to 10.
@@@ -848,8 -756,6 +848,8 @@@ pack.threads:
        warning. This is meant to reduce packing time on multiprocessor
        machines. The required amount of memory for the delta search window
        is however multiplied by the number of threads.
 +      Specifying 0 will cause git to auto-detect the number of CPU's
 +      and set the number of threads accordingly.
  
  pack.indexVersion::
        Specify the default pack index version.  Valid values are 1 for
        whenever the corresponding pack is larger than 2 GB.  Otherwise
        the default is 1.
  
 +pack.packSizeLimit:
 +      The default maximum size of a pack.  This setting only affects
 +      packing to a file, i.e. the git:// protocol is unaffected.  It
 +      can be overridden by the `\--max-pack-size` option of
 +      linkgit:git-repack[1].
 +
  pull.octopus::
        The default merge strategy to use when pulling multiple branches
        at once.
@@@ -896,15 -796,15 +896,15 @@@ remote.<name>.skipDefaultUpdate:
  
  remote.<name>.receivepack::
        The default program to execute on the remote side when pushing.  See
-       option \--exec of linkgit:git-push[1].
+       option \--receive-pack of linkgit:git-push[1].
  
  remote.<name>.uploadpack::
        The default program to execute on the remote side when fetching.  See
-       option \--exec of linkgit:git-fetch-pack[1].
+       option \--upload-pack of linkgit:git-fetch-pack[1].
  
  remote.<name>.tagopt::
-       Setting this value to --no-tags disables automatic tag following when fetching
-       from remote <name>
+       Setting this value to \--no-tags disables automatic tag following when
+       fetching from remote <name>
  
  remotes.<group>::
        The list of remotes which are fetched by "git remote update
@@@ -935,17 -835,6 +935,17 @@@ tar.umask:
        archiving user's umask will be used instead.  See umask(2) and
        linkgit:git-archive[1].
  
 +url.<base>.insteadOf::
 +      Any URL that starts with this value will be rewritten to
 +      start, instead, with <base>. In cases where some site serves a
 +      large number of repositories, and serves them with multiple
 +      access methods, and some users need to use different access
 +      methods, this feature allows people to specify any of the
 +      equivalent URLs and have git automatically rewrite the URL to
 +      the best alternative for the particular user, even for a
 +      never-before-seen repository on the site.  When more than one
 +      insteadOf strings match a given URL, the longest match is used.
 +
  user.email::
        Your email address to be recorded in any newly created commits.
        Can be overridden by the 'GIT_AUTHOR_EMAIL', 'GIT_COMMITTER_EMAIL', and
diff --combined t/test-lib.sh
index 87a5ea4a6a54d712c0973cd9b8090c3ec83fb828,44f5776a1b30895e8d7b2d0601c8edc677790eeb..6aea0ea0a579973c9baddff608ea92445ef9fcbb
@@@ -3,12 -3,16 +3,16 @@@
  # Copyright (c) 2005 Junio C Hamano
  #
  
+ # Keep the original TERM for say_color
+ ORIGINAL_TERM=$TERM
  # For repeatability, reset the environment to known value.
  LANG=C
  LC_ALL=C
  PAGER=cat
  TZ=UTC
- export LANG LC_ALL PAGER TZ
+ TERM=dumb
+ export LANG LC_ALL PAGER TERM TZ
  EDITOR=:
  VISUAL=:
  unset GIT_EDITOR
@@@ -58,12 -62,14 +62,14 @@@ esa
  # This test checks if command xyzzy does the right thing...
  # '
  # . ./test-lib.sh
- [ "x$TERM" != "xdumb" ] &&
-       [ -t 1 ] &&
-       tput bold >/dev/null 2>&1 &&
-       tput setaf 1 >/dev/null 2>&1 &&
-       tput sgr0 >/dev/null 2>&1 &&
+ [ "x$ORIGINAL_TERM" != "xdumb" ] && (
+               TERM=$ORIGINAL_TERM &&
+               export TERM &&
+               [ -t 1 ] &&
+               tput bold >/dev/null 2>&1 &&
+               tput setaf 1 >/dev/null 2>&1 &&
+               tput sgr0 >/dev/null 2>&1
+       ) &&
        color=t
  
  while test "$#" -ne 0
@@@ -80,7 -86,7 +86,7 @@@ d
        -q|--q|--qu|--qui|--quie|--quiet)
                quiet=t; shift ;;
        --no-color)
 -          color=; shift ;;
 +              color=; shift ;;
        --no-python)
                # noop now...
                shift ;;
@@@ -91,6 -97,9 +97,9 @@@ don
  
  if test -n "$color"; then
        say_color () {
+               (
+               TERM=$ORIGINAL_TERM
+               export TERM
                case "$1" in
                        error) tput bold; tput setaf 1;; # bold red
                        skip)  tput bold; tput setaf 2;; # bold green
                shift
                echo "* $*"
                tput sgr0
+               )
        }
  else
        say_color() {
  
  test_failure=0
  test_count=0
 +test_fixed=0
 +test_broken=0
  
 -trap 'echo >&5 "FATAL: Unexpected exit with code $?"; exit 1' exit
 +die () {
 +      echo >&5 "FATAL: Unexpected exit with code $?"
 +      exit 1
 +}
 +
 +trap 'die' exit
  
  test_tick () {
        if test -z "${test_tick+set}"
@@@ -178,17 -181,6 +188,17 @@@ test_failure_ () 
        test "$immediate" = "" || { trap - exit; exit 1; }
  }
  
 +test_known_broken_ok_ () {
 +      test_count=$(expr "$test_count" + 1)
 +      test_fixed=$(($test_fixed+1))
 +      say_color "" "  FIXED $test_count: $@"
 +}
 +
 +test_known_broken_failure_ () {
 +      test_count=$(expr "$test_count" + 1)
 +      test_broken=$(($test_broken+1))
 +      say_color skip "  still broken $test_count: $@"
 +}
  
  test_debug () {
        test "$debug" = "" || eval "$1"
@@@ -229,13 -221,13 +239,13 @@@ test_expect_failure () 
        error "bug in the test script: not 2 parameters to test-expect-failure"
        if ! test_skip "$@"
        then
 -              say >&3 "expecting failure: $2"
 +              say >&3 "checking known breakage: $2"
                test_run_ "$2"
 -              if [ "$?" = 0 -a "$eval_ret" != 0 -a "$eval_ret" -lt 129 ]
 +              if [ "$?" = 0 -a "$eval_ret" = 0 ]
                then
 -                      test_ok_ "$1"
 +                      test_known_broken_ok_ "$1"
                else
 -                      test_failure_ "$@"
 +                  test_known_broken_failure_ "$1"
                fi
        fi
        echo >&3 ""
@@@ -309,18 -301,6 +319,18 @@@ test_create_repo () 
  
  test_done () {
        trap - exit
 +
 +      if test "$test_fixed" != 0
 +      then
 +              say_color pass "fixed $test_fixed known breakage(s)"
 +      fi
 +      if test "$test_broken" != 0
 +      then
 +              say_color error "still have $test_broken known breakage(s)"
 +              msg="remaining $(($test_count-$test_broken)) test(s)"
 +      else
 +              msg="$test_count test(s)"
 +      fi
        case "$test_failure" in
        0)
                # We could:
                # The Makefile provided will clean this test area so
                # we will leave things as they are.
  
 -              say_color pass "passed all $test_count test(s)"
 +              say_color pass "passed all $msg"
                exit 0 ;;
  
        *)
 -              say_color error "failed $test_failure among $test_count test(s)"
 +              say_color error "failed $test_failure among $msg"
                exit 1 ;;
  
        esac
  PATH=$(pwd)/..:$PATH
  GIT_EXEC_PATH=$(pwd)/..
  GIT_TEMPLATE_DIR=$(pwd)/../templates/blt
 -GIT_CONFIG=.git/config
 -export PATH GIT_EXEC_PATH GIT_TEMPLATE_DIR GIT_CONFIG
 +unset GIT_CONFIG
 +unset GIT_CONFIG_LOCAL
 +GIT_CONFIG_NOSYSTEM=1
 +GIT_CONFIG_NOGLOBAL=1
 +export PATH GIT_EXEC_PATH GIT_TEMPLATE_DIR GIT_CONFIG_NOSYSTEM GIT_CONFIG_NOGLOBAL
  
  GITPERLLIB=$(pwd)/../perl/blib/lib:$(pwd)/../perl/blib/arch/auto/Git
  export GITPERLLIB
@@@ -364,8 -341,6 +374,8 @@@ if ! test -x ../test-chmtime; the
        exit 1
  fi
  
 +. ../GIT-BUILD-OPTIONS
 +
  # Test repository
  test=trash
  rm -fr "$test"