diff options
author | Per Øyvind Karlsen <proyvind@moondrake.org> | 2016-10-04 04:30:06 +0000 |
---|---|---|
committer | Per Øyvind Karlsen <proyvind@moondrake.org> | 2016-10-04 04:30:06 +0000 |
commit | c02b61213c742df7eae63349d0a807c417adb9af (patch) | |
tree | cb51d67c40e741e53a90681862c80afac83e6194 /MgaRepo/vcsutil.py | |
parent | 14d5c0398fa649f03b6e0f43ab811594890a9a91 (diff) | |
download | mgarepo-c02b61213c742df7eae63349d0a807c417adb9af.tar mgarepo-c02b61213c742df7eae63349d0a807c417adb9af.tar.gz mgarepo-c02b61213c742df7eae63349d0a807c417adb9af.tar.bz2 mgarepo-c02b61213c742df7eae63349d0a807c417adb9af.tar.xz mgarepo-c02b61213c742df7eae63349d0a807c417adb9af.zip |
move detectVCS() to separate module to prevent import order
Diffstat (limited to 'MgaRepo/vcsutil.py')
-rw-r--r-- | MgaRepo/vcsutil.py | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/MgaRepo/vcsutil.py b/MgaRepo/vcsutil.py new file mode 100644 index 0000000..cf0237c --- /dev/null +++ b/MgaRepo/vcsutil.py @@ -0,0 +1,27 @@ +from MgaRepo.git import GIT +from MgaRepo.svn import SVN + +def detectVCS(url): + if ':' in url: + protocol,uri = url.split(":") + if "svn" in protocol: + return SVN(url=url) + elif "git" in protocol: + return GIT(url=url) + elif "http" in protocol: + if uri.endswith(".git"): + return GIT(url=url) + elif "svn" in uri: + return SVN(url=url) + raise Error("Unknown protocol %s for %s" % (protocol, url)) + elif os.path.exists(url) and os.path.isdir(url): + while True: + url = os.path.abspath(url) + for vcs in (SVN, GIT): + vcsdir = os.path.join(url, vcs.vcs_dirname) + if os.path.exists(vcsdir) and os.path.isdir(vcsdir): + return vcs(path=url) + url = os.path.dirname(url) + if url == "/": + break + raise Error("No supported repository found at path: %s" % url) |