diff --git a/developer/imagebuilder.py b/developer/imagebuilder.py
index 8f619f1..e4848a6 100755
--- a/developer/imagebuilder.py
+++ b/developer/imagebuilder.py
@@ -231,6 +231,9 @@
             self.git_repo_o = git.Repo(self.abspath())
             LOG.debug("Repo - %s, path: %s" % (name, path))
 
+            LOG.debug(" local branch: %s" % self.short_branch)
+            LOG.debug(" remote branch: %s" % self.remote_branch)
+
             self.head_commit = self.git_repo_o.head.commit.hexsha
             LOG.debug(" head commit: %s" % self.head_commit)
 
@@ -271,7 +274,8 @@
         if not branch:
             branch = self.remote_branch
 
-        LOG.debug("  Looking for changes in path: %s" % test_path)
+        LOG.debug("  Looking for differences from branch '%s' in path: %s" %
+                  (branch, test_path))
 
         p_clean = True
 
@@ -335,26 +339,31 @@
         LOG.info("Manifest is on remote branch '%s' with remote url '%s'" %
                  (self.remote_branch, self.remote_url))
 
-        project_repos = {}
-
         for project in self.manifest_xml.iter('project'):
             repo_name = project.attrib['name']
             rel_path = project.attrib['path']
             abs_path = os.path.abspath(os.path.join(args.repo_root,
                                        project.attrib['path']))
 
+            if 'revision' in project.attrib:
+                p_short_branch = project.attrib['revision']
+                p_remote_branch = "%s/%s" % (default.attrib['remote'],
+                                             p_short_branch)
+                LOG.info('revision for project %s overridden with %s' %
+                         (repo_name, p_short_branch))
+            else:
+                p_short_branch = self.short_branch
+                p_remote_branch = self.remote_branch
+
             if os.path.isdir(abs_path):
-                project_repos[repo_name] = rel_path
+                self.repos[repo_name] = RepoRepo(repo_name, rel_path,
+                                                 self.remote_url,
+                                                 p_remote_branch,
+                                                 p_short_branch)
             else:
                 LOG.debug("Repo in manifest but not checked out: %s" %
                           repo_name)
 
-        for repo_name, repo_path in project_repos.iteritems():
-            self.repos[repo_name] = RepoRepo(repo_name, repo_path,
-                                             self.remote_url,
-                                             self.remote_branch,
-                                             self.short_branch)
-
     def get_repo(self, repo_name):
         return self.repos[repo_name]
 
@@ -1011,7 +1020,6 @@
 
                 parent = self.find_image(parent_name)
 
-
                 if parent is not None:
                     LOG.debug(" internal image '%s' is parent of '%s'" %
                               (parent.name, image.name))
