コード例 #1
0
ファイル: verseek.py プロジェクト: vinodpanicker/verseek
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 ]
コード例 #2
0
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]
コード例 #3
0
 def __init__(self, path):
     Git.__init__(self, path)
     self.autoversion = Autoversion(path, precache=True)
コード例 #4
0
ファイル: verseek.py プロジェクト: vinodpanicker/verseek
 def __init__(self, path):
     Git.__init__(self, path)
     self.autoversion = Autoversion(path, precache=True)