mirror of
https://github.com/Mbed-TLS/mbedtls.git
synced 2025-03-29 22:20:30 +00:00
Allow code_style.py to work from a git hook
When running a git hook, git sets certain environment variables (such as GIT_INDEX_FILE) which force git to look at the main repository, overriding other options. This trips up code_style.py whenever it tries to run a git command on the framework submodule. Fix this by explicitly clearing git-related environment-variables before running git commands on the framework. This is recommended by git's documentation[1]: > Environment variables, such as GIT_DIR, GIT_WORK_TREE, etc., are > exported so that Git commands run by the hook can correctly locate > the repository. If your hook needs to invoke Git commands in a > foreign repository or in a different working tree of the same > repository, then it should clear these environment variables so > they do not interfere with Git operations at the foreign location. [1] https://git-scm.com/docs/githooks Signed-off-by: David Horstmann <david.horstmann@arm.com>
This commit is contained in:
parent
c085cc767d
commit
330680e9fe
@ -75,8 +75,25 @@ def get_src_files(since: Optional[str]) -> List[str]:
|
|||||||
output = subprocess.check_output(["git", "ls-files"] + file_patterns,
|
output = subprocess.check_output(["git", "ls-files"] + file_patterns,
|
||||||
universal_newlines=True)
|
universal_newlines=True)
|
||||||
src_files = output.split()
|
src_files = output.split()
|
||||||
|
|
||||||
|
# When this script is called from a git hook, some environment variables
|
||||||
|
# are set by default which force all git commands to use the main repository
|
||||||
|
# (i.e. prevent us from performing commands on the framework repo).
|
||||||
|
# Create an environment without these variables for running commands on the
|
||||||
|
# framework repo.
|
||||||
|
framework_env = os.environ.copy()
|
||||||
|
# Get a list of environment vars that git sets
|
||||||
|
git_env_vars = subprocess.check_output(["git", "rev-parse", "--local-env-vars"],
|
||||||
|
universal_newlines=True)
|
||||||
|
git_env_vars = git_env_vars.split()
|
||||||
|
# Remove the vars from the environment
|
||||||
|
for var in git_env_vars:
|
||||||
|
framework_env.pop(var, None)
|
||||||
|
|
||||||
output = subprocess.check_output(["git", "-C", "framework", "ls-files"]
|
output = subprocess.check_output(["git", "-C", "framework", "ls-files"]
|
||||||
+ file_patterns, universal_newlines=True)
|
+ file_patterns,
|
||||||
|
universal_newlines=True,
|
||||||
|
env=framework_env)
|
||||||
framework_src_files = output.split()
|
framework_src_files = output.split()
|
||||||
|
|
||||||
if since:
|
if since:
|
||||||
@ -89,7 +106,8 @@ def get_src_files(since: Optional[str]) -> List[str]:
|
|||||||
# ... the framework submodule
|
# ... the framework submodule
|
||||||
cmd = ["git", "-C", "framework", "log", since + "..HEAD",
|
cmd = ["git", "-C", "framework", "log", since + "..HEAD",
|
||||||
"--name-only", "--pretty=", "--"] + framework_src_files
|
"--name-only", "--pretty=", "--"] + framework_src_files
|
||||||
output = subprocess.check_output(cmd, universal_newlines=True)
|
output = subprocess.check_output(cmd, universal_newlines=True,
|
||||||
|
env=framework_env)
|
||||||
committed_changed_files += ["framework/" + s for s in output.split()]
|
committed_changed_files += ["framework/" + s for s in output.split()]
|
||||||
|
|
||||||
# and also get all files with uncommitted changes in ...
|
# and also get all files with uncommitted changes in ...
|
||||||
@ -100,7 +118,8 @@ def get_src_files(since: Optional[str]) -> List[str]:
|
|||||||
# ... the framework submodule
|
# ... the framework submodule
|
||||||
cmd = ["git", "-C", "framework", "diff", "--name-only", "--"] + \
|
cmd = ["git", "-C", "framework", "diff", "--name-only", "--"] + \
|
||||||
framework_src_files
|
framework_src_files
|
||||||
output = subprocess.check_output(cmd, universal_newlines=True)
|
output = subprocess.check_output(cmd, universal_newlines=True,
|
||||||
|
env=framework_env)
|
||||||
uncommitted_changed_files += ["framework/" + s for s in output.split()]
|
uncommitted_changed_files += ["framework/" + s for s in output.split()]
|
||||||
|
|
||||||
src_files = committed_changed_files + uncommitted_changed_files
|
src_files = committed_changed_files + uncommitted_changed_files
|
||||||
|
Loading…
x
Reference in New Issue
Block a user