anchor.diff:    chrome.DirectoryEntry root;
     ObjectStore store;
     Function progress;
  +  String branchName;
   
     Fetch(this.options){
       root = options.root;
       store = options.store;
       progress = options.progressCallback;
  +    branchName = options.branchName == null ? 'master' : options.branchName;
   
       if (progress == null) progress = nopFunction;
     }
  
positive.code:           password);
  
        // get current branch.
        return store.getHeadRef().then((String headRefName) {
          return fetcher.fetchUploadRefs().then((List<GitRef> refs) {
            GitRef branchRef = refs.firstWhere((GitRef ref) =>
                ref.name == headRefName);
  
            if (branchRef != null) {
              // see if we know about the branch's head commit. If so we're up to
              // date. If not, request from remote.
              return store.getRemoteHeadForRef(headRefName).then((sha) {
                if (sha == branchRef.sha) {
                  // Branch is uptodate
                  throw "fetch up to date.";
                } else {
                  return _handleFetch(branchRef, branchRef, fetcher);
                }
              });
            } else {
              //TODO better error handling.
              throw "Remote branch not found";
            }
          });
        }, onError: (e) {
          // TODO throw branch not found error.
          throw "branch not found.";
        });
      });
    }
  
  
negative.code: import 'package:chrome/chrome_app.dart' as chrome;
  
  import '../constants.dart';
  import '../exception.dart';
  import '../fast_sha.dart';
  import '../file_operations.dart';
  import '../http_fetcher.dart';
  