Explicitly using "git.cmd" on Windows doesn't always work; use shell=True on Windows instead.

Signed-off-by: Daira Hopwood <daira@jacaranda.org>
This commit is contained in:
Daira Hopwood
2015-02-17 19:10:54 +00:00
parent 2d9af506f1
commit 19fffc059f

View File

@ -262,9 +262,9 @@ __version__ = verstr
''' '''
def run_command(args, cwd=None): def run_command(args, cwd=None):
use_shell = sys.platform == "win32"
try: try:
# remember shell=False, so use git.cmd on windows, not just git p = subprocess.Popen(args, stdout=subprocess.PIPE, cwd=cwd, shell=use_shell)
p = subprocess.Popen(args, stdout=subprocess.PIPE, cwd=cwd)
except EnvironmentError as e: # if this gives a SyntaxError, note that Tahoe-LAFS requires Python 2.6+ except EnvironmentError as e: # if this gives a SyntaxError, note that Tahoe-LAFS requires Python 2.6+
print("Warning: unable to run %r." % (" ".join(args),)) print("Warning: unable to run %r." % (" ".join(args),))
print(e) print(e)
@ -303,10 +303,7 @@ def versions_from_git(tag_prefix):
print("Warning: unable to find version because we could not obtain the source directory.") print("Warning: unable to find version because we could not obtain the source directory.")
print(e) print(e)
return {} return {}
GIT = "git" stdout = run_command(["git", "describe", "--tags", "--dirty", "--always"],
if sys.platform == "win32":
GIT = "git.cmd"
stdout = run_command([GIT, "describe", "--tags", "--dirty", "--always"],
cwd=source_dir) cwd=source_dir)
if stdout is None: if stdout is None:
# run_command already complained. # run_command already complained.
@ -321,7 +318,7 @@ def versions_from_git(tag_prefix):
else: else:
normalized_version = "%s.post%s" % (pieces[0], pieces[1]) normalized_version = "%s.post%s" % (pieces[0], pieces[1])
stdout = run_command([GIT, "rev-parse", "HEAD"], cwd=source_dir) stdout = run_command(["git", "rev-parse", "HEAD"], cwd=source_dir)
if stdout is None: if stdout is None:
# run_command already complained. # run_command already complained.
return {} return {}
@ -331,7 +328,7 @@ def versions_from_git(tag_prefix):
normalized_version += ".dev0" normalized_version += ".dev0"
# Thanks to Jistanidiot at <http://stackoverflow.com/questions/6245570/get-current-branch-name>. # Thanks to Jistanidiot at <http://stackoverflow.com/questions/6245570/get-current-branch-name>.
stdout = run_command([GIT, "rev-parse", "--abbrev-ref", "HEAD"], cwd=source_dir) stdout = run_command(["git", "rev-parse", "--abbrev-ref", "HEAD"], cwd=source_dir)
branch = (stdout or "unknown").strip() branch = (stdout or "unknown").strip()
return {"version": version, "normalized": normalized_version, "full": full, "branch": branch} return {"version": version, "normalized": normalized_version, "full": full, "branch": branch}