commit:     ef6f5893a333684f3b73e04e486b02b60559c512
Author:     Devan Franchini <twitch153 <AT> gentoo <DOT> org>
AuthorDate: Mon May 26 22:22:33 2014 +0000
Commit:     Brian Dolbec <brian.dolbec <AT> gmail <DOT> com>
CommitDate: Thu Jun 12 21:11:49 2014 +0000
URL:        
http://git.overlays.gentoo.org/gitweb/?p=proj/layman.git;a=commit;h=ef6f5893

svn.py: Adds update() function

Adds _fix_svn_source() function to correct the source url in
order to run the svn switch --relocate command.

---
 layman/overlays/svn.py | 37 ++++++++++++++++++++++++++++++++-----
 1 file changed, 32 insertions(+), 5 deletions(-)

diff --git a/layman/overlays/svn.py b/layman/overlays/svn.py
index 0244dd4..f494eba 100644
--- a/layman/overlays/svn.py
+++ b/layman/overlays/svn.py
@@ -53,6 +53,18 @@ class SvnOverlay(OverlaySource):
             parent, config, _location, ignore)
         self.subpath = None
 
+    def _fix_svn_source(self, source):
+    '''
+    Adds @ to all sources that don't already include it.
+
+    @params source: source URL, string.
+    '''
+        if source.endswith("/"):
+            source = source + '@'
+        else:
+            source = source +'/@'
+        return source
+
     def add(self, base):
         '''Add overlay.'''
 
@@ -70,11 +82,7 @@ class SvnOverlay(OverlaySource):
         if len(cfg_opts):
             args.append(cfg_opts)
 
-        if self.src.endswith("/"):
-            src = self.src + '@'
-        else:
-            src = self.src + '/@'
-
+        src = self._fix_svn_source(self.src)
         args.append(src)
         args.append(self.target)
 
@@ -82,6 +90,25 @@ class SvnOverlay(OverlaySource):
             self.run_command(self.command(), args, cmd=self.type),
             cwd=self.target)
 
+    def update(self, base, src):
+        '''
+        Update overlay src-url
+        
+        @params base: base location where all overlays are installed.
+        @params src: source URL.
+        '''
+
+        self.output.debug("svn.update(); starting...%s" % self.parent.name, 6)
+        target = path([base, self.parent.name])
+
+        # svn switch --relocate <oldurl> <newurl>
+        args = ['switch', '--relocate', self._fix_svn_source(self.src), 
self._fix_svn_source(src)]
+
+        return self.postsync(
+             self.run_command(self.command(), args, cmd=self.type),
+             cwd=target)
+
+
     def sync(self, base):
         '''Sync overlay.'''
 

Reply via email to