@Override
    protected void load() {
      if (myPI != null) {
        myPI.setText2(message("progress.text2.changes.establishing.connection", myUrl.toDecodedString()));
      }

      try {
        if (myForceBackwards) {
          if (!existsNow(myUrl)) {
            loadBackwards(myUrl);
            return;
          }
        }

        Revision operationalFrom = myFrom == null ? Revision.HEAD : myFrom;
        // TODO: try to rewrite without separately retrieving repository url by item url - as this command could require authentication
        // TODO: and it is not "clear enough/easy to implement" with current design (for some cases) how to cache credentials (if in
        // TODO: non-interactive mode)
        final Url rootURL = getRepositoryRoot(myVcs, myUrl);
        if (rootURL == null) {
          throw new VcsException(message("error.can.not.find.repository.root.for.url", myUrl.toDecodedString()));
        }
        String relativeUrl = getRelativeUrl(rootURL, myUrl);
        Target target = Target.on(myUrl, myPeg == null ? myFrom : myPeg);
        RepositoryLogEntryHandler handler =
          new RepositoryLogEntryHandler(myVcs, myUrl, Revision.UNDEFINED, relativeUrl, myConsumer::consume, rootURL);

        myVcs.getFactory(target).createHistoryClient()
          .doLog(target, operationalFrom, myTo == null ? Revision.of(1) : myTo, false, true, myShowMergeSources && mySupport15,
                 myLimit, null, handler);
      }
      catch (VcsException e) {
        myException = e;
      }
    }
@Override
    protected void load()