def checkIsSVNRepository(env=None, path=None): if env is None: env = os.environ.copy() env["LC_MESSAGES"] = "C" args = ["svn", "info"] if path is not None: args.append(path) svninfo = Popen(args, stdout=PIPE, env=env) svninfo.wait() return not bool(svninfo.returncode)
def executeCommand(arg, shell=False): env = os.environ.copy() env["LC_MESSAGES"] = "C" execution = Popen(arg, stdout=PIPE, env=env, shell=shell) execution.wait() if execution.returncode: return None resp = "" for L in execution.stdout: L = L.strip() resp += L + "\n" return resp.strip()
def getRelativePath(): # Usa svn info per estrarre il path relativo alla root del repositorio in # cui si trova il programma. env = os.environ.copy() env["LC_MESSAGES"] = "C" info = {} # Prova a cercare le informazioni con svn, se non è un repository svn prova # con git svn if not checkIsSVNRepository(env): shell = sys.platform.startswith("win") svninfo = Popen(["git", "svn", "info"], stdout=PIPE, env=env, shell=shell) else: svninfo = Popen(["svn", "info"], stdout=PIPE, env=env) svninfo.wait() for L in svninfo.stdout: L = L.strip() if L: k, v = L.split(": ", 1) info[k] = v assert info["URL"].startswith(info["Repository Root"]) return info["URL"][len(info["Repository Root"]) :]