| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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.
|
|
|
|
|
|
| |
@ETCDIR@ is substituted at build time so it should not appear in
translated messages. Replace it with %s and pass the actual value as a
parameter.
|
| |
|
|
|
|
|
| |
The original message has the dollar sign protected, so the Japanese
translation should do the same.
|
| |
|
|
|
|
| |
Translation updates take time so it should be the first item.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
| |
Bash's printf doesn't allow reordering the arguments.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
When a link's target is the directory it lives in, create_symlink
would erroneously link to "..". Fix the code to properly link to "."
instead.
This fixes openSUSE bug #916007:
https://bugzilla.opensuse.org/show_bug.cgi?id=916007
Credits to Robert Milasan for spotting the bug.
|
|
|
|
|
|
|
|
|
|
|
| |
The code was broken in 3 ways:
* I forgot to escape the "." so it would match any character.
* The g flag is not enough to catch consecutive "." components,
because pattern matches can't overlap.
* A trailing "." component would not be removed.
This fixes commit 3fd706a50b7dbb4f8db6e5db014729db51e6beb0
("setup: Let normalize_path deal with "."".)
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
@RELEASE@ is replaced with the package-level release number in two
places: the spec file, where it is legitimate, and the mail command's
User-Agent string, where I think it is not. The package release
number should not affect the contents of the package, otherwise it
makes it difficult to compare build results.
I have checked other MUA (Mutt, Thunderbird, Claws Mail) and they all
only include the version, not the release number in their User-Agent
string.
Drop the @RELEASE@ replacement rule to make sure we don't use it
accidentally anywhere in the future. The spec file has its own build
rule so it is not affected.
|
|
|
|
|
|
| |
Don't filter out test/patch-wrapper.test if we are going to add it
back. Do it the other way around, that is include it by default and
only filter it out if needed.
|
|
|
|
|
|
|
|
| |
Run the tests in predictable order. This allows comparing the output
of "make check" between builds. With older versions of GNU make, the
list was already sorted, but this is no longer the case.
Suggested by Rich Burridge.
|
|
|
|
|
|
|
|
|
|
|
| |
quilt depends on procmail because 'quilt mail' requires formail.
However, formail is only used to extract header values from messages.
Since quilt already requires sed we can replace formail -x uses with
sed instead. The sed script is slightly complicated because it
needs to handle the case of "Long Header Fields" definied in RFC
2822, but essentially all it's doing is: look for the first line
beginning with the name of header we are looking for, and print
every line until one that does not start with blanks.
|
|
|
|
| |
Add coverage of the multi-line header case to the mail test case.
|
|
|
|
|
|
|
| |
There is no good reason for the setup command to be split into two
scripts, setup and inspect. Merge inspect into setup to save the
extra interfacing overhead. Performance improvement reaches 5% on
simple packages.
|
|
|
|
|
|
|
| |
Fix funtion create_symlink. If the link has an absolute path then its
target should be set to an absolute path as well. This fixes the use
of "quilt setup" with an absolute -d path and a relative --sourcedir
path.
|
|
|
|
|
|
|
| |
Let function normalize_path handle "." path components. Otherwise
invocations like "quilt setup --sourcedir=. foo.spec" may produce
invalid series files, and "quilt setup -d ./dir foo.spec"
generates a broken "patches" link.
|
|
|
|
|
|
| |
A typo in quilt-patch-list prevents patch select completion operation.
Reviewed and tested by Satoru Takeuchi.
|
|
|
|
|
|
|
| |
quilt-find-dir goes to endless recursion if root is not '/'. This
holds for files opened with tramp for example.
Reviewed and tested by Satoru Takeuchi.
|
|
|
|
|
|
| |
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.
|
|
|
|
| |
Don't test the same condition twice in a row, it's inefficient.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This is an alternative implementation of "quilt setup" for rpm spec
files, which is much faster than the original implementation. The
idea is to have rpmbuild generate our working tree directly, instead
of taking note of everything it does and then replaying that record
from scratch.
The new implementation is enabled with option --fast. The original
implementation can be selected with --slow, which is the default.
Having this option makes it possible to set the default to --fast in
~/.quiltrc and revert to --slow on the command line on a case-by-case
basis. This will also make it easier if we decide to change the
default in the future.
In general, the generated working tree should be the same with --slow
or --fast. There are 3 known exceptions though:
* The header of the series files is incomplete when using --fast,
which means that you can't reuse these series files to feed "quilt
setup" later.
* If the spec file generates files other than with the tar, unzip and
patch commands, you wouldn't get these files in your working tree
with --slow, but with --fast you will.
* With --fast, all patches are added to the series file, regardless
of whether they apply or not. This also means that patches which
fail to apply are not reported as such until you attempt to push
them.
On large packages, this alternative implementation was found to be
up to 4 times faster than the original implementation.
|
|
|
|
|
|
|
| |
Trace the calls to the patch/tar/unzip wrapper earlier. That way, if
anything goes wrong, we know which type of file was being processed.
Even if nothing goes wrong, the user now sees the file type as it is
being processed (which can take a long time.)
|
|
|
|
|
|
| |
Move the code that generates the series file header to a separate
function. This makes the code easier to read due to less folding, and
this is also more efficient than spawning a subshell.
|
|
|
|
|
| |
The push --interactive option has been removed long ago, clean up
remaining references.
|
|
|
|
|
|
| |
The interactive mode was broken long ago, and not forcing the
patch causes unpredictable and confusing behavior. Now the
"patch -f" option is always used.
|
|
|
|
|
| |
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.
|
|
|
|
|
| |
In order to make "quilt_command refresh" work properly, we must ensure
that format options are passed through.
|
|
|
|
|
|
|
| |
When the wrapper script is done, it passes control back to tar, unzip
or patch. Nothing needs to be done after that, so we might as well
use exec to switch to the new process. That should be marginally
faster than regular forking.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Extra patches (typically contained in archives) end up in the working
directory, not the source directory where regular patches live. In
the most common case, it makes no difference because both directories
are the same. However, as soon as options -d or --sourcedir are used
in conjunction with extra patches, the working directory and the
source directory are different, and the paths to the extra patches in
the series file get wrong.
While we can't possible handle the case where the source and working
directories are completely different, we can easily handle the most
typical case where the working directory is a subdirectory of the
source directory.
|
|
|
|
| |
Don't test if inputfile is set twice in a row.
|
|
|
|
|
|
|
|
|
|
| |
I couldn't find any reason why the patch/tar/unzip wrapper is
generated each time inspect is invoked. Make it a separate script in
its own right and let the patch, tar and unzip links point to it.
This makes this piece of code easier to read, edit, trace and debug.
This also solves the case where the filesystem hosting the temporary
files is mounted with noexec.
|
|
|
|
|
| |
Move the path normalization code to a separate function, to avoid
redundancy and make the code more readable.
|
|
|
|
|
|
|
|
| |
A few more files can be excluded from md5sums as we know they are
neither patches nor archives:
* _constraints, _service and baselibs.conf, from the Build Service
* signature files
* rpmlintrc files
|
|
|
|
|
|
|
|
|
| |
This temporary data file is overwritten as needed and the directory
it sits in is blasted when the script exits, so there is no point in
explicitly deleting this file at the beginning of each wrapper
invocation.
This simple change speeds up "inspect" by 3-4% in my tests.
|
|
|
|
|
|
| |
The wrappers may be called before the %prep section is entered, in
which case RPM_BUILD_DIR isn't set yet. In that case we want to
pass trough transparently.
|
|
|
|
|
|
|
|
|
|
| |
Instead of exporting an arbitrary list of quilt internal variables,
which helper scripts may or may not use, let each command explicitly
export variables as needed before calling an helper script. This is
both clearer and more efficient.
In practice, only dependency-graph needs to access internal
variables at the moment, and it only uses $QUILT_PC.
|