Merge branch 'sh/am-keep-cr'
authorJunio C Hamano <gitster@pobox.com>
Wed, 10 Mar 2010 23:32:34 +0000 (15:32 -0800)
committerJunio C Hamano <gitster@pobox.com>
Wed, 10 Mar 2010 23:32:34 +0000 (15:32 -0800)
* sh/am-keep-cr:
  git-am: Add tests for `--keep-cr`, `--no-keep-cr` and `am.keepcr`
  git-am: Add am.keepcr and --no-keep-cr to override it
  git-am: Add command line parameter `--keep-cr` passing it to git-mailsplit
  documentation: 'git-mailsplit --keep-cr' is not hidden anymore

1  2 
Documentation/config.txt
Documentation/git-am.txt
builtin/mailsplit.c
git-am.sh

diff --combined Documentation/config.txt
index 7103172ed30c33f2c7933f530d03ce98c1e4f360,dcbbdad661bcb40cf6caf79326ed4699d8beca99..87a3512073c6c7fbb48679f5a6a0d639a1d857ef
@@@ -555,6 -555,13 +555,13 @@@ it will be treated as a shell command
  executed from the top-level directory of a repository, which may
  not necessarily be the current directory.
  
+ am.keepcr::
+       If true, git-am will call git-mailsplit for patches in mbox format
+       with parameter '--keep-cr'. In this case git-mailsplit will
+       not remove `\r` from lines ending with `\r\n`. Can be overrriden
+       by giving '--no-keep-cr' from the command line.
+       See linkgit:git-am[1], linkgit:git-mailsplit[1].
  apply.ignorewhitespace::
        When set to 'change', tells 'git apply' to ignore changes in
        whitespace, in the same way as the '--ignore-space-change'
@@@ -685,7 -692,9 +692,7 @@@ color.grep:
  
  color.grep.match::
        Use customized color for matches.  The value of this variable
 -      may be specified as in color.branch.<slot>.  It is passed using
 -      the environment variables 'GREP_COLOR' and 'GREP_COLORS' when
 -      calling an external 'grep'.
 +      may be specified as in color.branch.<slot>.
  
  color.interactive::
        When set to `always`, always use colors for interactive prompts
diff --combined Documentation/git-am.txt
index 23864df8da0694a0daefb81fe629e22a1deb06f1,70bc698a356b13425437418498ec577858304953..9e62f8778f6590328de4d9c0c7c08044e8019eac
@@@ -9,7 -9,7 +9,7 @@@ git-am - Apply a series of patches fro
  SYNOPSIS
  --------
  [verse]
- 'git am' [--signoff] [--keep] [--utf8 | --no-utf8]
+ 'git am' [--signoff] [--keep] [--keep-cr | --no-keep-cr] [--utf8 | --no-utf8]
         [--3way] [--interactive] [--committer-date-is-author-date]
         [--ignore-date] [--ignore-space-change | --ignore-whitespace]
         [--whitespace=<option>] [-C<n>] [-p<n>] [--directory=<dir>]
@@@ -39,12 -39,19 +39,19 @@@ OPTION
  --keep::
        Pass `-k` flag to 'git mailinfo' (see linkgit:git-mailinfo[1]).
  
+ --keep-cr::
+ --no-keep-cr::
+       With `--keep-cr`, call 'git mailsplit' (see linkgit:git-mailsplit[1])
+       with the same option, to prevent it from stripping CR at the end of
+       lines. `am.keepcr` configuration variable can be used to specify the
+       default behaviour.  `--no-keep-cr` is useful to override `am.keepcr`.
  -c::
  --scissors::
        Remove everything in body before a scissors line (see
        linkgit:git-mailinfo[1]).
  
 ----no-scissors::
 +--no-scissors::
        Ignore scissors lines (see linkgit:git-mailinfo[1]).
  
  -q::
diff --combined builtin/mailsplit.c
index 207e358ed19cecb8cf7b57d59a9149619909459d,cdfc1b70429dc5d47e42e7aabc9449a585623b0f..cdfc1b70429dc5d47e42e7aabc9449a585623b0f
@@@ -10,7 -10,7 +10,7 @@@
  #include "strbuf.h"
  
  static const char git_mailsplit_usage[] =
