# Git 2.8.1 - bug in patience diff algorithm when used with --ignore-space-at-eol?

3 messages from 2016-07-08 to 2016-07-09. Participants: Naja Melan, Johannes Schindelin.
Thread: https://gitlist.dev/t/42802

## Naja Melan, 2016-07-08 16:51

Subject: Git 2.8.1 - bug in patience diff algorithm when used with --ignore-space-at-eol?
Message-ID: <3153d359-2b82-d5e2-9e92-7a28bcd8bc48@autistici.org>
URL: https://gitlist.dev/e/3153d359-2b82-d5e2-9e92-7a28bcd8bc48%40autistici.org

```
When diffing with --patience and --ignore-space-at-eol, a change that
adds or removes just one character a the end of a line isn't picked up.

Other diff algorithms don't suffer from this and patience doesn't if I
don't put --ignore-space-at-eol.

See the following output for a proof:


$ git diff --ignore-space-at-eol lib/gitomate/facts/path.rb

diff --git a/lib/gitomate/facts/path.rb b/lib/gitomate/facts/path.rb
index bc99661..a5cd184 100644
--- a/lib/gitomate/facts/path.rb
+++ b/lib/gitomate/facts/path.rb
@@ -77,7 +77,7 @@ def check( update = false )
      options( :exist ) and warn "#{@info[ :path ].inspect} does not exist."
      options( :exist ) or  warn "#{@info[ :path ].inspect} exists but
it shouldn't."

-     @checked = true
+     @checked = trued
      return @checkPassed = false

   end

$ git diff --patience --ignore-space-at-eol lib/gitomate/facts/path.rb
-> no output

$ git diff --patience lib/gitomate/facts/path.rb

diff --git a/lib/gitomate/facts/path.rb b/lib/gitomate/facts/path.rb
index bc99661..a5cd184 100644
--- a/lib/gitomate/facts/path.rb
+++ b/lib/gitomate/facts/path.rb
@@ -77,7 +77,7 @@ def check( update = false )
      options( :exist ) and warn "#{@info[ :path ].inspect} does not exist."
      options( :exist ) or  warn "#{@info[ :path ].inspect} exists but
it shouldn't."

-     @checked = true
+     @checked = trued
      return @checkPassed = false

   end


Naja Melan

```

## Johannes Schindelin, 2016-07-09 06:24

Subject: Re: Git 2.8.1 - bug in patience diff algorithm when used with --ignore-space-at-eol?
Message-ID: <alpine.DEB.2.20.1607090823270.6426@virtualbox>
URL: https://gitlist.dev/e/alpine.DEB.2.20.1607090823270.6426%40virtualbox
In-Reply-To: <3153d359-2b82-d5e2-9e92-7a28bcd8bc48@autistici.org>

```
Hi Naja,

On Fri, 8 Jul 2016, Naja Melan wrote:

> When diffing with --patience and --ignore-space-at-eol, a change that
> adds or removes just one character a the end of a line isn't picked up.

Confirmed with the current 'master'. I am on it, building on top of this
diff:

-- snipsnap --
diff --git a/t/t4033-diff-patience.sh b/t/t4033-diff-patience.sh
index 3c9932e..6da435b 100755
--- a/t/t4033-diff-patience.sh
+++ b/t/t4033-diff-patience.sh
@@ -5,6 +5,13 @@ test_description='patience diff algorithm'
 . ./test-lib.sh
 . "$TEST_DIRECTORY"/lib-diff-alternative.sh
 
+test_expect_failure '--ignore-space-at-eol with a single appended character' '
+	printf "a\nb\nc\n" >pre &&
+	printf "a\nbX\nc\n" >post &&
+	git diff --no-index --patience --ignore-space-at-eol pre post >diff &&
+	grep "^+.*X" diff
+'
+
 test_diff_frobnitz "patience"
 
 test_diff_unique "patience"

```

## Johannes Schindelin, 2016-07-09 07:26

Subject: Re: Git 2.8.1 - bug in patience diff algorithm when used with --ignore-space-at-eol?
Message-ID: <alpine.DEB.2.20.1607090924490.6426@virtualbox>
URL: https://gitlist.dev/e/alpine.DEB.2.20.1607090924490.6426%40virtualbox
In-Reply-To: <alpine.DEB.2.20.1607090823270.6426@virtualbox>

```
Hi,

On Sat, 9 Jul 2016, Johannes Schindelin wrote:

> On Fri, 8 Jul 2016, Naja Melan wrote:
> 
> > When diffing with --patience and --ignore-space-at-eol, a change that
> > adds or removes just one character a the end of a line isn't picked up.
> 
> Confirmed with the current 'master'. I am on it [...]

And I fixed it:

http://thread.gmane.org/gmane.comp.version-control.git/299176/focus=299178

Ciao,
Johannes

```
