void () { 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; } }