Added SVN support for syncing next to CVS support.
authorFabian Groffen <grobian@gentoo.org>
Sun, 12 Nov 2006 08:33:40 +0000 (08:33 -0000)
committerFabian Groffen <grobian@gentoo.org>
Sun, 12 Nov 2006 08:33:40 +0000 (08:33 -0000)
svn path=/main/branches/prefix/; revision=5015

bin/emerge

index ee3dab027887986977c225ade5a778b4f93bef25..0a2bb3a9fe1256bb7a97c4075215226e66e74742 100755 (executable)
@@ -3435,6 +3435,38 @@ def action_sync(settings, trees, mtimedb, myopts, myaction):
                        if retval != os.EX_OK:
                                sys.exit(retval)
                dosyncuri = syncuri
+       elif syncuri[:11]=="svn+http://":
+               if not os.path.exists(portage_const.EPREFIX+"/usr/bin/svn"):
+                       print "!!! svn does not exist, so SVN support is disabled."
+                       print "!!! Type \"emerge dev-util/subversion\" to enable SVN support."
+                       sys.exit(1)
+               svndir=os.path.dirname(myportdir)
+               if not os.path.exists(myportdir+"/.svn"):
+                       #initial checkout
+                       print ">>> Starting initial svn checkout with "+syncuri+"..."
+                       if os.path.exists(svndir+"/prefix"):
+                               print "!!! existing",svndir+"/prefix directory; exiting."
+                               sys.exit(1)
+                       try:
+                               os.rmdir(myportdir)
+                       except OSError, e:
+                               if e.errno != errno.ENOENT:
+                                       sys.stderr.write(
+                                               "!!! existing '%s' directory; exiting.\n" % myportdir)
+                                       sys.exit(1)
+                               del e
+                       if portage.spawn("cd "+svndir+"; svn checkout "+syncuri,settings,free=1):
+                               print "!!! svn checkout error; exiting."
+                               sys.exit(1)
+                       os.rename(os.path.join(svndir, "prefix"), myportdir)
+               else:
+                       #svn update
+                       print ">>> Starting svn update..."
+                       retval = portage.spawn("cd '%s'; svn update" % myportdir, \
+                               settings, free=1)
+                       if retval != os.EX_OK:
+                               sys.exit(retval)
+               dosyncuri = syncuri
        else:
                print "!!! rsync setting: ",syncuri,"not recognized; exiting."
                sys.exit(1)