chiark / gitweb /
Drop svn support in favour of git-svn
authorDaniel Martí <mvdan@mvdan.cc>
Fri, 18 Jul 2014 10:39:24 +0000 (12:39 +0200)
committerDaniel Martí <mvdan@mvdan.cc>
Fri, 18 Jul 2014 10:39:24 +0000 (12:39 +0200)
Reasons:

* Cloning a svn repo via svn doesn't fetch the entire history
* Svn checkout is incredibly slow
* Svn doesn't have important features such as a 'clean' command

The only reason why we kept svn was for anonymous logins to repositories. This
is no longer a reason since git-svn also supports them.

fdroidserver/checkupdates.py
fdroidserver/common.py
fdroidserver/lint.py
fdroidserver/scanner.py

index 44919e20cdfabc618f62b6e0c7f7f7625d9adc33..3e22d74d2dce73318168f530fd97e13ab191c48f 100644 (file)
@@ -191,8 +191,6 @@ def check_repomanifest(app, branch=None):
             vcs.gotorevision(branch)
         elif repotype == 'git-svn':
             vcs.gotorevision(branch)
-        elif repotype == 'svn':
-            vcs.gotorevision(None)
         elif repotype == 'hg':
             vcs.gotorevision(branch)
         elif repotype == 'bzr':
@@ -250,8 +248,8 @@ def check_repotrunk(app, branch=None):
             build_dir = os.path.join('build/', app['id'])
             repotype = app['Repo Type']
 
-        if repotype not in ('svn', 'git-svn'):
-            return (None, 'RepoTrunk update mode only makes sense in svn and git-svn repositories')
+        if repotype not in ('git-svn', ):
+            return (None, 'RepoTrunk update mode only makes sense in git-svn repositories')
 
         # Set up vcs interface and make sure we have the latest code...
         vcs = common.getvcs(app['Repo Type'], app['Repo'], build_dir)
index fff2e28ac0e07d4e3be8555c15f079e8ddc15fa3..960d06ca02f970cb08ddb6d7b355893e1530503d 100644 (file)
@@ -353,8 +353,6 @@ def getcvname(app):
 def getvcs(vcstype, remote, local):
     if vcstype == 'git':
         return vcs_git(remote, local)
-    if vcstype == 'svn':
-        return vcs_svn(remote, local)
     if vcstype == 'git-svn':
         return vcs_gitsvn(remote, local)
     if vcstype == 'hg':
@@ -365,6 +363,8 @@ def getvcs(vcstype, remote, local):
         if local != os.path.join('build', 'srclib', remote):
             raise VCSException("Error: srclib paths are hard-coded!")
         return getsrclib(remote, os.path.join('build', 'srclib'), raw=True)
+    if vcstype == 'svn':
+        raise VCSException("Deprecated vcs type 'svn' - please use 'git-svn' instead")
     raise VCSException("Invalid vcs type " + vcstype)
 
 
@@ -379,7 +379,7 @@ class vcs:
 
         # svn, git-svn and bzr may require auth
         self.username = None
-        if self.repotype() in ('svn', 'git-svn', 'bzr'):
+        if self.repotype() in ('git-svn', 'bzr'):
             if '@' in remote:
                 self.username, remote = remote.split('@')
                 if ':' not in self.username:
@@ -713,50 +713,6 @@ class vcs_gitsvn(vcs):
         return p.output.strip()
 
 
-class vcs_svn(vcs):
-
-    def repotype(self):
-        return 'svn'
-
-    def userargs(self):
-        if self.username is None:
-            return ['--non-interactive']
-        return ['--username', self.username,
-                '--password', self.password,
-                '--non-interactive']
-
-    def gotorevisionx(self, rev):
-        if not os.path.exists(self.local):
-            p = SilentPopen(['svn', 'checkout', self.remote, self.local] + self.userargs())
-            if p.returncode != 0:
-                self.clone_failed = True
-                raise VCSException("Svn checkout of '%s' failed" % rev, p.output)
-        else:
-            for svncommand in (
-                    'svn revert -R .',
-                    r"svn status | awk '/\?/ {print $2}' | xargs rm -rf"):
-                p = SilentPopen([svncommand], cwd=self.local, shell=True)
-                if p.returncode != 0:
-                    raise VCSException("Svn reset ({0}) failed in {1}".format(svncommand, self.local), p.output)
-            if not self.refreshed:
-                p = SilentPopen(['svn', 'update'] + self.userargs(), cwd=self.local)
-                if p.returncode != 0:
-                    raise VCSException("Svn update failed", p.output)
-                self.refreshed = True
-
-        revargs = list(['-r', rev] if rev else [])
-        p = SilentPopen(['svn', 'update', '--force'] + revargs + self.userargs(), cwd=self.local)
-        if p.returncode != 0:
-            raise VCSException("Svn update failed", p.output)
-
-    def getref(self):
-        p = SilentPopen(['svn', 'info'], cwd=self.local)
-        for line in p.output.splitlines():
-            if line and line.startswith('Last Changed Rev: '):
-                return line[18:]
-        return None
-
-
 class vcs_hg(vcs):
 
     def repotype(self):
index d265bfb5b47ed176af9aa4a3bbc90bd016d451a1..9656452a3e73c978d1a53a59799e32fd275bc649 100644 (file)
@@ -235,7 +235,7 @@ def main():
                     if ref.startswith(s):
                         warn("Branch '%s' used as commit in srclib '%s'" % (
                             s, srclib))
-            for s in ['git clone', 'svn checkout', 'svn co', 'hg clone']:
+            for s in ['git clone', 'git svn clone', 'svn checkout', 'svn co', 'hg clone']:
                 for flag in ['init', 'prebuild', 'build']:
                     if not build[flag]:
                         continue
index d35f3ae7622da2dbceca53ea11499902cfa404f4..0f755b4b5e2429adc76ed06b733be5f5b07f9ea6 100644 (file)
@@ -40,8 +40,6 @@ def main():
                       help="Spew out even more information than normal")
     parser.add_option("-q", "--quiet", action="store_true", default=False,
                       help="Restrict output to warnings and errors")
-    parser.add_option("--nosvn", action="store_true", default=False,
-                      help="Skip svn repositories - for test purposes, because they are too slow.")
     (options, args) = parser.parse_args()
 
     config = common.read_config(options)
@@ -67,8 +65,6 @@ def main():
         if not app['builds']:
             logging.info("Skipping %s: no builds specified" % app['id'])
             continue
-        elif options.nosvn and app['Repo Type'] == 'svn':
-            continue
 
         logging.info("Processing " + app['id'])