aboutsummaryrefslogtreecommitdiffstats
path: root/RepSys/mirror.py
diff options
context:
space:
mode:
authorBogdano Arendartchuk <bogdano@mandriva.org>2007-05-02 19:41:47 +0000
committerBogdano Arendartchuk <bogdano@mandriva.org>2007-05-02 19:41:47 +0000
commit2e0c7def5895fea29177718abb690b75bc21695e (patch)
treeb07f8b5bb67d29037656ed7a2341b202dfcfb0a3 /RepSys/mirror.py
parenta0db56024d803cbe112ce31d8de2aa2701a5d79c (diff)
downloadmgarepo-2e0c7def5895fea29177718abb690b75bc21695e.tar
mgarepo-2e0c7def5895fea29177718abb690b75bc21695e.tar.gz
mgarepo-2e0c7def5895fea29177718abb690b75bc21695e.tar.bz2
mgarepo-2e0c7def5895fea29177718abb690b75bc21695e.tar.xz
mgarepo-2e0c7def5895fea29177718abb690b75bc21695e.zip
Added initial support to mirrors, as requested by mrl.
It was added an option "mirror" to repsys.conf, that will contain an URL to the mirror repository. Also added the subcommand "ci", which will relocate one working copy to the master repository before effectively commiting.
Diffstat (limited to 'RepSys/mirror.py')
-rw-r--r--RepSys/mirror.py42
1 files changed, 42 insertions, 0 deletions
diff --git a/RepSys/mirror.py b/RepSys/mirror.py
new file mode 100644
index 0000000..a24f594
--- /dev/null
+++ b/RepSys/mirror.py
@@ -0,0 +1,42 @@
+import os
+import urlparse
+
+from RepSys import config
+from RepSys.svn import SVN
+
+def relocate_path(oldparent, newparent, url):
+ subpath = url[len(oldparent)-1:]
+ newurl = newparent + "/" + subpath # subpath usually gets / at begining
+ return newurl
+
+def enabled():
+ mirror = config.get("global", "mirror")
+ default_parent = config.get("global", "default_parent")
+ return (mirror is not None and
+ default_parent is not None)
+
+def mirror_relocate(oldparent, newparent, url, wcpath):
+ svn = SVN(noauth=True)
+ newurl = relocate_path(oldparent, newparent, url)
+ svn.switch(newurl, url, path=wcpath, relocate="True")
+ return newurl
+
+def switchto_parent(svn, url, path):
+ """Relocates the working copy to default_parent"""
+ mirror = config.get("global", "mirror")
+ default_parent = config.get("global", "default_parent")
+ newurl = mirror_relocate(mirror, default_parent, url, path)
+ return newurl
+
+def switchto_mirror(svn, url, path):
+ mirror = config.get("global", "mirror")
+ default_parent = config.get("global", "default_parent")
+ newurl = mirror_relocate(default_parent, mirror, url, path)
+ return newurl
+
+def checkout_url(url):
+ mirror = config.get("global", "mirror")
+ default_parent = config.get("global", "default_parent")
+ if mirror is not None and default_parent is not None:
+ return relocate_path(default_parent, mirror, url)
+ return url