summaryrefslogtreecommitdiff
path: root/morphlib/buildbranch.py
diff options
context:
space:
mode:
authorSam Thursfield <sam.thursfield@codethink.co.uk>2014-12-04 15:53:16 +0000
committerSam Thursfield <sam.thursfield@codethink.co.uk>2014-12-04 15:53:16 +0000
commitfc5d4e58753d113d898744c1924b13ddc34e526e (patch)
treed2f17a4258a3af5a6dee2ee4edc5a367103c5cc2 /morphlib/buildbranch.py
parent0861a2054145b9558f108e0662b35061db2a19ec (diff)
parentb9af32ba9f60b66ef1487438f97a37c54bf95b3b (diff)
downloadmorph-fc5d4e58753d113d898744c1924b13ddc34e526e.tar.gz
Merge branch 'sam/build-branch-fixes'
Reviewed-By: Richard Maw <richard.maw@codethink.co.uk> Reviewed-By: Francisco Redondo Marchena <francisco.marchena@codethink.co.uk>
Diffstat (limited to 'morphlib/buildbranch.py')
-rw-r--r--morphlib/buildbranch.py16
1 files changed, 14 insertions, 2 deletions
diff --git a/morphlib/buildbranch.py b/morphlib/buildbranch.py
index 2d529133..2482bc9a 100644
--- a/morphlib/buildbranch.py
+++ b/morphlib/buildbranch.py
@@ -35,6 +35,15 @@ class BuildBranchCleanupError(cliapp.AppException):
% locals())
+class NoReposError(cliapp.AppException):
+ def __init__(self, bb, ignored):
+ self.bb = bb
+ cliapp.AppException.__init__(
+ self, "No repos were found in system branch (ignored %i which "
+ "didn't have the right morph.uuid setting)" % (ignored))
+
+
+
class BuildBranch(object):
'''Represent the sources modified in a system branch.
@@ -61,12 +70,12 @@ class BuildBranch(object):
self._branch_root = sb.get_config('branch.root')
branch_uuid = sb.get_config('branch.uuid')
- for gd in sb.list_git_directories():
+ for count, gd in enumerate(sb.list_git_directories()):
try:
repo_uuid = gd.get_config('morph.uuid')
except cliapp.AppException:
# Not a repository cloned by morph, ignore
- break
+ continue
build_ref = os.path.join('refs/heads', build_ref_prefix,
branch_uuid, repo_uuid)
# index is commit of workspace + uncommitted changes may want
@@ -76,6 +85,9 @@ class BuildBranch(object):
index.set_to_tree(gd.resolve_ref_to_tree(gd.HEAD))
self._to_push[gd] = (build_ref, index)
+ if len(self._to_push) == 0:
+ raise NoReposError(self, count)
+
rootinfo, = ((gd, index) for gd, (build_ref, index)
in self._to_push.iteritems()
if gd.get_config('morph.repository') == self._branch_root)