summaryrefslogtreecommitdiff
path: root/tools/patman
Commit message (Collapse)AuthorAgeLines
* patman: Only apply patches when we know the original HEADSimon Glass2014-07-07-0/+4
| | | | | | | | | | | | | | When patman applies the patches it checks out a new branch, uses 'git am' to apply the patches one by one, and then tries to go back to the old branch. If you try this when the branch is 'undefined', this doesn't work as patman cannot restore the correct branch after applying the patches. It seems that 'undefined' is created by git and is persistent after it is created, so that you can end up on quite an old branch. Add a check for the 'undefined' branch to avoid this. Reported-by: Masahiro Yamada <yamada.m@jp.panasonic.com> Signed-off-by: Simon Glass <sjg@chromium.org>
* patman: Suppress duplicate signoffs only for real patchesSimon Glass2014-05-16-1/+2
| | | | | | | | | | | | | There is an unfortunate bug in the signoff suppression logic. The first pass is performed with 'git log', and all signoffs are added to the supression set, such that the second time (when processing the real patches) we always suppress the signoffs. Correct this by only suppressing signoffs in the second pass. Signed-off-by: Simon Glass <sjg@chromium.org> Tested-by: Michal Simek <monstr@monstr.eu> Tested-by: Andreas Bießmann <andreas.devel@googlemail.com>
* patman: Avoid duplicate sign-offsSimon Glass2014-05-09-2/+23
| | | | | | | Keep track of all Signed-off-by tags in a commit and silently suppress any duplicates. Signed-off-by: Simon Glass <sjg@chromium.org>
* patman: Deal with 'git apply' failures correctlySimon Glass2014-05-09-2/+4
| | | | | | | This sort of failure is rare, but the code to deal with it is wrong. Fix it. Signed-off-by: Simon Glass <sjg@chromium.org>
* patman: Use Patch-cc: instead of Cc:Simon Glass2014-03-22-11/+14
| | | | | | | | | | | | | Add a new Patch-cc: tag which performs the service now provided by the Cc: tag. The Cc: tag is interpreted by git send-email but ignored by patman. So now: Cc: patman does nothing. (git send-email can cc patches) Patch-cc: patman Cc's patch and removes this tag from the patch Signed-off-by: Simon Glass <sjg@chromium.org>
* patman: add Commit-notes tag and sectionAlbert ARIBAUD2013-11-21-8/+47
| | | | | | | | | | | | | | Sometimes a commit should have notes enclosed with it rather than withing the cover letter -- possibly even because there is no cover letter. Add a 'Commit-notes' tag, similar to the 'Series-notes' one; lines between this tag and the next END line are inserted in the patch right after the '---' commit delimiter. Change-Id: I01e99ae125607dc6dec08f3be8a5a0b37f0a483d Signed-off-by: Albert ARIBAUD <albert.u.boot@aribaud.net> Signed-off-by: Simon Glass <sjg@chromium.org> (Updated README)
* Add GPL-2.0+ SPDX-License-Identifier to source filesWolfgang Denk2013-07-24-239/+15
| | | | | | Signed-off-by: Wolfgang Denk <wd@denx.de> [trini: Fixup common/cmd_io.c] Signed-off-by: Tom Rini <trini@ti.com>
* patman: README documentation nits (unit test)Gerhard Sittig2013-07-15-4/+4
| | | | | | | | | | adjust instructions for the invocation of Patman's self test: the -t flag appears to have a different meaning now, refer to the --test option for the builtin unit test; adjust a directory location and make sure to run the file which resides in the source directory Signed-off-by: Gerhard Sittig <gsi@denx.de> Acked-by: Simon Glass <sjg@chromium.org>
* buildman: Produce a sensible error message when branch is missingSimon Glass2013-05-14-6/+15
| | | | | | | Rather than a backtrace, produce a nice error message when an invalid branch is provided to buildman. Signed-off-by: Simon Glass <sjg@chromium.org>
* patman: Do not hardcode python pathMichal Simek2013-05-09-1/+1
| | | | | | | | | | | | Patman requires python 2.7.4 to run but it doesn't need to be placed in /usr/bin/python. Use env to ensure that the interpreter used is the first one on environment's $PATH on system with several versions of Python installed. Signed-off-by: Michal Simek <michal.simek@xilinx.com> Reviewed-by: Tom Rini <trini@ti.com> Acked-by: Simon Glass <sjg@chromium.org>
* buildman: Allow conflicting tags to avoid spurious errorsSimon Glass2013-05-09-1/+3
| | | | | | | | | | Conflicting tags can prevent buildman from building two series which exist one after the other in a branch. There is no reason not to allow this sort of workflow with buildman, so ignore conflicting tags in buildman. Change-Id: I2231d04d8684fe0f8fe77f8ea107e5899a3da5e8 Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Tom Rini <trini@ti.com>
* patman: fix gitutil for decorationsAndreas Bießmann2013-04-18-4/+7
| | | | | | | | | The git config parameter log.decorate is quite useful when working with git. Patman, however can not handle the decorated output when parsing the commit. To prevent this use the '--no-decorate' switch for git-log. Signed-off-by: Andreas Bießmann <andreas.devel@googlemail.com> Acked-by: Simon Glass <sjg@chromium.org>
* patman: Add Series-process-log tag to sort/uniq change logsSimon Glass2013-04-08-4/+16
| | | | | | | | | | | | | | For some series with lots of changes it is annoying that duplicate change log items are not caught. It is also helpful sometimes to sort the change logs. Add a Series-process-log tag to enable this, which can be placed in a commit to control this. The change to the Cc: line is to fix a checkpatch warning. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Doug Anderson <dianders@chromium.org>
* patman: Add -a option to refrain from test-applying the patchesSimon Glass2013-04-08-3/+7
| | | | | | | | | | Especially with the Linux kernel, it takes a long time (a minute or more) to test-apply the patches, so patman becomes significantly less useful. The only real problem that is found with this apply step is trailing spaces. Provide a -a option to skip this step, for those working with clean patches. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Doug Anderson <dianders@chromium.org>
* patman: Don't barf if the word 'commit' starts a lineDoug Anderson2013-04-08-1/+1
| | | | | | | | | | | Patman's regular expression for detecting the start of a commit in a git log was a little simplistic and could be confused if the git log itself had the word "commit" as the start of a line (as this commit does). Make patman a little more robust. Signed-off-by: Doug Anderson <dianders@chromium.org> Acked-by: Simon Glass <sjg@chromium.org>
* patman: Provide option to ignore bad aliasesSimon Glass2013-04-08-24/+61
| | | | | | | | | | | | | | | Often it happens that patches include tags which don't have aliases. It is annoying that patman fails in this case, and provides no option to continue other than adding empty tags to the .patman file. Correct this by adding a '-t' option to ignore tags that don't exist. Print a warning instead. Since running the tests is not a common operation, move this to --test instead, to reserve -t for this new option. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Doug Anderson <dianders@chromium.org>
* patman: Ignore all Gerrit Commit-* tagsSimon Glass2013-04-04-1/+1
| | | | | | | These tags are used by Gerrit, so let's ignore all of them. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Doug Anderson <dianders@chromium.org>
* patman: Minor help message/README fixesSimon Glass2013-04-04-3/+3
| | | | | | | | A few of the help messages are not quite right, and there is a typo in the README. Fix these. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Doug Anderson <dianders@chromium.org>
* patman: Fix the comment in CheckTags to mention multiple tagsSimon Glass2013-04-04-2/+3
| | | | | | | | This comment is less than helpful. Since multiple tags are supported, add an example of how multiple tags work. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Doug Anderson <dianders@chromium.org>
* patman: Don't allow spaces in tagsSimon Glass2013-04-04-1/+1
| | | | | | | | | | | | | | | | | | | At present something like: Revert "arm: Add cache operations" will try to use Revert "arm as a tag. Clearly this is wrong, so fix it. If the revert is intended to be tagged, then the tag can come before the revert, perhaps. Alternatively the 'Cc' tag can be used in the commit messages. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Doug Anderson <dianders@chromium.org>
* patman: Fix up checkpatch parsing to deal with 'CHECK' linesSimon Glass2013-04-04-62/+112
| | | | | | | | | | | | | | | checkpatch has a new type of warning, a 'CHECK'. At present patman fails with these, which makes it less than useful. Add support for checks, making it backwards compatible with the old checkpatch. At the same time, clean up formatting of the CheckPatches() output, fix erroneous "internal error" if multiple patches have warnings and be more robust to new types of problems. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Doug Anderson <dianders@chromium.org>
* patman: Add Cover-letter-cc tag to Cc cover letter to peopleSimon Glass2013-04-04-4/+27
| | | | | | | | | | | | The cover letter is sent to everyone who is on the Cc list for any of the patches in the series. Sometimes it is useful to send just the cover letter to additional people, so that they are aware of the series, but don't need to wade through all the individual patches. Add a new Cover-letter-cc tag for this purpose. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Doug Anderson <dianders@chromium.org>
* patman: Allow specifying the message ID your series is in reply toDoug Anderson2013-04-04-2/+9
| | | | | | | | | Some versions of git don't seem to prompt you for the message ID that your series is in reply to. Allow specifying this from the command line. Signed-off-by: Doug Anderson <dianders@chromium.org> Acked-by: Simon Glass <sjg@chromium.org>
* patman: Make "Reviewed-by" an important tagDoug Anderson2013-04-04-4/+4
| | | | | | | | | | Although "Reviewed-by:" is a tag that gerrit adds, it's also a tag used by upstream. Stripping it is undesirable. In fact, we should treat it as important. Signed-off-by: Doug Anderson <dianders@chromium.org> Reviewed-by: Otavio Salvador <otavio@ossystems.com.br> Acked-by: Simon Glass <sjg@chromium.org>
* patman: Add additional git utiltiesSimon Glass2013-04-04-1/+123
| | | | | | | Add methods to find out the commits in a branch, clone a repo and fetch from a repo. Signed-off-by: Simon Glass <sjg@chromium.org>
* patman: Allow reading metadata from a list of commitsSimon Glass2013-04-04-7/+29
| | | | | | | | We normally read from the current branch, but buildman will need to look at commits from another branch. Allow the metadata to be read from any list of commits, to provide this flexibility. Signed-off-by: Simon Glass <sjg@chromium.org>
* patman: Allow commands to raise on error, or notSimon Glass2013-04-04-7/+13
| | | | | | | | Make raise_on_error a parameter so that we can control which commands raise and which do not. If we get an error reading the alias file, just continue. Signed-off-by: Simon Glass <sjg@chromium.org>
* patman: Make command methods return a CommandResultSimon Glass2013-04-04-24/+64
| | | | | | | | Rather than returning a list of things, return an object. That makes it easier to access the returned items, and easier to extend the return value later. Signed-off-by: Simon Glass <sjg@chromium.org>
* patman: Add cros_subprocess library to manage subprocessesSimon Glass2013-04-04-0/+397
| | | | | | | | | | | | | This adds a new library on top of subprocess which permits access to the subprocess output as it is being generated. We can therefore give the illusion that a process is running independently, but still monitor its output so that we know what is going on. It is possible to display output on a terminal as it is generated (a little like tee). The supplied output function is called with all stdout/stderr data as it arrives. Signed-off-by: Simon Glass <sjg@chromium.org>
* patman: Use bright ANSI colours by defaultSimon Glass2013-04-04-8/+11
| | | | | | | Rather than the rather dull colours, use bright versions which normally look better and are easier to read. Signed-off-by: Simon Glass <sjg@chromium.org>
* patman: Use ANSI colours only when outputting to a terminalSimon Glass2013-04-04-2/+9
| | | | | | | | It is easy to detect whether or not the process is connected to a terminal, or piped to a file. Disable ANSI colours automatically when output is not to a terminal. Signed-off-by: Simon Glass <sjg@chromium.org>
* patman: Allow use outside of u-boot treeVadim Bendebury2013-01-31-9/+15
| | | | | | | | | | | | | | | | | | | | | | | | To make it usable in git trees not providing a patch checker implementation, add a command line option, allowing to suppress patch check. While we are at it, sort debug options alphabetically. Also, do not raise an exception if checkpatch.pl is not found - just print an error message suggesting to use the new option, and return nonzero status. . unit test passes: $ ./patman -t <unittest.result.TestResult run=7 errors=0 failures=0> . successfully used patman in the autotest tree to generate a patch email (with --no-check option) . successfully used patman in the u-boot tree to generate a patch email . `patman --help' now shows command line options ordered alphabetically Signed-off-by: Vadim Bendebury <vbendeb@chromium.org> Acked-by: Doug Anderson <dianders@chromium.org> Acked-by: Simon Glass <sjg@chromium.org>
* patman: Add settings to the list of modules to doctestDoug Anderson2013-01-31-2/+3
| | | | | | The settings modules now has doctests, so run them. Signed-off-by: Doug Anderson <dianders@chromium.org>
* patman: Add the concept of multiple projectsDoug Anderson2013-01-31-4/+208
| | | | | | | | | | | | | | There are cases that we want to support different settings (or maybe even different aliases) for different projects. Add support for this by: * Adding detection for two big projects: U-Boot and Linux. * Adding default settings for Linux (U-Boot is already good with the standard patman defaults). * Extend the new "settings" feature in .patman to specify per-project settings. Signed-off-by: Doug Anderson <dianders@chromium.org> Acked-by: Simon Glass <sjg@chromium.org>
* patman: Add support for settings in .patmanDoug Anderson2013-01-31-6/+54
| | | | | | | | | | | | | | | | | | | | | | This patch adds support for a [settings] section in the .patman file. In this section you can add settings that will affect the default values for command-line options. Support is added in a generic way such that any setting can be updated by just referring to the "dest" of the option that is passed to the option parser. At the moment options that would make sense to put in settings are "ignore_errors", "process_tags", and "verbose". You could override them like: [settings] ignore_errors: True process_tags: False verbose: True The settings functionality is also used in a future change which adds support for per-project settings. Signed-off-by: Doug Anderson <dianders@chromium.org>
* patman: Add a call to get_maintainer.pl if it existsDoug Anderson2013-01-31-2/+74
| | | | | | | | | For Linux the best way to figure out where to send a patch is with the "get_maintainer.pl" script. Add support for calling it from patman. Support is added unconditionally for "scripts/get_maintainer.pl" in case it is helpful for any other projects. Signed-off-by: Doug Anderson <dianders@chromium.org>
* patman: Add all CC addresses to the cover letterDoug Anderson2013-01-31-2/+15
| | | | | | | If we're sending a cover letter make sure to CC everyone that we're CCing on each of the individual patches. Signed-off-by: Doug Anderson <dianders@chromium.org>
* patman: Cache the CC list from MakeCcFile() for use in ShowActions()Doug Anderson2013-01-31-6/+13
| | | | | | | | | | Currently we go through and generate the CC list for patches twice. This gets slow when (in a future CL) we add a call to get_maintainer.pl on Linux. Instead of doing things twice, just cache the CC list when it is first generated. Signed-off-by: Doug Anderson <dianders@chromium.org> Acked-by: Simon Glass <sjg@chromium.org>
* patman: Look for checkpatch in the scripts directoryDoug Anderson2013-01-31-1/+3
| | | | | | | | | The Linux kernel stores checkpatch.pl in the scripts directory. Add that to the search path to make things more automatic for kernel development. Signed-off-by: Doug Anderson <dianders@chromium.org> Acked-by: Simon Glass <sjg@chromium.org>
* patman: Allow tests to run even if patman is in the pathDoug Anderson2013-01-31-2/+9
| | | | | | | | | | | Several of the patman doctests assume that patman was run with: ./patman Fix them so that they work even if patman is run with just "patman" (because patman is in the path). Signed-off-by: Doug Anderson <dianders@chromium.org> Acked-by: Simon Glass <sjg@chromium.org>
* patman: Add spaces back into patman testDoug Anderson2013-01-31-3/+3
| | | | | | | | | The patman test code was failing because some extra spaces got stripped when it was applied. These spaces are critical to the test code working. Signed-off-by: Doug Anderson <dianders@chromium.org> Acked-by: Simon Glass <sjg@chromium.org>
* patman: Issue empty change logs for unchanged patchesSimon Glass2012-11-14-8/+13
| | | | | | | | | | | | Often a particular patch may change only for some versions of a series. For versions where there is no change, issue a change log indicating that (for example 'Changes in v4: None'). For such lines, don't add a blank line afterwards, to conserve space. Use list.insert() instead of list = [item] + list. Signed-off-by: Simon Glass <sjg@chromium.org> Tested-by: Stefan Roese <sr@denx.de>
* patman: Add additional tags to ignoreSimon Glass2012-11-04-2/+2
| | | | | | | | | The BRANCH= tag can be used to indicate the destination branch for a commit. Ignore this tag. Also ignore the gerrit 'Commit-Ready:' tag. Signed-off-by: Simon Glass <sjg@chromium.org>
* patman: force git log commands to not use colorAlbert ARIBAUD2012-10-19-2/+3
| | | | | | | | | | Colored logs confuse patman when analyzing logs. Add --no-color option in git log commands in case the default config has color. Signed-off-by: Albert ARIBAUD <albert.u.boot@aribaud.net> Acked-by: Simon Glass <sjg@chromium.org> Signed-off-by: Tom Rini <trini@ti.com>
* patman: Handle checkpatch.pl not providing file/line infoSimon Glass2012-10-15-2/+3
| | | | | | | | Sometimes we don't get a valid filename or line number from checkpatch.pl, for example if the patch is in a bad format. Deal with this by using a default value, rather than a stack trace. Signed-off-by: Simon Glass <sjg@chromium.org>
* patman: Support Series-name tag to name a seriesSimon Glass2012-10-15-2/+7
| | | | | | | | Sometimes it is possible to forget the name of the branch you used to generate an upstream series. To assist with this, add an optional patman does not use this. Signed-off-by: Simon Glass <sjg@chromium.org>
* patman: Use reverse order for changelogOtavio Salvador2012-09-26-4/+4
| | | | | | | | | | Specially when many revisions are need for a patchset, the most interesting information is about the last set of changes so we output the changelog in reverse order to easy identification of most recent change set. Signed-off-by: Otavio Salvador <otavio@ossystems.com.br> Acked-by: Simon Glass <sjg@chromium.org>
* patman: Do not Cc addresses included in To listOtavio Salvador2012-09-02-0/+7
| | | | | | | | | | In case an address is listed in the To list, those will be skipped on Cc list or user might end with a duplicated message. This fixes the case when a tag points to same address used as series destination thus avoiding duplicated sending. Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
* patman: Allow for changelog use in first version of a seriesOtavio Salvador2012-09-02-3/+4
| | | | | | | | | When a patchset had a RFC series, a v1 might have a changelog of changes done since the RFC. The patch changes the range checked for changelog and allow it to start for version 1. Signed-off-by: Otavio Salvador <otavio@ossystems.com.br> Acked-by: Simon Glass <sjg@chromium.org>
* patman: don't mess with signoffsIlya Yanok2012-09-02-11/+2
| | | | | | | | | | | | | | | | Currently patman assumes that there should be only one Signoff line and this is obviously incorrect: we often have to work with patches containing other people signoffs. Moreover, it's really desirable to preserve the comments between signoffs. So until some sophisticated signoff processing will be developed I suggest just don't mess with signoffs at all and treat them like plain text lines. The only drawback I've found so far is the case where you have a patch with someones else signoff but not yours and also have to patman tags under signoff line. In this case you will get extra empty line between signoffs. Signed-off-by: Ilya Yanok <ilya.yanok@cogentembedded.com>