add get_git_svn_revision and fall back to it
Now gramps developers using git need not be ashamed of their ``gramps --version'' output :) svn: r23118
This commit is contained in:
parent
7518fc5d2a
commit
5a7e4bd2c6
@ -22,6 +22,7 @@
|
||||
|
||||
import sys
|
||||
import subprocess
|
||||
import re
|
||||
|
||||
if sys.version_info[0] < 3:
|
||||
cuni = unicode
|
||||
@ -30,21 +31,32 @@ else:
|
||||
return s.decode("utf-8", errors = 'replace')
|
||||
cuni = to_utf8
|
||||
|
||||
def get_svn_revision(path=""):
|
||||
def _get_svn_revision(path, command, stdout_to_rev):
|
||||
stdout = ""
|
||||
try:
|
||||
p = subprocess.Popen("svnversion -n \"%s\"" % path, shell=True,
|
||||
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||
p = subprocess.Popen(
|
||||
"{} \"{}\"".format(command, path),
|
||||
shell=True,
|
||||
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||
(stdout, stderr) = p.communicate()
|
||||
except:
|
||||
return "" # subprocess failed
|
||||
# subprocess worked
|
||||
if stdout and len(stdout) > 0: # has output
|
||||
stdout = cuni(stdout) # get a proper string
|
||||
if stdout[0].isdigit():
|
||||
return "-r" + stdout
|
||||
else:
|
||||
return ""
|
||||
rev = stdout_to_rev(stdout)
|
||||
return "-r" + rev if rev else ""
|
||||
else: # no output from svnversion
|
||||
return ""
|
||||
|
||||
def get_svn_revision(path=""):
|
||||
return _get_svn_revision(path, "svnversion -n",
|
||||
lambda stdout: stdout if stdout[0].isdigit() else ""
|
||||
) or get_git_svn_revision(path)
|
||||
|
||||
def get_git_svn_revision(path=""):
|
||||
def stdout_to_rev(stdout):
|
||||
m = re.search("Revision:\s+(\d+)", stdout, re.MULTILINE)
|
||||
return m.group(1) if m else ""
|
||||
|
||||
return _get_svn_revision(path, "git svn info", stdout_to_rev)
|
||||
|
Loading…
Reference in New Issue
Block a user