anchor.diff:        });
   }
   
  -List<String> _getGitArgs(String gitDir, String workTree) =>
  -    ['--git-dir=$gitDir', '--work-tree=$workTree'];
  +List<String> _getGitArgs(String gitDir, String workTree,
  +    Collection<String> rest) {
  +  final args = ['--git-dir=$gitDir', '--work-tree=$workTree'];
  +  args.addAll(rest);
  +  return args;
  +}
   
   Future<bool> _cleanUpTemp(String tempDir, bool dartDocSuccess) {
     final dir = new Directory(tempDir);
  
positive.code: 
  Future _checkoutBare(TaskContext ctx, String gitDir, String workTree,
                       String desiredBranch) {
    final args = _getGitArgs(gitDir, workTree);
    args.addAll(['checkout', '--orphan', desiredBranch]);
    return Process.run('git', args)
        .chain((ProcessResult pr) {
          _throwIfProcessFailed(ctx, pr);
          final args = _getGitArgs(gitDir, workTree);
          args.addAll(['rm', '-rf', '.']);
          return Process.run('git', args);
        })
        .transform((ProcessResult pr) {
  
negative.code: }
  
  Future _doPush(TaskContext ctx, String workTree, String gitDir, String branchName) {
    final args = _getGitArgs(gitDir, workTree, ['push', 'origin', branchName]);
    return Process.run('git', args)
        .transform((ProcessResult pr) {
          _throwIfProcessFailed(ctx, pr);
  