protected long doUpdate(final File root, final SVNUpdateClient client) throws SVNException {
      final SvnConfiguration svnConfig = SvnConfiguration.getInstance(myVcs.getProject());

      MergeRootInfo info = svnConfig.getMergeRootInfo(root, myVcs);
      if (info.getUrlString1().equals(info.getUrlString2())
          && info.getRevision1().equals(info.getRevision2())) {
        return 0;
      }

      SVNDiffClient diffClient = myVcs.createDiffClient();
      diffClient.setEventHandler(myHandler);
      diffClient.doMerge(
          info.getUrl1(),
          info.getRevision1(),
          info.getUrl2(),
          info.getRevision2(),
          root,
          svnConfig.UPDATE_DEPTH,
          svnConfig.MERGE_DIFF_USE_ANCESTRY,
          false,
          svnConfig.MERGE_DRY_RUN,
          false);

      svnConfig.LAST_MERGED_REVISION = getLastMergedRevision(info.getRevision2(), info.getUrl2());
      return info.getResultRevision();
    }