aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSZEDER Gábor <szeder@ira.uka.de>2009-07-22 19:24:38 -0500
committerJunio C Hamano <gitster@pobox.com>2009-07-22 18:54:55 -0700
commit735c674416b87505400fcf738fd3a38b52f0eccb (patch)
tree1ee8a2925ddae3ffb3bf946cae7725b86ae0e5d8
parentb810cbbde9232cbe9a3841edccc5b606bbd3a82e (diff)
downloadgit-735c674416b87505400fcf738fd3a38b52f0eccb.tar.gz
git-735c674416b87505400fcf738fd3a38b52f0eccb.tar.xz
Trailing whitespace and no newline fix
If a patch adds a new line to the end of a file and this line ends with one trailing whitespace character and has no newline, then '--whitespace=fix' currently does not remove that trailing whitespace. This patch fixes this by removing the check for trailing whitespace at the end of the line at a hardcoded offset which does not take the eventual absence of newline into account. Signed-off-by: SZEDER Gábor <szeder@ira.uka.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rwxr-xr-xt/t4124-apply-ws-rule.sh18
-rw-r--r--ws.c5
2 files changed, 20 insertions, 3 deletions
diff --git a/t/t4124-apply-ws-rule.sh b/t/t4124-apply-ws-rule.sh
index f83322e51..5698a9a73 100755
--- a/t/t4124-apply-ws-rule.sh
+++ b/t/t4124-apply-ws-rule.sh
@@ -148,4 +148,22 @@ do
done
done
+create_patch () {
+ sed -e "s/_/ /" <<-\EOF
+ diff --git a/target b/target
+ index e69de29..8bd6648 100644
+ --- a/target
+ +++ b/target
+ @@ -0,0 +1 @@
+ +A line with trailing whitespace and no newline_
+ \ No newline at end of file
+ EOF
+}
+
+test_expect_success 'trailing whitespace & no newline at the end of file' '
+ >target &&
+ create_patch | git apply --whitespace=fix - &&
+ grep "newline$" target
+'
+
test_done
diff --git a/ws.c b/ws.c
index 819c797cf..8d855b7fd 100644
--- a/ws.c
+++ b/ws.c
@@ -261,9 +261,8 @@ int ws_fix_copy(char *dst, const char *src, int len, unsigned ws_rule, int *erro
/*
* Strip trailing whitespace
*/
- if ((ws_rule & WS_TRAILING_SPACE) &&
- (2 <= len && isspace(src[len-2]))) {
- if (src[len - 1] == '\n') {
+ if (ws_rule & WS_TRAILING_SPACE) {
+ if (1 < len && src[len - 1] == '\n') {
add_nl_to_tail = 1;
len--;
if (1 < len && src[len - 1] == '\r') {