anchor.diff:        _scheduleWriteIndex();
     }
   
  -  Future updateIndex() {
  -    return walkFilesAndUpdateIndex(_store.root).then((List<String> filePaths) {
  +  Future updateIndex([bool updateSha=true]) {
  +    return walkFilesAndUpdateIndex(_store.root, updateSha).then(
  +        (List<String> filePaths) {
         _updateDeletedFiles(filePaths);
         return new Future.value();
       });
  
positive.code:    * Walks over all the files in the working tree. Returns sha of the
     * working tree.
     */
     Future<List<String>> walkFilesAndUpdateIndex(chrome.DirectoryEntry root) {
       List<String> filePaths = [];
       return FileOps.listFiles(root).then((List<chrome.ChromeFileEntry> entries) {
         if (entries.isEmpty) {
  
negative.code:   }
  
    void updateIndexForEntry(FileStatus status) {
  
      FileStatus oldStatus = _statusIdx[status.path];
  
  