Please no, let's fix patch instead.
Am 25.02.2014 14:24 schrieb "Jean Delvare" <
address@hidden>:
GNU patch is unable to deal with patch headers without timestamps if
a file name includes a space. Quilt currently generates such patches
if $QUILT_NO_DIFF_TIMESTAMPS is defined.
In order to work around this limitation and always generate patches
that GNU patch will be able to apply, add a tab and a dash after the
file name in the patch header if $QUILT_NO_DIFF_TIMESTAMPS is set and
the file name contains a space.
Originally I tried adding just a tab, and GNU patch was fine with
that, however the tailing tab was removed by "quilt refresh
--strip-trailing-whitespace" which many users have as a default
option. So I added a dash after the tab to protect it. I suppose it
could have been any other character, but that one worked. If you think
something else should be used instead, just let me know.
---
quilt/scripts/patchfns.in | 8 ++++++++
test/space-in-filenames.test | 41 ++++++++++++++++++++++++++++++-----------
2 files changed, 38 insertions(+), 11 deletions(-)
--- quilt.orig/test/space-in-filenames.test 2014-02-24 23:13:28.466215202 +0100
+++ quilt/test/space-in-filenames.test 2014-02-24 23:34:30.627834687 +0100
@@ -44,13 +44,13 @@ $ quilt diff -p ab
> Index: b/a: b [c]
> ===================================================================
> --- /dev/null
-> +++ b/a: b [c]
+> +++ b/a: b [c] -
> @@ -0,0 +1 @@
> +new line
> Index: b/foo bar
> ===================================================================
-> --- a/foo bar
-> +++ b/foo bar
+> --- a/foo bar -
+> +++ b/foo bar -
> @@ -1 +1 @@
> -foo
> +bar
@@ -61,13 +61,13 @@ $ cat patches/test.diff
> Index: b/a: b [c]
> ===================================================================
> --- /dev/null
-> +++ b/a: b [c]
+> +++ b/a: b [c] -
> @@ -0,0 +1 @@
> +new line
> Index: b/foo bar
> ===================================================================
-> --- a/foo bar
-> +++ b/foo bar
+> --- a/foo bar -
+> +++ b/foo bar -
> @@ -1 +1 @@
> -foo
> +bar
@@ -78,13 +78,13 @@ $ cat patches/test.diff
> Index: b/a: b [c]
> ===================================================================
> --- /dev/null
-> +++ b/a: b [c]
+> +++ b/a: b [c] -
> @@ -0,0 +1 @@
> +new line
> Index: b/foo bar
> ===================================================================
-> --- a/foo bar
-> +++ b/foo bar
+> --- a/foo bar -
+> +++ b/foo bar -
> @@ -1 +1 @@
> -foo
> +bar
@@ -96,15 +96,34 @@ $ quilt grep new
$ quilt grep " "
> a: b [c]:new line
+$ quilt pop -q
+> Removing patch patches/test.diff
+> No patches applied
+
+$ quilt patches foo
+$ quilt patches "foo bar"
+> patches/test.diff
+$ quilt patches bar
+$ quilt patches "foo bar baz"
+$ quilt patches 'a: b [c]'
+> patches/test.diff
+$ quilt patches a
+$ quilt patches b
+$ quilt patches 'a: b c'
+$ quilt patches "foo bar" 'a: b [c]'
+> patches/test.diff
+
+$ quilt push -q
+> Applying patch patches/test.diff
+> Now at patch patches/test.diff
+
$ quilt remove "a: b [c]"
> File a: b [c] removed from patch patches/test.diff
$ quilt files
-> foo
> foo bar
$ quilt remove "foo bar"
> File foo bar removed from patch patches/test.diff
$ quilt files
-> foo
--- quilt.orig/quilt/scripts/patchfns.in 2014-02-24 23:11:58.876431248 +0100
+++ quilt/quilt/scripts/patchfns.in 2014-02-24 23:38:02.564189493 +0100
@@ -731,6 +731,14 @@ diff_file()
|| new_date=$'\t'"1970-01-01 00:00:00.000000000 +0000"
fi
+ # Workaround for GNU patch which can't cope with no timestamps and
+ # spaces in file names at the same time
+ if [ -n "$QUILT_NO_DIFF_TIMESTAMPS" ]
+ then
+ [[ $old_hdr == *\ * ]] && old_date=$'\t'-
+ [[ $new_hdr == *\ * ]] && new_date=$'\t'-
+ fi
+
diff $QUILT_DIFF_OPTS \
--label "$old_hdr$old_date" --label "$new_hdr$new_date" \
"$old_file" "$new_file" \
--
Jean Delvare
Suse L3 Support
_______________________________________________
Quilt-dev mailing list
address@hidden
https://lists.nongnu.org/mailman/listinfo/quilt-dev