anchor.diff:    @override
     Future<Iterable<Version>> getReleaseVersionTags() =>
         executeTask('fetch git release version tags', () async {
  -        final gitDir = await p.gitDir;
  +        final gitDir = await _project.gitDir;
           return await gitFetchVersionTags(gitDir);
         });
   
     @override
     Future assertNoActiveReleases() =>
         executeTask('check no active releases', () async {
  -        final releaseNames = await gitFlowReleaseNames(await p.gitDir);
  +        final releaseNames = await gitFlowReleaseNames(await _project.gitDir);
           if (releaseNames.isNotEmpty) {
             throw new StateError(
  -              '${p.name} has an existing release branch. Must finish all active releases first');
  +              '${_project.name} has an existing release branch. Must finish all active releases first');
           }
         });
   }
  
positive.code:             } else {
                // correct feature
                // TODO: could check the branch is correctly based off develop
                _log.info('${p.name} already on correct feature branch');
                return;
              }
            } else {
  
negative.code: 
    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);
  