Skip to content

Commit

Permalink
GitPoller: Store lastRevs branches with the non-bare names.
Browse files Browse the repository at this point in the history
  • Loading branch information
jhol committed Dec 18, 2013
1 parent 4cdd2f2 commit d3bf4d8
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 22 deletions.
16 changes: 7 additions & 9 deletions master/buildbot/changes/gitpoller.py
Expand Up @@ -137,6 +137,10 @@ def _removeHeads(self, branch):
branch = branch[11:]
return branch

def _trackerBranch(self, branch):
return "refs/buildbot/%s/%s" % (urllib.quote(self.repourl, ''),
self._removeHeads(branch))

@defer.inlineCallbacks
def poll(self):
yield self._dovccmd('init', ['--bare', self.workdir])
Expand All @@ -148,12 +152,9 @@ def poll(self):
branches = filter(self.branches, branches)
else:
branches = filter(self._headsFilter, branches)
# We remove the refs/heads/ prefix here, so that
# poller state with bare branch names is respected
branches = map(self._removeHeads, branches)

refspecs = [
'+%s:%s' % (branch, self._localBranch(branch))
'+%s:%s' % (self._removeHeads(branch), self._trackerBranch(branch))
for branch in branches
]
yield self._dovccmd('fetch',
Expand All @@ -162,8 +163,8 @@ def poll(self):
revs = {}
for branch in branches:
try:
revs[branch] = rev = yield self._dovccmd('rev-parse',
[self._localBranch(branch)], path=self.workdir)
revs[branch] = rev = yield self._dovccmd(
'rev-parse', [self._trackerBranch(branch)], path=self.workdir)
yield self._process_changes(rev, branch)
except:
log.err(_why="trying to poll branch %s of %s"
Expand Down Expand Up @@ -298,6 +299,3 @@ def _convert_nonzero_to_failure(res):
return stdout.strip()
d.addCallback(_convert_nonzero_to_failure)
return d

def _localBranch(self, branch):
return "refs/buildbot/%s/%s" % (urllib.quote(self.repourl, ''), branch)
34 changes: 21 additions & 13 deletions master/buildbot/test/unit/test_changes_gitpoller.py
Expand Up @@ -480,15 +480,16 @@ def comments(rev):
# do the poll
self.poller.branches = True
self.poller.lastRev = {
'master': 'fa3ae8ed68e664d4db24798611b352e3c6509930',
'refs/heads/master': 'fa3ae8ed68e664d4db24798611b352e3c6509930',
}
d = self.poller.poll()

@d.addCallback
def cb(_):
self.assertAllCommandsRan()
self.assertEqual(self.poller.lastRev, {
'master': '4423cdbcbb89c14e50dd5f4152415afd686c5241',
'refs/heads/master':
'4423cdbcbb89c14e50dd5f4152415afd686c5241',
})

self.assertEqual(len(self.changes_added), 2)
Expand All @@ -497,7 +498,8 @@ def cb(_):
self.assertEqual(self.changes_added[0]['when_timestamp'],
epoch2datetime(1273258009))
self.assertEqual(self.changes_added[0]['comments'], 'hello!')
self.assertEqual(self.changes_added[0]['branch'], 'master')
self.assertEqual(self.changes_added[0]['branch'],
'refs/heads/master')
self.assertEqual(self.changes_added[0]['files'], ['/etc/442'])
self.assertEqual(self.changes_added[0]['src'], 'git')

Expand Down Expand Up @@ -608,17 +610,19 @@ def comments(rev):
# do the poll
self.poller.branches = True
self.poller.lastRev = {
'master': 'fa3ae8ed68e664d4db24798611b352e3c6509930',
'release': 'bf0b01df6d00ae8d1ffa0b2e2acbe642a6cd35d5'
'refs/heads/master': 'fa3ae8ed68e664d4db24798611b352e3c6509930',
'refs/heads/release': 'bf0b01df6d00ae8d1ffa0b2e2acbe642a6cd35d5'
}
d = self.poller.poll()

@d.addCallback
def cb(_):
self.assertAllCommandsRan()
self.assertEqual(self.poller.lastRev, {
'master': '4423cdbcbb89c14e50dd5f4152415afd686c5241',
'release': '9118f4ab71963d23d02d4bdc54876ac8bf05acf2'
'refs/heads/master':
'4423cdbcbb89c14e50dd5f4152415afd686c5241',
'refs/heads/release':
'9118f4ab71963d23d02d4bdc54876ac8bf05acf2'
})

self.assertEqual(len(self.changes_added), 3)
Expand All @@ -627,7 +631,8 @@ def cb(_):
self.assertEqual(self.changes_added[0]['when_timestamp'],
epoch2datetime(1273258009))
self.assertEqual(self.changes_added[0]['comments'], 'hello!')
self.assertEqual(self.changes_added[0]['branch'], 'master')
self.assertEqual(self.changes_added[0]['branch'],
'refs/heads/master')
self.assertEqual(self.changes_added[0]['files'], ['/etc/442'])
self.assertEqual(self.changes_added[0]['src'], 'git')

Expand Down Expand Up @@ -699,8 +704,8 @@ def __call__(self, branch):

self.poller.branches = TestCallable()
self.poller.lastRev = {
'master': 'fa3ae8ed68e664d4db24798611b352e3c6509930',
'release': 'bf0b01df6d00ae8d1ffa0b2e2acbe642a6cd35d5'
'refs/heads/master': 'fa3ae8ed68e664d4db24798611b352e3c6509930',
'refs/heads/release': 'bf0b01df6d00ae8d1ffa0b2e2acbe642a6cd35d5'
}
d = self.poller.poll()

Expand All @@ -711,8 +716,10 @@ def cb(_):
# The release branch id should remain unchanged,
# because it was ignorned.
self.assertEqual(self.poller.lastRev, {
'master': '4423cdbcbb89c14e50dd5f4152415afd686c5241',
'release': 'bf0b01df6d00ae8d1ffa0b2e2acbe642a6cd35d5'
'refs/heads/master':
'4423cdbcbb89c14e50dd5f4152415afd686c5241',
'refs/heads/release':
'bf0b01df6d00ae8d1ffa0b2e2acbe642a6cd35d5'
})

self.assertEqual(len(self.changes_added), 2)
Expand All @@ -721,7 +728,8 @@ def cb(_):
self.assertEqual(self.changes_added[0]['when_timestamp'],
epoch2datetime(1273258009))
self.assertEqual(self.changes_added[0]['comments'], 'hello!')
self.assertEqual(self.changes_added[0]['branch'], 'master')
self.assertEqual(self.changes_added[0]['branch'],
'refs/heads/master')
self.assertEqual(self.changes_added[0]['files'], ['/etc/442'])
self.assertEqual(self.changes_added[0]['src'], 'git')

Expand Down

0 comments on commit d3bf4d8

Please sign in to comment.