aboutsummaryrefslogtreecommitdiffstats
path: root/lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/changes/hgbuildbot.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/changes/hgbuildbot.py')
-rw-r--r--lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/changes/hgbuildbot.py168
1 files changed, 0 insertions, 168 deletions
diff --git a/lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/changes/hgbuildbot.py b/lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/changes/hgbuildbot.py
deleted file mode 100644
index b01a13ca..00000000
--- a/lib/python2.7/site-packages/buildbot-0.8.8-py2.7.egg/buildbot/changes/hgbuildbot.py
+++ /dev/null
@@ -1,168 +0,0 @@
-# This file is part of Buildbot. Buildbot is free software: you can
-# redistribute it and/or modify it under the terms of the GNU General Public
-# License as published by the Free Software Foundation, version 2.
-#
-# This program is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
-# details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this program; if not, write to the Free Software Foundation, Inc., 51
-# Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
-#
-# Portions Copyright Buildbot Team Members
-# Portions Copyright 2007 Frederic Leroy <fredo@starox.org>
-
-# hook extension to send change notifications to buildbot when a changeset is
-# brought into the repository from elsewhere.
-#
-# See the Buildbot manual for configuration instructions.
-
-import os
-
-from mercurial.node import bin, hex, nullid #@UnresolvedImport
-
-# mercurial's on-demand-importing hacks interfere with the:
-#from zope.interface import Interface
-# that Twisted needs to do, so disable it.
-try:
- from mercurial import demandimport
- demandimport.disable()
-except ImportError:
- pass
-
-# In Mercurial post-1.7, some strings might be stored as a
-# encoding.localstr class. encoding.fromlocal will translate
-# those back to UTF-8 strings.
-try:
- from mercurial.encoding import fromlocal
- _hush_pyflakes = [fromlocal]
- del _hush_pyflakes
-except ImportError:
- def fromlocal(s):
- return s
-
-def hook(ui, repo, hooktype, node=None, source=None, **kwargs):
- # read config parameters
- baseurl = ui.config('hgbuildbot', 'baseurl',
- ui.config('web', 'baseurl', ''))
- masters = ui.configlist('hgbuildbot', 'master')
- if masters:
- branchtype = ui.config('hgbuildbot', 'branchtype', 'inrepo')
- branch = ui.config('hgbuildbot', 'branch')
- fork = ui.configbool('hgbuildbot', 'fork', False)
- # notify also has this setting
- stripcount = int(ui.config('notify','strip') or ui.config('hgbuildbot','strip',3))
- category = ui.config('hgbuildbot', 'category', None)
- project = ui.config('hgbuildbot', 'project', '')
- auth = ui.config('hgbuildbot', 'auth', None)
- else:
- ui.write("* You must add a [hgbuildbot] section to .hg/hgrc in "
- "order to use buildbot hook\n")
- return
-
- if hooktype != "changegroup":
- ui.status("hgbuildbot: hooktype %s not supported.\n" % hooktype)
- return
-
- if fork:
- child_pid = os.fork()
- if child_pid == 0:
- #child
- pass
- else:
- #parent
- ui.status("Notifying buildbot...\n")
- return
-
- # only import inside the fork if forked
- from buildbot.clients import sendchange
- from twisted.internet import defer, reactor
-
- if branch is None:
- if branchtype == 'dirname':
- branch = os.path.basename(repo.root)
-
- if not auth:
- auth = 'change:changepw'
- auth = auth.split(':', 1)
-
- # process changesets
- def _send(res, s, c):
- if not fork:
- ui.status("rev %s sent\n" % c['revision'])
- return s.send(c['branch'], c['revision'], c['comments'],
- c['files'], c['username'], category=category,
- repository=repository, project=project, vc='hg',
- properties=c['properties'])
-
- try: # first try Mercurial 1.1+ api
- start = repo[node].rev()
- end = len(repo)
- except TypeError: # else fall back to old api
- start = repo.changelog.rev(bin(node))
- end = repo.changelog.count()
-
- repository = strip(repo.root, stripcount)
- repository = baseurl + repository
-
- for master in masters:
- s = sendchange.Sender(master, auth=auth)
- d = defer.Deferred()
- reactor.callLater(0, d.callback, None)
-
- for rev in xrange(start, end):
- # send changeset
- node = repo.changelog.node(rev)
- manifest, user, (time, timezone), files, desc, extra = repo.changelog.read(node)
- parents = filter(lambda p: not p == nullid, repo.changelog.parents(node))
- if branchtype == 'inrepo':
- branch = extra['branch']
- is_merge = len(parents) > 1
- # merges don't always contain files, but at least one file is required by buildbot
- if is_merge and not files:
- files = ["merge"]
- properties = {'is_merge': is_merge}
- if branch:
- branch = fromlocal(branch)
- change = {
- 'master': master,
- 'username': fromlocal(user),
- 'revision': hex(node),
- 'comments': fromlocal(desc),
- 'files': files,
- 'branch': branch,
- 'properties':properties
- }
- d.addCallback(_send, s, change)
-
- def _printSuccess(res):
- ui.status(s.getSuccessString(res) + '\n')
-
- def _printFailure(why):
- ui.warn(s.getFailureString(why) + '\n')
-
- d.addCallbacks(_printSuccess, _printFailure)
- d.addBoth(lambda _ : reactor.stop())
- reactor.run()
-
- if fork:
- os._exit(os.EX_OK)
- else:
- return
-
-# taken from the mercurial notify extension
-def strip(path, count):
- '''Strip the count first slash of the path'''
-
- # First normalize it
- path = '/'.join(path.split(os.sep))
- # and strip it part after part
- while count > 0:
- c = path.find('/')
- if c == -1:
- break
- path = path[c + 1:]
- count -= 1
- return path