From a112e209cc07664d6b1468eb6e2edf77531bd35e Mon Sep 17 00:00:00 2001 From: Peter Collingbourne Date: Thu, 10 Jan 2019 21:57:07 +0000 Subject: [PATCH] gn build: Use "git rev-parse --git-dir" to discover the path to the .git directory. This makes it compatible with worktrees. Differential Revision: https://reviews.llvm.org/D56422 llvm-svn: 350897 --- utils/gn/build/write_vcsrevision.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/utils/gn/build/write_vcsrevision.py b/utils/gn/build/write_vcsrevision.py index b9b3755526c..974004df915 100755 --- a/utils/gn/build/write_vcsrevision.py +++ b/utils/gn/build/write_vcsrevision.py @@ -12,7 +12,6 @@ import sys THIS_DIR = os.path.abspath(os.path.dirname(__file__)) LLVM_DIR = os.path.dirname(os.path.dirname(os.path.dirname(THIS_DIR))) -MONO_DIR = os.path.dirname(LLVM_DIR) def which(program): @@ -36,21 +35,23 @@ def main(): if os.path.isdir(os.path.join(LLVM_DIR, '.svn')): print('SVN support not implemented', file=sys.stderr) return 1 - if os.path.isdir(os.path.join(LLVM_DIR, '.git')): + if os.path.exists(os.path.join(LLVM_DIR, '.git')): print('non-mono-repo git support not implemented', file=sys.stderr) return 1 - git_dir = os.path.join(MONO_DIR, '.git') - if not os.path.isdir(git_dir): - print('.git dir not found at "%s"' % git_dir, file=sys.stderr) - return 1 - git, use_shell = which('git'), False if not git: git = which('git.exe') if not git: git = which('git.bat') use_shell = True + + git_dir = subprocess.check_output([git, 'rev-parse', '--git-dir'], + cwd=LLVM_DIR, shell=use_shell).strip() + if not os.path.isdir(git_dir): + print('.git dir not found at "%s"' % git_dir, file=sys.stderr) + return 1 + rev = subprocess.check_output([git, 'rev-parse', '--short', 'HEAD'], cwd=git_dir, shell=use_shell).decode().strip() # FIXME: add pizzas such as the svn revision read off a git note?