threads / patch / 20336

patchAdd --allow-eof-whitelines to git-apply while still doing whitespace trailing-space fixing.

Subject: [PATCH] Add --allow-eof-whitelines to git-apply while still doing whitespace trailing-space fixing.

## tl;dr

3 messages between Aug 1, 2009 and Aug 5, 2009. Diffs are folded; open one to read it.

replies: 2people: 2as markdown or json

Thell Fowler· Aug 1, 2009, 16:57 UTC · lore
  - Added --allow-eof-whitelines to git apply to short-circuit removal
of new empty lines when tailing-space is set.
  - Added pass-through to apply from git-am.sh
  - Added pass-through to git-am from git-rebase.sh
  - Added the auto-completion entries.
Signed-off-by: TBFowler <thell@almostautomated.com>
---
 builtin-apply.c                        |    5 ++++-
 contrib/completion/git-completion.bash |    4 ++--
 git-am.sh                              |    3 +++
 git-rebase.sh                          |    3 +++
 4 files changed, 12 insertions(+), 3 deletions(-)
Show changes to 4 files +12 −3

builtin-apply.c, contrib/completion/git-completion.bash, git-am.sh, git-rebase.sh

diff --git a/builtin-apply.c b/builtin-apply.c
index dc0ff5e..79be05c 100644
--- a/builtin-apply.c
+++ b/builtin-apply.c
@@ -43,6 +43,7 @@ static int apply = 1;
 static int apply_in_reverse;
 static int apply_with_reject;
 static int apply_verbosely;
+static int keep_new_eof_whitelines;
 static int no_add;
 static const char *fake_ancestor;
 static int line_termination = '\n';
@@ -1996,7 +1997,7 @@ static int apply_one_fragment(struct image *img,
struct fragment *frag,
 				error("invalid start of line: '%c'", first);
 			return -1;
 		}
-		if (added_blank_line)
+		if (added_blank_line && !keep_new_eof_whitelines)
 			new_blank_lines_at_end++;
 		else
 			new_blank_lines_at_end = 0;
@@ -3304,6 +3305,8 @@ int cmd_apply(int argc, const char **argv, const
char *unused_prefix)
 		{ OPTION_CALLBACK, 0, "whitespace", &whitespace_option, "action",
 			"detect new or modified lines that have whitespace errors",
 			0, option_parse_whitespace },
+		OPT_BOOLEAN(0, "allow-eof-whitelines", &keep_new_eof_whitelines,
+			"allow processing of whitespace fix but don't suppress new
whitelines at end of file"),
 		OPT_BOOLEAN('R', "reverse", &apply_in_reverse,
 			"apply the patch in reverse"),
 		OPT_BOOLEAN(0, "unidiff-zero", &unidiff_zero,
diff --git a/contrib/completion/git-completion.bash
b/contrib/completion/git-completion.bash
index 745b5fb..512b14c 100755
--- a/contrib/completion/git-completion.bash
+++ b/contrib/completion/git-completion.bash
@@ -675,7 +675,7 @@ _git_am ()
 		__gitcomp "
 			--3way --committer-date-is-author-date --ignore-date
 			--interactive --keep --no-utf8 --signoff --utf8
-			--whitespace=
+			--whitespace= --allow-eof-whitelines
 			"
 		return
 	esac
@@ -695,7 +695,7 @@ _git_apply ()
 			--stat --numstat --summary --check --index
 			--cached --index-info --reverse --reject --unidiff-zero
 			--apply --no-add --exclude=
-			--whitespace= --inaccurate-eof --verbose
+			--whitespace= --allow-eof-whitelines --inaccurate-eof --verbose
 			"
 		return
 	esac
diff --git a/git-am.sh b/git-am.sh
index d64d997..5757674 100755
--- a/git-am.sh
+++ b/git-am.sh
@@ -16,6 +16,7 @@ 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
 whitespace=     pass it through git-apply
+allow-eof-whitelines        pass it through git-apply
 directory=      pass it through git-apply
 C=              pass it through git-apply
 p=              pass it through git-apply
@@ -299,6 +300,8 @@ do
 		shift; resolvemsg=$1 ;;
 	--whitespace|--directory)
 		git_apply_opt="$git_apply_opt $(sq "$1=$2")"; shift ;;
+	--allow-eof-whitelines)
+		git_apply_opt="$git_apply_opt $1" ;;
 	-C|-p)
 		git_apply_opt="$git_apply_opt $(sq "$1$2")"; shift ;;
 	--patch-format)
