| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
|
|
|
| |
The patch-wrapper test was unconditionally disabled by commit
97200435 ("Only run test/patch-wrapper.test if the
--with-patch-wrapper config option is used.") Re-enable this test
when the --with-patch-wrapper config option is actually used.
|
|
|
|
|
|
|
|
|
|
| |
The heuristic to find file names in unapplied patches fails miserably
on all patches with timestamps. We have to consider everything past
the last tab as the timestamp and strip it. The timestamp itself will
contain spaces so we can't split on that.
This fixes a regression introduced by commit 4df47975. It's hard to
believe this has been broken for over 4 years and nobody ever noticed.
|
|
|
|
|
| |
We need to pass --docdir to the configure script so that the
documentation files are installed where we expect them.
|
|
|
|
| |
Use file_in_patch instead of reimplementing it.
|
|
|
|
|
| |
I have no idea why I introduced this "match" variable in the first
place, it's not needed.
|
|
|
|
|
|
|
|
|
|
|
|
| |
Function print_patch currently doesn't print a newline character at
the end of the patch name. Because of this, callers which need the
newline character much wrap print_patch with an echo. This hurts
performance and isn't too elegant either.
So let print_patch print a trailing newline character. If the caller
doesn't need it, it will typically be stripped by bash anyway (tailing
whitespace is stripped on variable expansion.) And if the caller does
need it, it avoids the extra call to echo.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Old versions of bash (at least version 3.2.51) don't properly handle
prefix stripping together with quoting when evaluating an array. So
strip the prefix before adding each file to opt_files. It's faster
anyway.
Same thing when diffing against a snapshot, strip the snapshot
directory prefix from file names before evaluating the quoted files
array.
This fixes a regression introduced in:
commit b0baeeb6b61132af92fd75df5f912554d295dee1
Author: Jean Delvare <jdelvare@suse.de>
Date: Fri Mar 25 18:48:49 2011 +0100
diff, refresh: Accept file names with spaces
(Only affecting the versions of bash which have the aforementioned bug.)
This also fixes a bug when called from a subdirectory and a file
passed as an argument starts with "./".
Extend the test suite to test both cases, so that such bugs can't
sneak in in the future.
|
|
|
|
|
| |
Test the top and previous of patches with unusual names. Also test a
few more unusual characters.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The current implementation of the series, applied and unapplied
commands performs rather poorly, especially on large patch sets. To
make things worse, bash completion makes use of these commands, so
it becomes next to unusable on large patch sets.
Instead of looping over each patch, use the power of printf to print
everything in one go. Performance gains on a 15k patch series are
breathtaking:
series: 189.4 s -> 0.6 s
series -v: 92.9 s -> 0.6 s
applied: 3.5 s -> 0.1 s
unapplied: 3.9 s -> 0.1 s
|
|
|
|
|
|
|
|
|
|
| |
In the case of a generated or manually tweaked series file, it can
happen that the same patch shows up twice in the series file. Check
for this before pushing any patch, otherwise we would corrupt quilt's
internal database.
This fixes bug #20628:
https://savannah.nongnu.org/bugs/?20628
|
|
|
|
| |
These instructions no longer works.
|
|
|
|
| |
%{P} already has a trailing slash.
|
|
|
|
|
| |
Use the same brace placement for all bash functions through the whole
tree.
|
|
|
|
|
| |
Commands "patches" and "series" lacked option --color in their syntax
summary. Command "diff" had it but without its options.
|
|
|
|
|
|
| |
Recent versions of GNU diff will quote file names which include a
space, but GNU patch version 2.5.9 and older do not support that. So
strip the quotes to let the test succeed.
|
|
|
|
|
|
|
| |
Add tests for the patches command in two test cases. In particular
we want to test that the patches command works OK when patch filenames
contain spaces or other unusual characters, and that file names are
properly guessed in patches which create or delete files.
|
|
|
|
|
| |
Function find_patch_file is only used by command import so move it to
that file.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
find_patch_file is only used by "quilt import". It is called on patch
file names passed on the command line. The first part of the function
clearly looks for "external" patch files (with absolute or relative
paths.)
The second part looks for the patch in the series file. There are 3
possibilities:
* If the patch is not in series, then the import fails with:
Patch foo.patch does not exist
* If the patch is in series, applied, then the import fails with:
Patch foo.patch is applied
* If the patch is in series, not applied, then the import fails with:
Patch foo.patch already exists in series.
So this part of the function makes no sense and should be deleted.
|
|
|
|
| |
We don't need echo, we can call patch_file_name directly.
|
|
|
|
|
|
|
|
|
|
| |
I didn't put too many thoughts when adding support for multiple files
to the "patches" command. The nested loop approach turns out to be
very inefficient for unapplied patches.
Get rid of the innermost loop by building a single pattern matching
all filenames at once. That way, performance no longer depends on the
number of files (as far as unapplied patches are concerned.)
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Don't check for $strip = ab twice, once is enough.
* Quote the file names to be suitable in regular expressions only
once, instead of doing it again for every patch. This fixes a
performance regression introduced in 8ebb056d ("patches: Add
support for multiple files"), sorry about that.
These two simple changes bring a huge performance boost on unapplied
patches, of about 50% in the single file case and growing as you add
files.
|
|
|
|
| |
We don't need echo, we can call compgen directly.
|
|
|
|
|
|
|
| |
"quilt files" returns a blank line if no files are included in the
patch. This could easily break constructs such as "quilt files | wc
-l". Let "quilt files" return nothing at all if there are no files in
the patch.
|
|
|
|
|
|
|
|
| |
* Don't set $needs_shell before we need it. When handling commands
internally, we don't care about $needs_shell.
* Use a single regexp to set $use_re.
* Clear $good as soon as a test fails, instead of grepping for
failures later.
|
|
|
|
|
| |
* Command lines containing "&" need /bin/sh.
* "*" and "?" need not be escaped inside brackets in regular expressions.
|
|
|
|
|
| |
Declare all global variables with qw() and stop passing them as
arguments to some functions.
|
|
|
|
|
| |
Move functions before they are called, so that we no longer need forward
declarations.
|
|
|
|
|
| |
Code indentation in this file is inconsistent, this makes editing it
difficult. Use tabulations everywhere.
|
|
|
|
|
|
| |
The su and sg commands can only work if running as root. The quilt
test cases do not use these commands and I certainly wouldn't
recommend running the test suite as root, so drop the feature.
|
|
|
|
|
|
|
|
| |
Perl has a standard module which can split shell command lines for
us, so use it. Function shellwords can deal with quoted parameters
too so we no longer need to pass commands to /bin/sh just because
they contain quoted parameters. This lowers the ratio of commands
passed to /bin/sh from 34% to 31%.
|
|
|
|
|
| |
Delay command line splitting until it's actually needed. This avoids
having to join it again to log it or to pass it to /bin/sh.
|
|
|
|
|
|
| |
Before this fix, "quilt diff -z" would fail on files with spaces in
their names, with the following error message:
Failed to copy files to temporary directory
|
| |
|
|
|
|
| |
The message was not updated when support for -pab was added.
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Allow distributors to provide compat symlinks for cp and md5sum on
non-GNU systems. md5sum is used by quilt/scripts/inspect and is
provided by GNU coreutils, but may be installed as gmd5sum on some
systems (e.g. OpenBSD). quilt/scripts/backup-files invokes cp
with some non-portable GNU-specific command line arguments
(e.g. --parents --remove-destination --target-directory).
Original diff from Jérémie Courrèges-Anglas <jca@wxcvbn.org> on
OpenBSD ports mailing list.
Reported-by: Jérémie Courrèges-Anglas <jca@wxcvbn.org>
Signed-off-by: Kent R. Spillner <kspillner@acm.org>
|
| |
|
| |
|
|
|
|
|
| |
The debian package is maintained in
git://git.debian.org/git/collab-maint/quilt nowadays.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Constructs of the form:
if ! [ ... ]
then
...
else
...
fi
can be swapped to avoid the negation. It makes the code easier to read
and slightly faster to run.
|
|
|
|
|
|
|
| |
* Delete blank lines at end of files.
* Delete white space at end of lines.
* Delete spaces before tab.
* Replace 8 spaces by a tab where it makes sense.
|
| |
|
|
|
|
|
|
| |
This is trigered e.g. when you try to add a binary file to a patch.
This is actually creepy to think that we were not checking the
retcode of diff :)
|
|
|
|
|
|
| |
Use the same syntax for file testing as used in other test cases. It
is more readable and avoids having to add yet another condition for
$needs_shell.
|
|
|
|
|
|
|
| |
Explain why -E is no longer passed to patch by default, and why a
user may want to revert to the old behavior.
Based on a preliminary patch by Martin Quinson.
|
|
|
|
|
|
|
| |
Add a test case for "quilt refresh" on a patch leaving an empty file.
We were already testing that imported patches doing that were handled
properly, now we want to ensure that refreshing such patches preserves
the information.
|