anchor.diff:      }
   
       return executeTask/*<Option<String>>*/(
  -      'Get current feature name', featureNameFor);
  +        'Get current feature name', featureNameFor);
     }
   
     @override
  
positive.code:   GitFeatureCommandsSingleProjectFlowImpl(this._project, this._gitDir);
  
    Future init() => executeTask('git flow init', () async {
      await initGitFlow(await _project.gitDir);
    });
  
    Future featureStart(String featureName, {bool throwIfExists: false}) =>
      executeTask('git flow feature start', () async {
        final featureNames = await fetchCurrentProjectsFeatureNames();
        if (featureNames.featureExists(featureName)) {
          if (throwIfExists)
            throw new StateError("Feature '$featureName' already exists");
          else if (featureNames.currentFeatureIs(featureName)) {
            // correct feature
            // TODO: could check the branch is correctly based off develop
            _log.info('${_project.name} already on correct feature branch');
          } else {
            return gitCheckout(
              await _project.gitDir, '$featureBranchPrefix$featureName');
          }
        } else {
          return gitFlowFeatureStart(await _project.gitDir, featureName);
        }
      });
  
    Future featureFinish(String featureName,
      {bool excludeOnlyCommitIf(Commit commit): _dontExclude}) =>
      executeTask('git flow feature finish', () async {
        final GitDir gitDir = await _project.gitDir;
        final Map<String, Commit> commits =
        await gitDir.getCommits('$developBranchName..HEAD');
        _log.info('found ${commits.length} commits on feature branch');
        if (commits.length == 1 && excludeOnlyCommitIf(commits.values.first)) {
          // TODO: we should really delete the feature branch but a bit paranoid
          // doing that for now
          _log.info(
            'feature branch only contains original autogenerated commit.'
              ' Not merging changes');
          await gitCheckout(gitDir, developBranchName);
        } else {
          await gitFlowFeatureFinish(gitDir, featureName);
        }
      });
  
    Future releaseStart(String releaseName) =>
      executeTask('git flow release start', () async {
        await gitFlowReleaseStart(await _project.gitDir, releaseName);
      });
  
    Future releaseFinish(String releaseName) =>
      executeTask('git flow release finish', () async {
        var gitDir = await _project.gitDir;
        await gitFlowReleaseFinish(gitDir, releaseName);
        await gitTag(gitDir, releaseName);
        await gitPush(gitDir);
        await gitCheckout(gitDir, developBranchName);
        await gitMerge(gitDir, 'master', ffOnly: false);
        await gitDir.runCommand(['push', 'origin', 'master']);
      });
  
    @override
    String get developBranchName => 'develop';
  
negative.code:       });
  
    Future featureStart(String featureName, {bool throwIfExists: false}) =>
        process(
            'git commit',
            (GitFeatureCommands s) =>
                s.featureStart(featureName, throwIfExists: throwIfExists));
  //      executeTask('git flow feature start', () async {
  //        final featureNames = await fetchCurrentProjectsFeatureNames();
  //        if (featureNames.featureExists(featureName)) {
  //          if (throwIfExists)
  //            throw new StateError("Feature '$featureName' already exists");
  //          else if (featureNames.currentFeatureIs(featureName)) {
  //            // correct feature
  //            // TODO: could check the branch is correctly based off develop
  //            _log.info('${_graph.name} already on correct feature branch');
  //          } else {
  //            return gitCheckout(
  //                await _graph.gitDir, '$featureBranchPrefix$featureName');
  //          }
  //        } else {
  //          return gitFlowFeatureStart(await _graph.gitDir, featureName);
  //        }
  //      });
  
    Future featureFinish(String featureName,
            {bool excludeOnlyCommitIf(Commit commit): _dontExclude}) =>
  