anchor.diff:    _log.info('cloning git repo $gitUri into parent directory $parentDirectory '
         '$extraLogMessagePart');
   
  -  await runGit(['clone', gitUri, targetDirName ?? ''],
  -      processWorkingDir: parentDirectory.path);
  +  final basicCloneCommand = <String>['clone', gitUri];
  +  final cloneCommand = targetDirName != null
  +      ? (<String>[]
  +        ..addAll(basicCloneCommand)
  +        ..add(targetDirName))
  +      : basicCloneCommand;
  +
  +  await runGit(cloneCommand, processWorkingDir: parentDirectory.path);
   
     _log.finest('successfully cloned git repo $gitUri into parent directory '
         '$parentDirectory $extraLogMessagePart');
   
  -  return gitWorkspaceDir(gitUri, parentDirectory);
  +  return gitWorkspaceDir(gitUri, parentDirectory, targetDirName: targetDirName);
   }
   
   Future<GitDir> pull(String gitUri, Directory gitDirectory) async {
  
positive.code:     final uri = Uri.parse(gitUri);
      if (uri.scheme.isEmpty || uri.scheme == 'file') {
        final pathSegments = uri.pathSegments;
        targetDirName = pathSegments.elementAt(pathSegments.length - 1);
      }
    }
  
  
negative.code: 
  Logger _log = new Logger('jefe.git');
  
  Future<GitDir> gitWorkspaceDir(String gitUri, Directory parentDirectory,
          {String targetDirName}) =>
      GitDir.fromExisting(gitWorkspacePath(gitUri, parentDirectory,
          targetDirName: targetDirName));
  
  String gitWorkspaceName(String gitUri, {String targetDirName}) =>
      targetDirName != null ? targetDirName : p.basenameWithoutExtension(gitUri);
  
  String gitWorkspacePath(String gitUri, Directory parentDirectory,
          {String targetDirName}) =>
      p.join(parentDirectory.path,
          gitWorkspaceName(gitUri, targetDirName: targetDirName));
  
  enum OnExistsAction { pull, ignore }
  
  