| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
| |
"quilt refresh" reports diff failures to the user. "quilt diff"
should do the same.
|
|
|
|
|
|
|
|
| |
If QUILT_PATCHES or QUILT_SERIES are set both in ~/.quiltrc and
.pc/.quilt_patches (respectively .pc/.quilt_series), the former
currently takes precedence. This pretty much voids the value of
per-project settings. Project settings should have the highest
priority.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Let function cat_to_new_file optionally backup the destination file
before overwriting it. This has two advantages:
* This avoids duplicating code on the caller's side. Functions header
and refresh both need to perform a backup.
* This guarantees the consistency of the backup logic. At the moment,
the refresh command would handle the backup of a symlinked file
just fine while the header command would misbehave in that case.
Now that the header command handles symlinked patches properly, also
test it so that we don't break it accidentally later.
|
|
|
|
|
| |
Extend the hard-linked patch test case to also check the behavior
when updating the header of such a patch.
|
|
|
|
| |
Add a test case for backup failure to the test suite.
|
|
|
|
|
|
|
| |
"mv" may or may not overwrite a read-only file by default, depending
on whether or not it is considered to be interactive. Removing the
file explicitly before avoids that uncertainty and makes it easier to
play the test case manually.
|
|
|
|
|
|
| |
In the general case, when doing a backup copy of a patch on refresh,
the modification time of the file is preserved. We should do the same
when the patch is a symbolic link.
|
|
|
|
|
|
|
|
| |
We just changed the behavior of the refresh command to no longer
break symbolic links. While preserving the links is the right thing
to do in the general case, this approach fails if the patch file is
read-only. In that case we want to replace the link itself with the
refreshed patch, as we used to.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Change the core behavior of quilt to not remove symlinks to the patch
files.
Historical notes:
This is an 6 year old patch that is still actively used for the
Yocto Project and others.
http://lists.nongnu.org/archive/html/quilt-dev/2008-01/msg00004.html
Revised again here:
http://comments.gmane.org/gmane.comp.handhelds.openembedded/34224
[Edited by Jean Delvare: removed a compatibility option, we'll
introduce it only if users ask for it. Also cleaned up the test
case a bit.]
Signed-off-by: Jason Wessel <jason.wessel@windriver.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
There is one corner case which is not properly handled by the "edit"
command. If a patch deletes a file, and the user calls "quilt edit"
on that file but does not actually add anything back to it, "quilt
remove" is called on the file when the editor exits. This causes
the file to be restored to its original state before the patch deleted
it. The user never asked for that, so the file should be left to its
deleted state in this case. The file must only be removed from the
patch if it was not part of the patch originally.
The same problem would occur if the editor deleted the file. In
general text editors don't do that, they'd leave an empty file
instead, but nothing prevents them from actually deleting the file so
we should handle this case properly too.
|
|
|
|
|
|
|
|
|
|
|
| |
Commit f1c186ee renamed command "remove" to "revert". Commit bd1dfdab
changed the semantics of command "revert". Commit 6d2501ac restored
command "remove". However command "edit" is still calling command
"revert" to remove files from the patch when it should be using
command "remove".
This case was not covered by the test suite, which is why the bug was
not spotted earlier.
|
|
|
|
|
|
|
|
|
| |
Cover one more use case of the "edit" command in the test case: file
creation.
Also reorder some of the commands to make the tests easier to follow.
The intent is easier to understand when the result is tested after
each command.
|
|
|
|
|
| |
Merge the two revert test cases into a single, complete and commented
test file.
|
|
|
|
| |
Add coverage of the multi-line header case to the mail test case.
|
|
|
|
|
|
| |
If a patch file has hard links, refreshing it should break the links
so that the other copies are left unmodified. Test this behavior to
avoid breaking it accidentally.
|
|
|
|
|
| |
Add an option to automatically refresh each patch after is was
successfully applied.
|
|
|
|
|
| |
Add an option to automatically refresh each patch before it gets
unapplied.
|
|
|
|
|
|
|
|
| |
If the series file is inconsistent, "quilt pop" will disable the
consistency check as it updates the timestamp of the database file.
It's OK if all patches are popped. If not then the series file may
still be inconsistent. In that case, we want to update the timestamp
of the series file, to rearm the consistency check.
|
|
|
|
|
|
|
|
|
| |
"quilt push 0" returns the following cryptic message:
Now at patch patches/quilt
So add the same check we already have in command pop and detect when
nothing needs to be done, returning the more sane message:
No patch applied
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Quilt allows manual changes to the series file to some degree. For
example, adding comments or reordering patches in the unapplied
section of the series file is OK. However, changing the order of
applied patches breaks a number of assumptions and can cause quilt to
produce unexpected or confusing results.
For example, starting from this:
+ patches/01.patch
= patches/02.patch
patches/03.patch
patches/04.patch
and moving the last patch at the beginning of the series file,
"quilt series -v" will print:
+ patches/04.patch
+ patches/01.patch
= patches/02.patch
patches/03.patch
That is, it will claim that 04.patch is applied, while it it not.
Likewise, 04.patch would be listed by neither "quilt applied" nor
"quilt unapplied".
While addressing all such cases would certainly be possible, that
would require a significant amount of work, and would come with
performance penalties. It would also be difficult to be certain that
all issues have been found and addressed. So it seems more reasonable
to simply spot such manual changes to the series file and ask the user
to pop all patches to start from a clean state as needed.
|
| |
|
|
|
|
|
|
| |
We already have a function to figure out which files are touched by
unapplied patches. The only thing missing to let the user call "quilt
files" on unapplied patches was two small spots of glue.
|
|
|
|
|
| |
Now that the patches command works with context patches, we can test
that.
|
|
|
|
|
|
|
| |
The version check is irrelevant when running "quilt setup", as it is
creating a brand new working tree anyway.
Reported by Petr Tesarik.
|
|
|
|
|
|
|
|
| |
diff might be called by a different name if the configure script was
invoked with the --with-diff argument. Make the permissions test in
faildiff.test match other names as well.
Signed-off-by: Kent R. Spillner <kspillner@acm.org>
|
| |
|
|
|
|
|
| |
Create directory "patches" so that quilt commands get the right root
even if patch-wrapper fails.
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
|
| |
"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.
|
| |
|
|
|
|
|
|
|
| |
* 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.
|
|
|
|
|
|
|
| |
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.
|
| |
|