commitsdb.py

changeset 124
7b2cd8b1ba86
parent 123
aeb0d0788869
child 125
c44b1aa85257
--- a/commitsdb.py	Sun Apr 19 19:45:42 2015 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,84 +0,0 @@
-class CommitsDb (object):
-	def __init__(self):
-		needNew = not os.path.isfile ('commits.db')
-		self.db = sqlite3.connect ('commits.db')
-
-		if needNew:
-			self.create_new()
-
-	def create_new (self):
-		self.db.executescript ('''
-			DROP TABLE IF EXISTS COMMITS;
-			DROP TABLE IF EXISTS REPOS;
-			DROP TABLE IF EXISTS REPOCOMMITS;
-			CREATE TABLE IF NOT EXISTS COMMITS
-			(
-				Node        text NOT NULL,
-				Dateversion text NOT NULL,
-				PRIMARY KEY (Node)
-			);
-			CREATE TABLE IF NOT EXISTS REPOS
-			(
-				Name     text NOT NULL,
-				PRIMARY KEY (Name)
-			);
-			CREATE TABLE IF NOT EXISTS REPOCOMMITS
-			(
-				Reponame text,
-				Node     text,
-				FOREIGN KEY (Reponame) REFERENCES REPOS(Name),
-				FOREIGN KEY (Node) REFERENCES COMMITS(Node)
-			);
-		''')
-
-		print 'Building commits.db...'
-		for repo in all_repo_names():
-			print 'Adding commits from %s...' % repo
-
-			data = subprocess.check_output (['hg', '--cwd', repo, 'log', '--template',
-				'{node} {date|hgdate}\n']).splitlines()
-
-			for line in data:
-				changeset, timestamp, tz = line.split(' ')
-				self.add_commit (repo, changeset, int (timestamp))
-
-		self.commit()
-
-	def add_commit (self, repo, changeset, timestamp):
-		dateversion = datetime.utcfromtimestamp (timestamp).strftime ('%y%m%d-%H%M')
-		self.db.execute ('''
-			INSERT OR IGNORE INTO REPOS
-			VALUES (?)
-		''', (repo,))
-
-		self.db.execute ('''
-			INSERT OR IGNORE INTO COMMITS
-			VALUES (?, ?)
-		''', (changeset, dateversion))
-
-		self.db.execute ('''
-			INSERT INTO REPOCOMMITS 
-			VALUES (?, ?)
-		''', (repo, changeset))
-
-	def get_commit_repos (self, node):
-		cursor = self.db.execute ('''
-			SELECT Reponame
-			FROM REPOCOMMITS
-			WHERE Node LIKE ?
-		''', (node + '%',))
-
-		results = cursor.fetchall()
-		return list (set (zip (*results)[0])) if results else []
-
-	def find_commit_by_dateversion (self, dateversion):
-		cursor = self.db.execute ('''
-			SELECT Node
-			FROM COMMITS
-			WHERE Dateversion = ?
-		''', (dateversion,))
-		result = cursor.fetchone()
-		return result[0] if result else None
-
-	def commit(self):
-		self.db.commit()
\ No newline at end of file

mercurial