anchor.diff:    }
   }
   
  -class GitPullAction extends SparkAction implements ContextAction {
  -  GitPullAction(Spark spark) : super(spark, "git-pull", "Pull from Origin");
  +class GitPullAction extends SparkActionWithProgressDialog implements ContextAction {
  +  GitPullAction(Spark spark, SparkDialog dialog)
  +      : super(spark, "git-pull", "Pull from Origin", dialog);
   
     void _invoke([context]) {
       var project = context.first.project;
       var operations = spark.scmManager.getScmOperationsFor(project);
   
  -    spark.jobManager.schedule(new _GitPullJob(operations, spark));
  +    _dialog.dialog.title = 'Git Pull';
  +    String branchName = operations.getBranchName();
  +    _setProgressMessage('Updating ${branchName}...');
  +    _toggleProgressVisible(true);
  +
  +    Future f = spark.jobManager.schedule(new _GitPullJob(operations, spark));
  +    // Show dialog for at lest 2 seconds.
  +    Timer timer = new Timer(new Duration(milliseconds: 2000), () {
  +      f.whenComplete(() {
  +        _hide();
  +      });
  +    });
  +    _show();
     }
   
     String get category => 'git';
  
positive.code:     actionManager.registerAction(new CompileDartAction(this));
      actionManager.registerAction(new GitCloneAction(this, getDialogElement("#gitCloneDialog")));
      if (SparkFlags.showGitPull) {
        actionManager.registerAction(new GitPullAction(this));
      }
      actionManager.registerAction(new GitBranchAction(this, getDialogElement("#gitBranchDialog")));
      actionManager.registerAction(new GitCheckoutAction(this, getDialogElement("#gitCheckoutDialog")));
      actionManager.registerAction(new GitAddAction(this));
      actionManager.registerAction(new GitResolveConflictsAction(this));
      actionManager.registerAction(new GitCommitAction(this, getDialogElement("#gitCommitDialog")));
      actionManager.registerAction(new GitRevertChangesAction(this));
  
negative.code:   bool appliesTo(context) => _isScmProject(context);
  }
  
  class GitAddAction extends SparkActionWithProgressDialog implements ContextAction {
    GitAddAction(Spark spark, SparkDialog dialog)
        : super(spark, "git-add", "Git Add", dialog);
    chrome.Entry entry;
  
    void _invoke([List<ws.Resource> resources]) {
  