コード例 #1
0
ファイル: svnmanage.py プロジェクト: MarechalValen/octopy
def create_tag(repourl, tagname, username):
    tags = svnbrowse.get_tags(repourl)
    if tagname in tags:
        raise TagExists("""'%s' is already tagged, please try using a 
            different tag name""" % tagname)
    elif re.sub('[\w\.-]', '', tagname) != '':
        raise BadName("""'%s' is an invalid name. Try using just letters, numbers,
            dashes, underscores and periods.""" % tagname)
    reponame = svnbrowse.get_root_info(repourl)['repository_root'].split('/')[-1]
    #logging.debug("reponame %s" % (reponame,))
    with TemporaryFile() as tmperr:
        with TemporaryFile() as tmpout: 
            out = call(['svn', 'copy', '%s/trunk' % repourl, 
                '%s/tags/%s' % (repourl, tagname), '-m', 'Tagging the %s release' % tagname],
                stderr=tmperr, stdout=tmpout)

            if out is not 0:
                tmperr.seek(0)
                msg = tmperr.read()
                logging.error(msg)
                raise Error(msg)
            
            tmpout.seek(0)
            rev = re.search('Committed revision (\d+)', tmpout.read()).groups()[0]
            logging.info("changing the author of %s r%s to %s" % (reponame, rev, username))
            with NamedTemporaryFile() as tmpauthor:
                #logging.debug("tmperr %r, tmpout %r, tmpauthor %r" % (tmperr, tmpout, tmpauthor))
                tmpauthor.write(username)
                tmpauthor.seek(0)
                out = call(['svnadmin', 'setrevprop', '/usr/local/svn/repositories/%s' % reponame, '-r', rev, 'svn:author', tmpauthor.name])
                if out is not 0:
                    raise Error("Failed to set the commit author")

    return True
コード例 #2
0
ファイル: webservice.py プロジェクト: MarechalValen/octopy
 def post(self, reponame):
     url = settings.repositories[reponame]
     tagname = self.get_argument('tagname')
     try:
         svnmanage.create_tag(url, tagname, self.get_current_user()['username'])
         self.redirect("/%s/tags" % reponame)
     except svnmanage.Error, e:
         self._render_page(reponame, [str(e)], 
             svnbrowse.get_tags(url))
コード例 #3
0
ファイル: webservice.py プロジェクト: MarechalValen/octopy
 def get(self, reponame):
     url = settings.repositories[reponame]
     self._render_page(reponame, [], 
         svnbrowse.get_tags(url))