def _NeedsSnapshot(repo_root, project): """Test if project's revision is reachable from its upstream ref.""" # Some projects don't have an upstream set. Try 'master' anyway. branch = _GetUpstreamBranch(project) or 'master' upstream_ref = 'refs/remotes/%s/%s' % (project.Remote().GitName(), branch) project_path = os.path.join(repo_root, project.Path()) try: if git.IsReachable(project_path, project.revision, upstream_ref): return False except cros_build_lib.RunCommandError as e: logging.debug('Reachability check failed: %s', e) logging.info('Project %s revision %s not reachable from upstream %r.', project.name, project.revision, upstream_ref) return True
def testIsReachableFalse(self): git1 = self._MakeRepo('git1', self.source) patch1 = self.CommitFile(git1, 'foo', 'foo') patch2 = self.CommitFile(git1, 'bar', 'bar') self.assertFalse(git.IsReachable(git1, patch2.sha1, patch1.sha1))