diff --git a/git-rebase.sh b/git-rebase.sh
index 18bc694..1556224 100755
--- a/git-rebase.sh
+++ b/git-rebase.sh
@@ -333,6 +333,9 @@ do
 			;;
 		esac
 		;;
+	--allow-eof-whitelines)
+		git_am_opt="$git_am_opt $1"
+		;;
 	--committer-date-is-author-date|--ignore-date)
 		git_am_opt="$git_am_opt $1"
 		force_rebase=t
-- 
1.6.4.rc3.dirty
Nanako Shiraishi· Aug 4, 2009, 21:15 UTC · re: Thell Fowler · lore

Re: [PATCH] Add --allow-eof-whitelines to git-apply while still doing whitespace trailing-space fixing.

Quoting Thell Fowler <tbfowler4@gmail.com>
Show 7 quoted lines
>   - Added --allow-eof-whitelines to git apply to short-circuit removal
> of new empty lines when tailing-space is set.
>   - Added pass-through to apply from git-am.sh
>   - Added pass-through to git-am from git-rebase.sh
>   - Added the auto-completion entries.
>
> Signed-off-by: TBFowler <thell@almostautomated.com>
I like this new feature. However, this topic came up last week, and Junio said that whitespace checking should be controlled with the attributes mechanism.
http://thread.gmane.org/gmane.comp.version-control.git/124113/focus=124138

Please do not talk "I did this, I did that" in your proposed commit log message. From Documentation/SubmittingPatches:

	- the body should provide a meaningful commit message, which:
		- uses the imperative, present tense: "change",
		  not "changed" or "changes".
		- includes motivation for the change, and contrasts
		  its implementation with previous behaviour
In other words, the messages are often written as if you are giving an order to the program to correct itself.
-- 
Nanako Shiraishi
http://ivory.ap.teacup.com/nanako3/
Thell Fowler· Aug 5, 2009, 00:15 UTC · re: Nanako Shiraishi · lore

Re: [PATCH] Add --allow-eof-whitelines to git-apply while still doing whitespace trailing-space fixing.

On Wed, 2009-08-05 at 06:15 +0900, Nanako Shiraishi wrote:
Show 14 quoted lines
> Quoting Thell Fowler <tbfowler4@gmail.com>
> 
> >   - Added --allow-eof-whitelines to git apply to short-circuit removal
> > of new empty lines when tailing-space is set.
> >   - Added pass-through to apply from git-am.sh
> >   - Added pass-through to git-am from git-rebase.sh
> >   - Added the auto-completion entries.
> >
> > Signed-off-by: TBFowler <thell@almostautomated.com>
> 
> I like this new feature. However, this topic came up last week, and Junio said that whitespace checking should be controlled with the attributes mechanism.
> 
> http://thread.gmane.org/gmane.comp.version-control.git/124113/focus=124138
> 

Seemed that the issue/resolution was still open for discussion. http://thread.gmane.org/gmane.comp.version-control.git/124113/focus=124138

Should this be re-done as a whitespace attribute?
Show 11 quoted lines
> Please do not talk "I did this, I did that" in your proposed commit log
> message.  From Documentation/SubmittingPatches:
> 
> 	- the body should provide a meaningful commit message, which:
> 		- uses the imperative, present tense: "change",
> 		  not "changed" or "changes".
> 		- includes motivation for the change, and contrasts
> 		  its implementation with previous behaviour
> 
> In other words, the messages are often written as if you are giving an order to the program to correct itself.
> 
Got it. ...'giving an order'...  and the motivation; should be easy to remember.

Thank you for the feedback and instruction. Thell

← back to recent threads