anchor.diff:      actionManager.registerAction(new GitCloneAction(this, getDialogElement("#gitCloneDialog")));
       actionManager.registerAction(new GitBranchAction(this, getDialogElement("#gitBranchDialog")));
       actionManager.registerAction(new GitCheckoutAction(this, getDialogElement("#gitCheckoutDialog")));
  +    actionManager.registerAction(new GitResolveConflictsAction(this));
       actionManager.registerAction(new GitCommitAction(this, getDialogElement("#gitCommitDialog")));
       actionManager.registerAction(new GitPushAction(this, getDialogElement("#gitPushDialog")));
       actionManager.registerAction(new RunTestsAction(this));
  
positive.code:   bool appliesTo(context) => _isScmProject(context);
  }
  
  class _GitCloneJob extends Job {
    String url;
    String _projectName;
  
negative.code:    */
    bool _isScmProject(context) =>
        _isProject(context) && isUnderScm(context.first);
  
    /**
     * Returns true if `context` is a list with of items, all in the same project,
     * and that project is under SCM.
     */
    bool _isUnderScmProject(context) {
      if (context is! List) return false;
      if (context.isEmpty) return false;
  
      ws.Project project = context.first.project;
  
      if (!isUnderScm(project)) return false;
  
      for (var resource in context) {
        var resProject = resource.project;
        if (resProject == null || resProject != project) {
          return false;
        }
      }
  
      return true;
    }
  
    /**
     * Returns true if `object` is a list with a single item and this item is a
  