smart-apply-patch
is a command to help apply patches easily. It uses the same plug-ins and many of the same options as test-patch. This means that it can, for example, fetch patches from JIRA and apply them to a local source tree.
Its simplest form is used when a patch is stored in a local file:
$ smart-apply-patch patch
This will cause the command to run through various ways to verify and then apply the patch to the current repo, including deducing a patch level.
smart-apply-patch
supports many of the same switches and configurations
that test-patch
does. Using those switches means that, for example, it is possible to pull and apply a GitHub PR very easily:
$ smart-apply-patch --plugins=github --github-repo apache/yetus GH:3000
smart-apply-patch
will do all the work of downloading, verifying, and applying just as test-patch
would.
Perhaps you just want to see if the patch even applies without changing your local repo. The --dry-run
option will just test for applicability:
$ smart-apply-patch --dry-run patch
For committers of projects, there is a special mode:
$ smart-apply-patch --committer patch
that in addition to applying the patch will also attempt to:
--whitespace=fix
mode--signoff
and commit the change via git-amFor speciality CI needs, it may be useful to just have access to Apache Yetus'
ability to interpret changes and then do your own actions based upon that
content. smart-apply-patch
has two options that expose that functionality
for highly customized CI needs:
$ smart-apply-patch --plugins=gitlab --changedfilesreport=/tmp/myfile.txt GL:100
This command will download GitLab merge request #100, process it, and write a
file called /tmp/myfile.txt
that lists the files that were changed.
$ smart-apply-patch --build-tool=maven --plugins=maven --changedmodulesreport=/tmp/mymodules.txt /tmp/file.patch
Similarly, this option will return the module list from /tmp/file.patch
.
Or, perhaps you simply want to know the deepest directory with a change?
$ smart-apply-patch --build-tool=maven --plugins=maven --changedunionreport=/tmp/base.txt http://example.com/patch
If you want to generate these reports without actually applying it (where
possible), then the --reports-only
option is available:
$ smart-apply-patch --reports-only --changedfilesreport=/tmp/myfile.txt /tmp/file.patch