- "git mailsplit [-d<prec>] [-f<n>] [-b] -o<directory> [<mbox>|<Maildir>...]";
+ "git mailsplit [-d<prec>] [-f<n>] [-b] [--keep-cr] -o<directory> [<mbox>|<Maildir>...]";
  
  static int is_from_line(const char *line, int len)
  {
diff --combined git-am.sh
index 9df951a597d6b9ec5f7f390c35a60adb942a3fdc,a2004506c551ae484cae2a23044015cbeee64ba7..50a292a7da58aab3b5ce62347b02dee35395da2a
+++ b/git-am.sh
@@@ -15,6 -15,8 +15,8 @@@ q,quiet         be quie
  s,signoff       add a Signed-off-by line to the commit message
  u,utf8          recode into utf8 (default)
  k,keep          pass -k flag to git-mailinfo
+ keep-cr         pass --keep-cr flag to git-mailsplit for mbox format
+ no-keep-cr      do not pass --keep-cr flag to git-mailsplit independent of am.keepcr
  c,scissors      strip everything before a scissors line
  whitespace=     pass it through git-apply
  ignore-space-change pass it through git-apply
@@@ -217,12 -219,12 +219,12 @@@ check_patch_format () 
  split_patches () {
        case "$patch_format" in
        mbox)
-               case "$rebasing" in
-               '')
-                       keep_cr= ;;
-               ?*)
-                       keep_cr=--keep-cr ;;
-               esac
+               if test -n "$rebasing" || test t = "$keepcr"
+               then
+                   keep_cr=--keep-cr
+               else
+                   keep_cr=
+               fi
                git mailsplit -d"$prec" -o"$dotest" -b $keep_cr -- "$@" > "$dotest/last" ||
                clean_abort
                ;;
  
  prec=4
  dotest="$GIT_DIR/rebase-apply"
- sign= utf8=t keep= skip= interactive= resolved= rebasing= abort=
+ sign= utf8=t keep= keepcr= skip= interactive= resolved= rebasing= abort=
  resolvemsg= resume= scissors= no_inbody_headers=
  git_apply_opt=
  committer_date_is_author_date=
  ignore_date=
  allow_rerere_autoupdate=
  
+ if test "$(git config --bool --get am.keepcr)" = true
+ then
+     keepcr=t
+ fi
  while test $# != 0
  do
        case "$1" in
                allow_rerere_autoupdate="$1" ;;
        -q|--quiet)
                GIT_QUIET=t ;;
+       --keep-cr)
+               keepcr=t ;;
+       --no-keep-cr)
+               keepcr=f ;;
        --)
                shift; break ;;
        *)
@@@ -453,6 -464,7 +464,7 @@@ els
        echo "$sign" >"$dotest/sign"
        echo "$utf8" >"$dotest/utf8"
        echo "$keep" >"$dotest/keep"
+       echo "$keepcr" >"$dotest/keepcr"
        echo "$scissors" >"$dotest/scissors"
        echo "$no_inbody_headers" >"$dotest/no_inbody_headers"
        echo "$GIT_QUIET" >"$dotest/quiet"
@@@ -496,6 -508,12 +508,12 @@@ if test "$(cat "$dotest/keep")" = 
  then
        keep=-k
  fi
+ case "$(cat "$dotest/keepcr")" in
+ t)
+       keepcr=--keep-cr ;;
+ f)
+       keepcr=--no-keep-cr ;;
+ esac
  case "$(cat "$dotest/scissors")" in
  t)
        scissors=--scissors ;;
@@@ -663,7 -681,10 +681,7 @@@ d
                [eE]*) git_editor "$dotest/final-commit"
                       action=again ;;
                [vV]*) action=again
 -                     : ${GIT_PAGER=$(git var GIT_PAGER)}
 -                     : ${LESS=-FRSX}
 -                     export LESS
 -                     $GIT_PAGER "$dotest/patch" ;;
 +                     git_pager "$dotest/patch" ;;
                *)     action=again ;;
                esac
            done