git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
From: Ben Keene <seraphire@gmail.com>
To: Junio C Hamano <gitster@pobox.com>,
	Ben Keene via GitGitGadget <gitgitgadget@gmail.com>
Cc: git@vger.kernel.org
Subject: Re: [PATCH v3 3/5] git-p4: add --no-verify option
Date: Mon, 10 Feb 2020 11:21:04 -0500	[thread overview]
Message-ID: <6706dad2-125b-89b4-ff2f-02a166bd4365@gmail.com> (raw)
In-Reply-To: <xmqqpnerec4v.fsf@gitster-ct.c.googlers.com>


On 2/6/2020 2:42 PM, Junio C Hamano wrote:
> "Ben Keene via GitGitGadget" <gitgitgadget@gmail.com> writes:
>
>> From: Ben Keene <seraphire@gmail.com>
>>
>> Add new command line option --no-verify:
>>
>> Add a new command line option "--no-verify" to the Submit command of
>> git-p4.py.  This option will function in the spirit of the existing
>> --no-verify command line option found in git commit. It will cause the
>> P4 Submit function to ignore the existing p4-pre-submit.
>>
>> Change the execution of the existing trigger p4-pre-submit to honor the
>> --no-verify option. Before exiting on failure of this hook, display
>> text to the user explaining which hook has failed and the impact
>> of using the --no-verify option.
>>
>> Change the call of the p4-pre-submit hook to use the new run_git_hook
>> function. This is in preparation of additional hooks to be added.
>>
>> Signed-off-by: Ben Keene <seraphire@gmail.com>
>> ---
>>   Documentation/git-p4.txt   | 10 ++++++++--
>>   Documentation/githooks.txt |  5 ++++-
>>   git-p4.py                  | 30 +++++++++++++++++++-----------
>>   3 files changed, 31 insertions(+), 14 deletions(-)
> Nicely done.  If your strategy is to "add a feature and use it in
> the same patch as the feature is added", which is what is done for
> the new "no-verify" feature that is applied to existing p4-pre-submit
> hook, then the code that runs p4-pre-submit in the original should
> be changed to use run_git_hook() in the previous step, which added
> the new run_git_hook() feature.
Thank you and and I'll resubmit the commits with these additional
suggestions.
>
> I see new print() that is not protected with "if verbose:"; is it
> debugging cruft added during development, or is it a useful addition
> for end-users to see under --verbose mode?  I suspect it is the
> latter.
The print statement has been changed to:
print("Patch succeesed this time with RCS keywords cleaned")
and will be submitted as a separate commit so that it can be discussed
on its own. However, the rationale for it is that the current flow
reports to the user that the patch has failed and that it will attempt
to re-run the patch after cleaning up the RCS keywords. Since the
program told the user that it failed, I felt they should also be told
of the success at the same level of verbosity.
>
> Thanks.
>
>> diff --git a/Documentation/git-p4.txt b/Documentation/git-p4.txt
>> index 3494a1db3e..362b50eb21 100644
>> --- a/Documentation/git-p4.txt
>> +++ b/Documentation/git-p4.txt
>> @@ -374,14 +374,20 @@ These options can be used to modify 'git p4 submit' behavior.
>>       been submitted. Implies --disable-rebase. Can also be set with
>>       git-p4.disableP4Sync. Sync with origin/master still goes ahead if possible.
>>   
>> -Hook for submit
>> -~~~~~~~~~~~~~~~
>> +Hooks for submit
>> +----------------
>> +
>> +p4-pre-submit
>> +~~~~~~~~~~~~~
>> +
>>   The `p4-pre-submit` hook is executed if it exists and is executable.
>>   The hook takes no parameters and nothing from standard input. Exiting with
>>   non-zero status from this script prevents `git-p4 submit` from launching.
>> +It can be bypassed with the `--no-verify` command line option.
>>   
>>   One usage scenario is to run unit tests in the hook.
>>   
>> +
>>   Rebase options
>>   ~~~~~~~~~~~~~~
>>   These options can be used to modify 'git p4 rebase' behavior.
>> diff --git a/Documentation/githooks.txt b/Documentation/githooks.txt
>> index 50365f2914..8cf6b08b55 100644
>> --- a/Documentation/githooks.txt
>> +++ b/Documentation/githooks.txt
>> @@ -520,7 +520,10 @@ p4-pre-submit
>>   
>>   This hook is invoked by `git-p4 submit`. It takes no parameters and nothing
>>   from standard input. Exiting with non-zero status from this script prevent
>> -`git-p4 submit` from launching. Run `git-p4 submit --help` for details.
>> +`git-p4 submit` from launching. It can be bypassed with the `--no-verify`
>> +command line option. Run `git-p4 submit --help` for details.
>> +
>> +
>>   
>>   post-index-change
>>   ~~~~~~~~~~~~~~~~~
>> diff --git a/git-p4.py b/git-p4.py
>> index d4c39f112b..b377484464 100755
>> --- a/git-p4.py
>> +++ b/git-p4.py
>> @@ -1583,13 +1583,17 @@ def __init__(self):
>>                                        "work from a local git branch that is not master"),
>>                   optparse.make_option("--disable-p4sync", dest="disable_p4sync", action="store_true",
>>                                        help="Skip Perforce sync of p4/master after submit or shelve"),
>> +                optparse.make_option("--no-verify", dest="no_verify", action="store_true",
>> +                                     help="Bypass p4-pre-submit"),
>>           ]
>>           self.description = """Submit changes from git to the perforce depot.\n
>> -    The `p4-pre-submit` hook is executed if it exists and is executable.
>> -    The hook takes no parameters and nothing from standard input. Exiting with
>> -    non-zero status from this script prevents `git-p4 submit` from launching.
>> +    The `p4-pre-submit` hook is executed if it exists and is executable. It
>> +    can be bypassed with the `--no-verify` command line option. The hook takes
>> +    no parameters and nothing from standard input. Exiting with a non-zero status
>> +    from this script prevents `git-p4 submit` from launching.
>>   
>> -    One usage scenario is to run unit tests in the hook."""
>> +    One usage scenario is to run unit tests in the hook.
>> +    """
>>   
>>           self.usage += " [name of git branch to submit into perforce depot]"
>>           self.origin = ""
>> @@ -1607,6 +1611,7 @@ def __init__(self):
>>           self.exportLabels = False
>>           self.p4HasMoveCommand = p4_has_move_command()
>>           self.branch = None
>> +        self.no_verify = False
>>   
>>           if gitConfig('git-p4.largeFileSystem'):
>>               die("Large file system not supported for git-p4 submit command. Please remove it from config.")
>> @@ -1993,6 +1998,9 @@ def applyCommit(self, id):
>>           applyPatchCmd = patchcmd + "--check --apply -"
>>           patch_succeeded = True
>>   
>> +        if verbose:
>> +            print("TryPatch: %s" % tryPatchCmd)
>> +
>>           if os.system(tryPatchCmd) != 0:
>>               fixed_rcs_keywords = False
>>               patch_succeeded = False
>> @@ -2032,6 +2040,7 @@ def applyCommit(self, id):
>>                   print("Retrying the patch with RCS keywords cleaned up")
>>                   if os.system(tryPatchCmd) == 0:
>>                       patch_succeeded = True
>> +                    print("Patch succeesed this time")
>>   
>>           if not patch_succeeded:
>>               for f in editedFiles:
>> @@ -2400,13 +2409,12 @@ def run(self, args):
>>               sys.exit("number of commits (%d) must match number of shelved changelist (%d)" %
>>                        (len(commits), num_shelves))
>>   
>> -        hooks_path = gitConfig("core.hooksPath")
>> -        if len(hooks_path) <= 0:
>> -            hooks_path = os.path.join(os.environ.get("GIT_DIR", ".git"), "hooks")
>> -
>> -        hook_file = os.path.join(hooks_path, "p4-pre-submit")
>> -        if os.path.isfile(hook_file) and os.access(hook_file, os.X_OK) and subprocess.call([hook_file]) != 0:
>> -            sys.exit(1)
>> +        if not self.no_verify:
>> +            if not run_git_hook("p4-pre-submit"):
>> +                print("\nThe p4-pre-submit hook failed, aborting the submit.\n\nYou can skip " \
>> +                    "this pre-submission check by adding\nthe command line option '--no-verify', " \
>> +                    "however,\nthis will also skip the p4-changelist hook as well.")
>> +                sys.exit(1)
>>   
>>           #
>>           # Apply the commits, one at a time.  On failure, ask if should

  reply	other threads:[~2020-02-10 16:21 UTC|newest]

Thread overview: 57+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-01-20 21:17 [PATCH] git-p4: Add hook p4-pre-pedit-changelist Ben Keene via GitGitGadget
2020-01-21 23:05 ` Junio C Hamano
2020-01-29 10:13   ` Luke Diamand
2020-01-29 19:05     ` Junio C Hamano
2020-01-29 21:23       ` Luke Diamand
2020-01-30  1:37       ` Junio C Hamano
2020-01-30 14:20         ` Ben Keene
2020-01-30 18:39           ` Junio C Hamano
2020-01-30  1:51 ` Bryan Turner
2020-01-30 13:45   ` Ben Keene
2020-01-31 21:58 ` [PATCH v2 0/4] git-p4: add hook p4-pre-edit-changelist Ben Keene via GitGitGadget
2020-01-31 21:58   ` [PATCH v2 1/4] git-p4: rewrite prompt to be Windows compatible Ben Keene via GitGitGadget
2020-01-31 21:58   ` [PATCH v2 2/4] git-p4: create new method gitRunHook Ben Keene via GitGitGadget
2020-02-04 20:40     ` Junio C Hamano
2020-02-05 19:56       ` Ben Keene
2020-02-05 21:42         ` Junio C Hamano
2020-02-06 14:00           ` Ben Keene
2020-02-06 18:26             ` Junio C Hamano
2020-01-31 21:58   ` [PATCH v2 3/4] git-p4: add hook p4-pre-edit-changelist Ben Keene via GitGitGadget
2020-01-31 21:58   ` [PATCH v2 4/4] git-p4: add p4 submit hooks Ben Keene via GitGitGadget
2020-02-04 20:50     ` Junio C Hamano
2020-02-06 15:15   ` [PATCH v3 0/5] git-p4: add hook p4-pre-edit-changelist Ben Keene via GitGitGadget
2020-02-06 15:15     ` [PATCH v3 1/5] git-p4: rewrite prompt to be Windows compatible Ben Keene via GitGitGadget
2020-02-06 19:28       ` Junio C Hamano
2020-02-10 15:49         ` Ben Keene
2020-02-06 15:15     ` [PATCH v3 2/5] git-p4: create new function run_git_hook Ben Keene via GitGitGadget
2020-02-06 19:42       ` Junio C Hamano
2020-02-10 19:03         ` Ben Keene
2020-02-06 15:15     ` [PATCH v3 3/5] git-p4: add --no-verify option Ben Keene via GitGitGadget
2020-02-06 19:42       ` Junio C Hamano
2020-02-10 16:21         ` Ben Keene [this message]
2020-02-06 15:15     ` [PATCH v3 4/5] git-p4: restructure code in submit Ben Keene via GitGitGadget
2020-02-06 15:15     ` [PATCH v3 5/5] git-p4: add p4 submit hooks Ben Keene via GitGitGadget
2020-02-10 22:06     ` [PATCH v4 0/6] git-p4: add hooks for p4-changelist Ben Keene via GitGitGadget
2020-02-10 22:06       ` [PATCH v4 1/6] git-p4: rewrite prompt to be Windows compatible Ben Keene via GitGitGadget
2020-02-10 22:06       ` [PATCH v4 2/6] git-p4: create new function run_git_hook Ben Keene via GitGitGadget
2020-02-10 22:24         ` Junio C Hamano
2020-02-10 22:06       ` [PATCH v4 3/6] git-p4: add --no-verify option Ben Keene via GitGitGadget
2020-02-10 22:06       ` [PATCH v4 4/6] git-p4: restructure code in submit Ben Keene via GitGitGadget
2020-02-10 22:06       ` [PATCH v4 5/6] git-p4: add p4 submit hooks Ben Keene via GitGitGadget
2020-02-10 22:06       ` [PATCH v4 6/6] git-4: add RCS keyword status message Ben Keene via GitGitGadget
2020-02-11 18:57       ` [PATCH v5 0/7] git-p4: add hooks for p4-changelist Ben Keene via GitGitGadget
2020-02-11 18:57         ` [PATCH v5 1/7] git-p4: rewrite prompt to be Windows compatible Ben Keene via GitGitGadget
2020-02-11 18:57         ` [PATCH v5 2/7] git-p4: create new function run_git_hook Ben Keene via GitGitGadget
2020-02-11 18:58         ` [PATCH v5 3/7] git-p4: add p4-pre-submit exit text Ben Keene via GitGitGadget
2020-02-11 18:58         ` [PATCH v5 4/7] git-p4: add --no-verify option Ben Keene via GitGitGadget
2020-02-11 18:58         ` [PATCH v5 5/7] git-p4: restructure code in submit Ben Keene via GitGitGadget
2020-02-11 18:58         ` [PATCH v5 6/7] git-p4: add p4 submit hooks Ben Keene via GitGitGadget
2020-02-11 18:58         ` [PATCH v5 7/7] git-p4: add RCS keyword status message Ben Keene via GitGitGadget
2020-02-14 14:44         ` [PATCH v6 0/7] git-p4: add hooks for p4-changelist Ben Keene via GitGitGadget
2020-02-14 14:44           ` [PATCH v6 1/7] git-p4: rewrite prompt to be Windows compatible Ben Keene via GitGitGadget
2020-02-14 14:44           ` [PATCH v6 2/7] git-p4: create new function run_git_hook Ben Keene via GitGitGadget
2020-02-14 14:44           ` [PATCH v6 3/7] git-p4: add p4-pre-submit exit text Ben Keene via GitGitGadget
2020-02-14 14:44           ` [PATCH v6 4/7] git-p4: add --no-verify option Ben Keene via GitGitGadget
2020-02-14 14:44           ` [PATCH v6 5/7] git-p4: restructure code in submit Ben Keene via GitGitGadget
2020-02-14 14:44           ` [PATCH v6 6/7] git-p4: add p4 submit hooks Ben Keene via GitGitGadget
2020-02-14 14:44           ` [PATCH v6 7/7] git-p4: add RCS keyword status message Ben Keene via GitGitGadget

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: http://vger.kernel.org/majordomo-info.html

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=6706dad2-125b-89b4-ff2f-02a166bd4365@gmail.com \
    --to=seraphire@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=gitgitgadget@gmail.com \
    --cc=gitster@pobox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).