code: def do(self, changes, task_handle=taskhandle.NullTaskHandle()):
          
          try:
              self.current_change = changes
              changes.do(change.create_job_set(task_handle, changes))
          finally:
              self.current_change = None
          if self._is_change_interesting(changes):
              self.undo_list.append(changes)
              self._remove_extra_items()
          del self.redo_list[:]
docs: Perform the change and add it to the `self.undo_list`
  
          Note that uninteresting changes (changes to ignored files)
          will not be appended to `self.undo_list`.