git-p4: add --no-verify option
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> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
aa8b766a13
commit
4935c458c2
@@ -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
|
been submitted. Implies --disable-rebase. Can also be set with
|
||||||
git-p4.disableP4Sync. Sync with origin/master still goes ahead if possible.
|
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 `p4-pre-submit` hook is executed if it exists and is executable.
|
||||||
The hook takes no parameters and nothing from standard input. Exiting with
|
The hook takes no parameters and nothing from standard input. Exiting with
|
||||||
non-zero status from this script prevents `git-p4 submit` from launching.
|
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.
|
One usage scenario is to run unit tests in the hook.
|
||||||
|
|
||||||
|
|
||||||
Rebase options
|
Rebase options
|
||||||
~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~
|
||||||
These options can be used to modify 'git p4 rebase' behavior.
|
These options can be used to modify 'git p4 rebase' behavior.
|
||||||
|
|||||||
@@ -520,7 +520,10 @@ p4-pre-submit
|
|||||||
|
|
||||||
This hook is invoked by `git-p4 submit`. It takes no parameters and nothing
|
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
|
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
|
post-index-change
|
||||||
~~~~~~~~~~~~~~~~~
|
~~~~~~~~~~~~~~~~~
|
||||||
|
|||||||
32
git-p4.py
32
git-p4.py
@@ -1588,13 +1588,17 @@ class P4Submit(Command, P4UserMap):
|
|||||||
"work from a local git branch that is not master"),
|
"work from a local git branch that is not master"),
|
||||||
optparse.make_option("--disable-p4sync", dest="disable_p4sync", action="store_true",
|
optparse.make_option("--disable-p4sync", dest="disable_p4sync", action="store_true",
|
||||||
help="Skip Perforce sync of p4/master after submit or shelve"),
|
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
|
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 `p4-pre-submit` hook is executed if it exists and is executable. It
|
||||||
The hook takes no parameters and nothing from standard input. Exiting with
|
can be bypassed with the `--no-verify` command line option. The hook takes
|
||||||
non-zero status from this script prevents `git-p4 submit` from launching.
|
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.usage += " [name of git branch to submit into perforce depot]"
|
||||||
self.origin = ""
|
self.origin = ""
|
||||||
@@ -1612,6 +1616,7 @@ class P4Submit(Command, P4UserMap):
|
|||||||
self.exportLabels = False
|
self.exportLabels = False
|
||||||
self.p4HasMoveCommand = p4_has_move_command()
|
self.p4HasMoveCommand = p4_has_move_command()
|
||||||
self.branch = None
|
self.branch = None
|
||||||
|
self.no_verify = False
|
||||||
|
|
||||||
if gitConfig('git-p4.largeFileSystem'):
|
if gitConfig('git-p4.largeFileSystem'):
|
||||||
die("Large file system not supported for git-p4 submit command. Please remove it from config.")
|
die("Large file system not supported for git-p4 submit command. Please remove it from config.")
|
||||||
@@ -2405,16 +2410,17 @@ class P4Submit(Command, P4UserMap):
|
|||||||
sys.exit("number of commits (%d) must match number of shelved changelist (%d)" %
|
sys.exit("number of commits (%d) must match number of shelved changelist (%d)" %
|
||||||
(len(commits), num_shelves))
|
(len(commits), num_shelves))
|
||||||
|
|
||||||
try:
|
if not self.no_verify:
|
||||||
if not run_git_hook("p4-pre-submit"):
|
try:
|
||||||
print("\nThe p4-pre-submit hook failed, aborting the submit.\n\nYou can skip " \
|
if not run_git_hook("p4-pre-submit"):
|
||||||
"this pre-submission check by adding\nthe command line option '--no-verify', " \
|
print("\nThe p4-pre-submit hook failed, aborting the submit.\n\nYou can skip " \
|
||||||
"however,\nthis will also skip the p4-changelist hook as well.")
|
"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)
|
||||||
|
except Exception as e:
|
||||||
|
print("\nThe p4-pre-submit hook failed, aborting the submit.\n\nThe hook failed "\
|
||||||
|
"with the error '{0}'".format(e.message) )
|
||||||
sys.exit(1)
|
sys.exit(1)
|
||||||
except Exception as e:
|
|
||||||
print("\nThe p4-pre-submit hook failed, aborting the submit.\n\nThe hook failed "\
|
|
||||||
"with the error '{0}'".format(e.message) )
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Apply the commits, one at a time. On failure, ask if should
|
# Apply the commits, one at a time. On failure, ask if should
|
||||||
|
|||||||
Reference in New Issue
Block a user