anchor.diff:    }
   }
   
  -class _GitPushJob extends Job {
  +class _GitPushTask {
     GitScmProjectOperations gitOperations;
     Spark spark;
     String username;
     String password;
  -
  -  _GitPushJob(this.gitOperations, this.username, this.password, this.spark)
  -      : super("Pushing changes…") {
  -  }
  -
  -  Future run(ProgressMonitor monitor) {
  -    monitor.start(name, 1);
  -
  -    return gitOperations.push(username, password).then((_) {
  -      spark.showSuccessMessage('Changes pushed successfully');
  -    }).catchError((e) {
  -      spark.showErrorMessage('Error while pushing changes', e.toString());
  -    });
  +  ProgressMonitor monitor;
  +
  +  _GitPushTask(this.gitOperations, this.username, this.password, this.spark,
  +      this.monitor){
  +  }
  +
  +  Future run() {
  +    return gitOperations.push(username, password);
     }
   }
   
  
positive.code:     _commitsList = getElement('#gitCommitList');
    }
  
    void _invoke([context]) {
      project = context.first;
  
      gitOperations = spark.scmManager.getScmOperationsFor(project);
  
negative.code:   }
  
    void _push() {
      SparkProgress progressComponent = getElement('#cloneProgress');
      progressComponent.progressMessage = "Pushing...";
      _toggleProgressVisible(true);
  
      SparkButton closeButton = getElement('#gitPushClose');
      closeButton.enabled = false;
      closeButton.deliverChanges();
  
      SparkButton pushButton = getElement('#gitPush');
      pushButton.enabled = false;
      pushButton.text = "Pushing...";
      pushButton.deliverChanges();
  
      ProgressMonitor monitor = new ProgressMonitorImpl(progressComponent);
      _GitPushTask task = new _GitPushTask(gitOperations, _gitUsername, _gitPassword,
          spark, monitor);
      task.run().then((_) {
        spark.showSuccessMessage('Changes pushed successfully');
  
      }).catchError((e) {
        spark.showErrorMessage('Error while pushing changes', e.toString());
  
      }).whenComplete(() {
        _restoreDialog();
        _hide();
      });
  
    }
  
    void _toggleProgressVisible(bool visible) {
      SparkProgress progressComponent = getElement('#gitPushProgress');
      progressComponent.visible = visible;
      progressComponent.deliverChanges();
    }
  
    void _restoreDialog() {
      SparkButton cloneButton = getElement('#gitPush');
      cloneButton.enabled = true;
      cloneButton.text = "Push";
      SparkButton closeButton = getElement('#GitPushClose');
      closeButton.enabled = true;
      _toggleProgressVisible(false);
    }
  
    void _commit() {
  