anchor.diff:      return project.getChild('.git') is Folder;
     }
   
  -  ScmProjectOperations getOperationsFor(Project project) {
  +  ScmProjectOperations createOperationsFor(Project project) {
       if (_operations[project] == null) {
         if (isUnderScm(project)) {
           _operations[project] = new GitScmProjectOperations(this, project);
  
positive.code:   bool isUnderScm(Project project);
  
    /**
     * Return the [ScmProjectOperations] cooresponding to the given [Project].
     */
    ScmProjectOperations getOperationsFor(Project project);
  
    /**
     * Clone the repo at the given url into the given directory.
  
negative.code:       .catchError((e) => _completer.completeError(e));
    }
  
    FileStatus getFileStatus(Resource resource) {
      // TODO:
      return FileStatus.UNKNOWN;
    }
  
    Stream<ScmProjectOperations> get onStatusChange => _statusController.stream;
  
    Future<String> getBranchName() =>
        objectStore.then((store) => store.getCurrentBranch());
  