http://www.mediawiki.org/wiki/Special:Code/pywikipedia/9647
Revision: 9647 Author: xqt Date: 2011-10-22 14:11:03 +0000 (Sat, 22 Oct 2011) Log Message: ----------- get version from sqlite table while using TortoiseSVN 1.7
Modified Paths: -------------- trunk/pywikipedia/version.py
Modified: trunk/pywikipedia/version.py =================================================================== --- trunk/pywikipedia/version.py 2011-10-22 10:55:29 UTC (rev 9646) +++ trunk/pywikipedia/version.py 2011-10-22 14:11:03 UTC (rev 9647) @@ -2,6 +2,7 @@ """ Module to determine the pywikipedia version (tag, revision and date) """ # # (C) Merlijn 'valhallasw' van Deen, 2007-2008 +# (C) xqt, 2010-2011 # (C) Pywikipedia bot team, 2007-2011 # # Distributed under the terms of the MIT license. @@ -28,6 +29,7 @@ try: (tag, rev, date) = getversion_svn() except Exception, e: + print e try: (tag, rev, date) = getversion_nightly() except Exception, e: @@ -52,16 +54,31 @@ # if not os.path.isabs(_program_dir): # _program_dir = os.path.normpath(os.path.join(os.getcwd(), _program_dir)) entries = open(os.path.join(_program_dir, '.svn/entries')) - for i in range(4): - entries.readline() - tag = entries.readline().strip() - t = tag.split('://') - t[1] = t[1].replace('svn.wikimedia.org/svnroot/pywikipedia/', '') - tag = '[%s] %s' % (t[0], t[1]) - for i in range(4): - entries.readline() - date = time.strptime(entries.readline()[:19],'%Y-%m-%dT%H:%M:%S') - rev = entries.readline()[:-1] + version = entries.readline().strip() + #use sqlite table for new entries format + if version == "12": + entries.close() + from sqlite3 import dbapi2 as sqlite + from datetime import datetime + con = sqlite.connect(os.path.join(_program_dir, ".svn/wc.db")) + cur = con.cursor() + cur.execute( '''select local_relpath, repos_path, revision, changed_date from nodes order by revision desc''') + name, tag, rev, date = cur.fetchone() + con.close() + tag = tag.rstrip(name) + date = time.gmtime(date/1000000) + else: + for i in range(3): + entries.readline() + tag = entries.readline().strip() + t = tag.split('://') + t[1] = t[1].replace('svn.wikimedia.org/svnroot/pywikipedia/', '') + tag = '[%s] %s' % (t[0], t[1]) + for i in range(4): + entries.readline() + date = time.strptime(entries.readline()[:19],'%Y-%m-%dT%H:%M:%S') + rev = entries.readline()[:-1] + entries.close() if not date or not tag or not rev: raise ParseError return (tag, rev, date)