diff --git a/docs/fdroid.texi b/docs/fdroid.texi index 924ecff9..4168c505 100644 --- a/docs/fdroid.texi +++ b/docs/fdroid.texi @@ -1077,8 +1077,9 @@ are known to forget to tag releases. Like RepoManifest, it will not return the correct value if the directory containing the AndroidManifest.xml has moved. Despite these caveats, it is the often the favourite update check mode. -It currently only works for git and git-svn repositories. In the case of the -latter, the repo URL must encode the path to the trunk and tags. +It currently only works for git, hg and git-svn repositories. In the case of +the latter, the repo URL must encode the path to the trunk and tags or else no +tags will be found. @end itemize @node Auto Update Mode diff --git a/fdroidserver/checkupdates.py b/fdroidserver/checkupdates.py index a1ba9586..9c39a2b3 100644 --- a/fdroidserver/checkupdates.py +++ b/fdroidserver/checkupdates.py @@ -50,8 +50,8 @@ def check_tags(app, sdk_path): build_dir = os.path.join('build/', app['id']) repotype = app['Repo Type'] - if repotype not in ('git', 'git-svn'): - return (None, 'Tags update mode only works for git and git-svn repositories currently') + if repotype not in ('git', 'git-svn', 'hg'): + return (None, 'Tags update mode only works for git, hg and git-svn repositories currently') # Set up vcs interface and make sure we have the latest code... vcs = common.getvcs(app['Repo Type'], app['Repo'], build_dir, sdk_path) diff --git a/fdroidserver/common.py b/fdroidserver/common.py index d418f790..51f9a955 100644 --- a/fdroidserver/common.py +++ b/fdroidserver/common.py @@ -342,6 +342,11 @@ class vcs_hg(vcs): cwd=self.local) != 0: raise VCSException("Hg checkout failed") + def gettags(self): + p = subprocess.Popen(['hg', 'tags', '-q'], + stdout=subprocess.PIPE, cwd=self.local) + return p.communicate()[0].splitlines()[1:] + class vcs_bzr(vcs):