Bug in Git-Gui - Creates corrupt patch
From: <hidden>
Date: 2016-06-15 22:46:17
Hi Shawn,
I have stumbled upon a bug in Git-GUi and am providing reproduction
steps:
1. Commit this file into a new git repository:
-----------------------------
<?php
class myclass {
public function funcAbc() {
echo "line 1";
echo "line 2";
echo "line 3";
echo "line 4";
echo "line 5";
}
public function funcBCD() {
echo "line 1-1";
echo "line 2-1";
echo "line 3-1";
echo "line 4-1";
echo "line 5-1";
}
}
?>
--------------
Here is the base64 encoded version:
PD9waHAKCmNsYXNzIG15Y2xhc3MgewoJcHVibGljIGZ1bmN0aW9uIGZ1bmNBYmMoKSB7CgkJZWNo
byAibGluZSAxIjsKCQllY2hvICJsaW5lIDIiOwoJCWVjaG8gImxpbmUgMyI7CgkJZWNobyAibGlu
ZSA0IjsKCQllY2hvICJsaW5lIDUiOwoJfQoJCglwdWJsaWMgZnVuY3Rpb24gZnVuY0JDRCgpIHsK
CQllY2hvICJsaW5lIDEtMSI7CgkJZWNobyAibGluZSAyLTEiOwoJCWVjaG8gImxpbmUgMy0xIjsK
CQllY2hvICJsaW5lIDQtMSI7CgkJZWNobyAibGluZSA1LTEiOwoJfQp9Cgo/Pg==
2. Now delete the last function in the class. Here's the resulting
file, it is not staged or commited yet.
----------------------------
<?php
class myclass {
public function funcAbc() {
echo "line 1";
echo "line 2";
echo "line 3";
echo "line 4";
echo "line 5";
}
}
?>
----------------------------
Here is the base64 encoded version:
PD9waHAKCmNsYXNzIG15Y2xhc3MgewoJcHVibGljIGZ1bmN0aW9uIGZ1bmNBYmMoKSB7CgkJZWNo
byAibGluZSAxIjsKCQllY2hvICJsaW5lIDIiOwoJCWVjaG8gImxpbmUgMyI7CgkJZWNobyAibGlu
ZSA0IjsKCQllY2hvICJsaW5lIDUiOwoJfQp9Cgo/Pg==
3. Using git-gui, try to stage *only* the last line marked for removal
(should be '- }').
I get 'fatal: corrupt patch at line 22'.
4. Now try the same task using git-add -p. Start 'git-add -p'. Enter
edit mode (e). Remove all the '-' lines except the last one (make
them ' ') so that only the last '-' will be removed. Save and exit.
On my system the patch is committed.
I'm running git version 1.6.0.6, 32bit linux, Gentoo OS