Skip to content

Commit

Permalink
Merge pull request #1947 from FlorentClarret/pre_push_local_branch
Browse files Browse the repository at this point in the history
Expose local branch ref as an environment variable
  • Loading branch information
asottile committed Jun 19, 2021
2 parents 8037b45 + 584fd58 commit ba5e6eb
Show file tree
Hide file tree
Showing 5 changed files with 17 additions and 2 deletions.
7 changes: 6 additions & 1 deletion pre_commit/commands/hook_impl.py
Expand Up @@ -70,6 +70,7 @@ def _ns(
*,
all_files: bool = False,
remote_branch: Optional[str] = None,
local_branch: Optional[str] = None,
from_ref: Optional[str] = None,
to_ref: Optional[str] = None,
remote_name: Optional[str] = None,
Expand All @@ -82,6 +83,7 @@ def _ns(
color=color,
hook_stage=hook_type.replace('pre-', ''),
remote_branch=remote_branch,
local_branch=local_branch,
from_ref=from_ref,
to_ref=to_ref,
remote_name=remote_name,
Expand Down Expand Up @@ -110,14 +112,15 @@ def _pre_push_ns(
remote_url = args[1]

for line in stdin.decode().splitlines():
_, local_sha, remote_branch, remote_sha = line.split()
local_branch, local_sha, remote_branch, remote_sha = line.split()
if local_sha == Z40:
continue
elif remote_sha != Z40 and _rev_exists(remote_sha):
return _ns(
'pre-push', color,
from_ref=remote_sha, to_ref=local_sha,
remote_branch=remote_branch,
local_branch=local_branch,
remote_name=remote_name, remote_url=remote_url,
)
else:
Expand All @@ -139,6 +142,7 @@ def _pre_push_ns(
all_files=True,
remote_name=remote_name, remote_url=remote_url,
remote_branch=remote_branch,
local_branch=local_branch,
)
else:
rev_cmd = ('git', 'rev-parse', f'{first_ancestor}^')
Expand All @@ -148,6 +152,7 @@ def _pre_push_ns(
from_ref=source, to_ref=local_sha,
remote_name=remote_name, remote_url=remote_url,
remote_branch=remote_branch,
local_branch=local_branch,
)

# nothing to push
Expand Down
6 changes: 5 additions & 1 deletion pre_commit/commands/run.py
Expand Up @@ -371,7 +371,11 @@ def run(
environ['PRE_COMMIT_FROM_REF'] = args.from_ref
environ['PRE_COMMIT_TO_REF'] = args.to_ref

if args.remote_name and args.remote_url and args.remote_branch:
if (
args.remote_name and args.remote_url and
args.remote_branch and args.local_branch
):
environ['PRE_COMMIT_LOCAL_BRANCH'] = args.local_branch
environ['PRE_COMMIT_REMOTE_BRANCH'] = args.remote_branch
environ['PRE_COMMIT_REMOTE_NAME'] = args.remote_name
environ['PRE_COMMIT_REMOTE_URL'] = args.remote_url
Expand Down
3 changes: 3 additions & 0 deletions pre_commit/main.py
Expand Up @@ -99,6 +99,9 @@ def _add_run_options(parser: argparse.ArgumentParser) -> None:
parser.add_argument(
'--remote-branch', help='Remote branch ref used by `git push`.',
)
parser.add_argument(
'--local-branch', help='Local branch ref used by `git push`.',
)
parser.add_argument(
'--from-ref', '--source', '-s',
help=(
Expand Down
2 changes: 2 additions & 0 deletions testing/util.py
Expand Up @@ -62,6 +62,7 @@ def run_opts(
verbose=False,
hook=None,
remote_branch='',
local_branch='',
from_ref='',
to_ref='',
remote_name='',
Expand All @@ -81,6 +82,7 @@ def run_opts(
verbose=verbose,
hook=hook,
remote_branch=remote_branch,
local_branch=local_branch,
from_ref=from_ref,
to_ref=to_ref,
remote_name=remote_name,
Expand Down
1 change: 1 addition & 0 deletions tests/commands/run_test.py
Expand Up @@ -487,6 +487,7 @@ def test_all_push_options_ok(cap_out, store, repo_with_passing_hook):
args = run_opts(
from_ref='master', to_ref='master',
remote_branch='master',
local_branch='master',
remote_name='origin', remote_url='https://example.com/repo',
)
ret, printed = _do_run(cap_out, store, repo_with_passing_hook, args)
Expand Down

0 comments on commit ba5e6eb

Please sign in to comment.