diff --git a/README.rst b/README.rst
index 29b9c21..341c6d2 100644
--- a/README.rst
+++ b/README.rst
@@ -150,6 +150,13 @@ Check a mercurial (hg) repository on `Google Code `_ f
gcode_hg
The name used on Google Code, e.g. ``chromium-compact-language-detector``.
+Check Google Code (svn repository)
+---------------------------------
+Check a subversion (svn) repository on `Google Code `_ for updates. The version returned is the svn resivion number.
+
+gcode_svn
+ The name used on Google Code, e.g. ``cld2``.
+
Manually updating
-----------------
This enables you to manually specify the version (maybe because you want to approve each release before it gets to the script).
diff --git a/nvchecker/get_version.py b/nvchecker/get_version.py
index 6bedf54..a57c4e5 100644
--- a/nvchecker/get_version.py
+++ b/nvchecker/get_version.py
@@ -4,7 +4,7 @@ from importlib import import_module
logger = logging.getLogger(__name__)
handler_precedence = (
'github', 'aur', 'pypi', 'archpkg', 'gems', 'pacman',
- 'cmd', 'gcode_hg', 'regex', 'manual', 'vcs'
+ 'cmd', 'gcode_hg', 'gcode_svn', 'regex', 'manual', 'vcs'
)
def get_version(name, conf, callback):
diff --git a/nvchecker/source/gcode_svn.py b/nvchecker/source/gcode_svn.py
new file mode 100644
index 0000000..90c7010
--- /dev/null
+++ b/nvchecker/source/gcode_svn.py
@@ -0,0 +1,26 @@
+import re
+import logging
+from functools import partial
+
+from tornado.httpclient import AsyncHTTPClient
+
+logger = logging.getLogger(__name__)
+
+GCODE_URL = 'https://code.google.com/p/%s/source/list'
+GCODE_SVN_RE = re.compile(r'r(\d+)')
+
+def get_version(name, conf, callback):
+ repo = conf.get('gcode_svn') or name
+ url = GCODE_URL % repo
+ AsyncHTTPClient().fetch(url, user_agent='lilydjwg/nvchecker',
+ callback=partial(_gcodehg_done, name, callback))
+
+def _gcodehg_done(name, callback, res):
+ data = res.body.decode('utf-8')
+ m = GCODE_SVN_RE.search(data)
+ if m:
+ version = m.group(1)
+ else:
+ logger.error('%s: version not found.', name)
+ version = None
+ callback(name, version)