diff mbox

[U-Boot] patman: Allow use outside of u-boot tree

Message ID 1357768902-16190-1-git-send-email-vbendeb@chromium.org
State Superseded, archived
Headers show

Commit Message

Vadim Bendebury Jan. 9, 2013, 10:01 p.m. UTC
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.

   . 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>
---
 tools/patman/patman.py |   14 ++++++++++----
 1 files changed, 10 insertions(+), 4 deletions(-)

Comments

Vadim Bendebury Jan. 9, 2013, 10:07 p.m. UTC | #1
On Wed, Jan 9, 2013 at 2:01 PM, Vadim Bendebury <vbendeb@chromium.org> wrote:
> 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.
>
>    . 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>
> ---
>  tools/patman/patman.py |   14 ++++++++++----
>  1 files changed, 10 insertions(+), 4 deletions(-)
>
> diff --git a/tools/patman/patman.py b/tools/patman/patman.py
> index e56dd01..6620a48 100755
> --- a/tools/patman/patman.py
> +++ b/tools/patman/patman.py
> @@ -50,6 +50,9 @@ parser.add_option('-i', '--ignore-errors', action='store_true',
>         help='Send patches email even if patch errors are found')
>  parser.add_option('-n', '--dry-run', action='store_true', dest='dry_run',
>         default=False, help="Do a try run (create but don't email patches)")
> +parser.add_option('-p', '--project', default=project.DetectProject(),
> +                  help="Project name; affects default option values and "
> +                  "aliases [default: %default]")
>  parser.add_option('-s', '--start', dest='start', type='int',
>         default=0, help='Commit to start creating patches from (0 = HEAD)')
>  parser.add_option('-t', '--test', action='store_true', dest='test',
> @@ -58,11 +61,11 @@ parser.add_option('-v', '--verbose', action='store_true', dest='verbose',
>         default=False, help='Verbose output of errors and warnings')
>  parser.add_option('--cc-cmd', dest='cc_cmd', type='string', action='store',
>         default=None, help='Output cc list for patch file (used by git)')
> +parser.add_option('--no-check', action='store_true', dest='no_check',
> +                  default=False,
> +                  help="Don't check for patch compliance")
>  parser.add_option('--no-tags', action='store_false', dest='process_tags',
>                    default=True, help="Don't process subject tags as aliaes")
> -parser.add_option('-p', '--project', default=project.DetectProject(),
> -                  help="Project name; affects default option values and "
> -                  "aliases [default: %default]")
>
>  parser.usage = """patman [options]
>
> @@ -146,7 +149,10 @@ else:
>      series.DoChecks()
>
>      # Check the patches, and run them through 'git am' just to be sure
> -    ok = checkpatch.CheckPatches(options.verbose, args)
> +    if options.no_check:
> +        ok = True
> +    else:
> +        ok = checkpatch.CheckPatches(options.verbose, args)
>      if not gitutil.ApplyPatches(options.verbose, args,
>              options.count + options.start):
>          ok = False
> --
> 1.7.7.3
>

Doug, thank you for a prompt review, copying your response here,
please see below:

On Wed, Jan 9, 2013 at 1:48 PM, Doug Anderson <dianders@chromium.org> wrote:
> Vadim,
>
> Thanks for the patch!  Looks good in general, though please add the
> "patman" prefix to the first line of your commit message.
>

done

>
> On Wed, Jan 9, 2013 at 1:13 PM, Vadim Bendebury <vbendeb@chromium.org> wrote:
>> To make it usable in git trees not providing a patch checker
>> implementation, add a command line option, allowing to suippress patch
>
> s/suippress/suppress
>

done

>> +parser.add_option('--no-check', action='store_true', dest='no_check',
>> +                  default=False,
>> +                  help="Don't check for patch compliance")
>
> IMHO It would be slightly better to use action='store_false',
> dest='check', and default=True (just to avoid so many
> double-negatives).

I don't quite agree with this part - I think it's perfectly reasonable
to use 'no-check' to suppress the check, just as well as to use
'no-tags' to suppress interpreting tags.

`--no' communicates that by default the respective feature is enabled,
and to disable it one needs to add a command line option with no
parameter.

cheers,
/vb
Doug Anderson Jan. 9, 2013, 10:57 p.m. UTC | #2
Vadim,

On Wed, Jan 9, 2013 at 2:07 PM, Vadim Bendebury <vbendeb@chromium.org> wrote:
>>> +parser.add_option('--no-check', action='store_true', dest='no_check',
>>> +                  default=False,
>>> +                  help="Don't check for patch compliance")
>>
>> IMHO It would be slightly better to use action='store_false',
>> dest='check', and default=True (just to avoid so many
>> double-negatives).
>
> I don't quite agree with this part - I think it's perfectly reasonable
> to use 'no-check' to suppress the check, just as well as to use
> 'no-tags' to suppress interpreting tags.
>
> `--no' communicates that by default the respective feature is enabled,
> and to disable it one needs to add a command line option with no
> parameter.

Sorry--should have been more explicit.  Was still expecting the option
to be --no-check.  Just asking for a change to the way it's stored.
Like this in the python dev guide:

parser.add_option("--clobber", action="store_true", dest="clobber")
parser.add_option("--no-clobber", action="store_false", dest="clobber")

In your case, I don't think you need to add the "check" option too,
but just store to the "check" option:

parser.add_option('--no-check', action='store_false', dest='check',
                  default=True,
                  help="Don't check for patch compliance")
Vadim Bendebury Jan. 9, 2013, 11:40 p.m. UTC | #3
On Wed, Jan 9, 2013 at 2:57 PM, Doug Anderson <dianders@chromium.org> wrote:
> Vadim,
>
> On Wed, Jan 9, 2013 at 2:07 PM, Vadim Bendebury <vbendeb@chromium.org> wrote:
>>>> +parser.add_option('--no-check', action='store_true', dest='no_check',
>>>> +                  default=False,
>>>> +                  help="Don't check for patch compliance")
>>>
>>> IMHO It would be slightly better to use action='store_false',
>>> dest='check', and default=True (just to avoid so many
>>> double-negatives).
>>
>> I don't quite agree with this part - I think it's perfectly reasonable
>> to use 'no-check' to suppress the check, just as well as to use
>> 'no-tags' to suppress interpreting tags.
>>
>> `--no' communicates that by default the respective feature is enabled,
>> and to disable it one needs to add a command line option with no
>> parameter.
>
> Sorry--should have been more explicit.  Was still expecting the option
> to be --no-check.  Just asking for a change to the way it's stored.
> Like this in the python dev guide:
>
> parser.add_option("--clobber", action="store_true", dest="clobber")
> parser.add_option("--no-clobber", action="store_false", dest="clobber")
>
> In your case, I don't think you need to add the "check" option too,
> but just store to the "check" option:
>
> parser.add_option('--no-check', action='store_false', dest='check',
>                   default=True,
>                   help="Don't check for patch compliance")

ah, a good idea, changed. Also, modified the code in checkpatch.py not
to throw an exception, but to print an error message and return a
nonzero status.
diff mbox

Patch

diff --git a/tools/patman/patman.py b/tools/patman/patman.py
index e56dd01..6620a48 100755
--- a/tools/patman/patman.py
+++ b/tools/patman/patman.py
@@ -50,6 +50,9 @@  parser.add_option('-i', '--ignore-errors', action='store_true',
        help='Send patches email even if patch errors are found')
 parser.add_option('-n', '--dry-run', action='store_true', dest='dry_run',
        default=False, help="Do a try run (create but don't email patches)")
+parser.add_option('-p', '--project', default=project.DetectProject(),
+                  help="Project name; affects default option values and "
+                  "aliases [default: %default]")
 parser.add_option('-s', '--start', dest='start', type='int',
        default=0, help='Commit to start creating patches from (0 = HEAD)')
 parser.add_option('-t', '--test', action='store_true', dest='test',
@@ -58,11 +61,11 @@  parser.add_option('-v', '--verbose', action='store_true', dest='verbose',
        default=False, help='Verbose output of errors and warnings')
 parser.add_option('--cc-cmd', dest='cc_cmd', type='string', action='store',
        default=None, help='Output cc list for patch file (used by git)')
+parser.add_option('--no-check', action='store_true', dest='no_check',
+                  default=False,
+                  help="Don't check for patch compliance")
 parser.add_option('--no-tags', action='store_false', dest='process_tags',
                   default=True, help="Don't process subject tags as aliaes")
-parser.add_option('-p', '--project', default=project.DetectProject(),
-                  help="Project name; affects default option values and "
-                  "aliases [default: %default]")
 
 parser.usage = """patman [options]
 
@@ -146,7 +149,10 @@  else:
     series.DoChecks()
 
     # Check the patches, and run them through 'git am' just to be sure
-    ok = checkpatch.CheckPatches(options.verbose, args)
+    if options.no_check:
+        ok = True
+    else:
+        ok = checkpatch.CheckPatches(options.verbose, args)
     if not gitutil.ApplyPatches(options.verbose, args,
             options.count + options.start):
         ok = False