Exemple #1
0
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)
Exemple #2
0
    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()
Exemple #3
0
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"]) :]