diff options
author | Sam Thursfield <sam.thursfield@codethink.co.uk> | 2014-12-04 15:53:16 +0000 |
---|---|---|
committer | Sam Thursfield <sam.thursfield@codethink.co.uk> | 2014-12-04 15:53:16 +0000 |
commit | fc5d4e58753d113d898744c1924b13ddc34e526e (patch) | |
tree | d2f17a4258a3af5a6dee2ee4edc5a367103c5cc2 /morphlib/buildbranch.py | |
parent | 0861a2054145b9558f108e0662b35061db2a19ec (diff) | |
parent | b9af32ba9f60b66ef1487438f97a37c54bf95b3b (diff) | |
download | morph-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.py | 16 |
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) |