summaryrefslogtreecommitdiff
path: root/morphlib/buildbranch.py
diff options
context:
space:
mode:
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)