mirror of
https://github.com/pre-commit/pre-commit-hooks.git
synced 2026-04-06 03:56:54 +00:00
define more branch protected
This commit is contained in:
parent
5bf6c09bfa
commit
0e20aa09e2
2 changed files with 16 additions and 10 deletions
|
|
@ -6,20 +6,26 @@ import sys
|
||||||
from pre_commit_hooks.util import cmd_output
|
from pre_commit_hooks.util import cmd_output
|
||||||
|
|
||||||
|
|
||||||
def is_on_branch(protected):
|
def is_on_branch(protected=()):
|
||||||
branch = cmd_output('git', 'symbolic-ref', 'HEAD')
|
branch = cmd_output('git', 'symbolic-ref', 'HEAD')
|
||||||
chunks = branch.strip().split('/')
|
chunks = branch.strip().split('/')
|
||||||
return '/'.join(chunks[2:]) == protected
|
position = '/'.join(chunks[2:])
|
||||||
|
return position in (protected or ('master',))
|
||||||
|
|
||||||
|
|
||||||
def main(argv=[]):
|
def main(argv=None):
|
||||||
parser = argparse.ArgumentParser()
|
parser = argparse.ArgumentParser()
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
'-b', '--branch', default='master', help='branch to disallow commits to')
|
'-b',
|
||||||
|
'--branch',
|
||||||
|
action='append',
|
||||||
|
dest='branches',
|
||||||
|
help='branch to disallow commits to'
|
||||||
|
)
|
||||||
args = parser.parse_args(argv)
|
args = parser.parse_args(argv)
|
||||||
|
|
||||||
return int(is_on_branch(args.branch))
|
return int(is_on_branch(args.branches))
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
sys.exit(main(sys.argv))
|
sys.exit(main(sys.argv[1:]))
|
||||||
|
|
|
||||||
|
|
@ -9,24 +9,24 @@ from pre_commit_hooks.util import cmd_output
|
||||||
def test_other_branch(temp_git_dir):
|
def test_other_branch(temp_git_dir):
|
||||||
with temp_git_dir.as_cwd():
|
with temp_git_dir.as_cwd():
|
||||||
cmd_output('git', 'checkout', '-b', 'anotherbranch')
|
cmd_output('git', 'checkout', '-b', 'anotherbranch')
|
||||||
assert is_on_branch('master') is False
|
assert is_on_branch(('master', )) is False
|
||||||
|
|
||||||
|
|
||||||
def test_multi_branch(temp_git_dir):
|
def test_multi_branch(temp_git_dir):
|
||||||
with temp_git_dir.as_cwd():
|
with temp_git_dir.as_cwd():
|
||||||
cmd_output('git', 'checkout', '-b', 'another/branch')
|
cmd_output('git', 'checkout', '-b', 'another/branch')
|
||||||
assert is_on_branch('master') is False
|
assert is_on_branch(('master', )) is False
|
||||||
|
|
||||||
|
|
||||||
def test_multi_branch_fail(temp_git_dir):
|
def test_multi_branch_fail(temp_git_dir):
|
||||||
with temp_git_dir.as_cwd():
|
with temp_git_dir.as_cwd():
|
||||||
cmd_output('git', 'checkout', '-b', 'another/branch')
|
cmd_output('git', 'checkout', '-b', 'another/branch')
|
||||||
assert is_on_branch('another/branch') is True
|
assert is_on_branch(('another/branch', )) is True
|
||||||
|
|
||||||
|
|
||||||
def test_master_branch(temp_git_dir):
|
def test_master_branch(temp_git_dir):
|
||||||
with temp_git_dir.as_cwd():
|
with temp_git_dir.as_cwd():
|
||||||
assert is_on_branch('master') is True
|
assert is_on_branch(('master', )) is True
|
||||||
|
|
||||||
|
|
||||||
def test_main_b_call(temp_git_dir):
|
def test_main_b_call(temp_git_dir):
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue