class GitSingle(Git): """version seeking class for git repository containing one package""" def __init__(self, path): Git.__init__(self, path) self.autoversion = Autoversion(path, precache=True) def _get_commit_datetime(self, commit): output = self.git.cat_file("commit", commit) timestamp = int(re.search(r' (\d{10}) ', output).group(1)) return datetime.datetime.fromtimestamp(timestamp) def _create_changelog(self, version, datetime): release = "UNRELEASED" def parse_control(path): lines = (line.rstrip() for line in file(path).readlines() if not line.startswith(" ")) return dict([ re.split("\s*:\s*", line, 1) for line in lines if line ]) control = parse_control(self.path_control) fh = file(self.path_changelog, "w") print >> fh, "%s (%s) %s; urgency=low" % (control['Source'], version, release) print >> fh print >> fh, " * undocumented" print >> fh print >> fh, " -- %s %s" % (control['Maintainer'], datetime.strftime("%a, %d %b %Y %H:%M:%S +0000")) fh.close() def seek(self, version=None): if not version: if exists(self.path_changelog): os.remove(self.path_changelog) self._seek_restore() else: commit = self.autoversion.version2commit(version) self._seek_commit(commit) self._create_changelog(version, self._get_commit_datetime(commit)) def list(self): branch = basename(self.verseek_head or self.head) commits = self.git.rev_list(branch) return [ self.autoversion.commit2version(commit) for commit in commits ]
class GitSingle(Git): """version seeking class for git repository containing one package""" def __init__(self, path): Git.__init__(self, path) self.autoversion = Autoversion(path, precache=True) def _get_commit_datetime(self, commit): output = self.git.cat_file("commit", commit) timestamp = int(re.search(r' (\d{10}) ', output).group(1)) return datetime.datetime.fromtimestamp(timestamp) def _create_changelog(self, version, datetime): release = "UNRELEASED" def parse_control(path): lines = (line.rstrip() for line in file(path).readlines() if not line.startswith(" ")) return dict( [re.split("\s*:\s*", line, 1) for line in lines if line]) control = parse_control(self.path_control) fh = file(self.path_changelog, "w") print >> fh, "%s (%s) %s; urgency=low" % (control['Source'], version, release) print >> fh print >> fh, " * undocumented" print >> fh print >> fh, " -- %s %s" % ( control['Maintainer'], datetime.strftime("%a, %d %b %Y %H:%M:%S +0000")) fh.close() def seek(self, version=None): if not version: if exists(self.path_changelog): os.remove(self.path_changelog) self._seek_restore() else: commit = self.autoversion.version2commit(version) self._seek_commit(commit) self._create_changelog(version, self._get_commit_datetime(commit)) def list(self): branch = basename(self.verseek_head or self.head) commits = self.git.rev_list(branch) return [self.autoversion.commit2version(commit) for commit in commits]