in src/org/jetbrains/tfsIntegration/core/tfs/VersionControlServer.java [760:813]
public List<Changeset> queryHistory(final String workspaceName,
final String workspaceOwner,
final ItemSpec itemSpec,
final String user,
final VersionSpec itemVersion,
final VersionSpec versionFrom,
final VersionSpec versionTo,
int maxCount,
Object projectOrComponent, String progressTitle) throws TfsException {
// TODO: slot mode
// TODO: include allChangeSets
List<Changeset> allChangeSets = new ArrayList<>();
int total = maxCount > 0 ? maxCount : Integer.MAX_VALUE;
final Ref<VersionSpec> versionToCurrent = new Ref<>(versionTo);
while (total > 0) {
final int batchMax = Math.min(256, total);
Changeset[] currentChangeSets =
TfsRequestManager.executeRequest(myServerUri, projectOrComponent, new TfsRequestManager.Request<Changeset[]>(progressTitle) {
@Override
public Changeset[] execute(Credentials credentials, URI serverUri, @Nullable ProgressIndicator pi) throws Exception {
QueryHistory param = new QueryHistory();
param.setWorkspaceName(workspaceName);
param.setWorkspaceOwner(workspaceOwner);
param.setItemSpec(itemSpec);
param.setVersionItem(itemVersion);
param.setUser(user);
param.setVersionFrom(versionFrom);
param.setVersionTo(versionToCurrent.get());
param.setMaxCount(batchMax);
param.setIncludeFiles(true);
param.setGenerateDownloadUrls(false);
param.setSlotMode(false);
return myBeans.getRepositoryStub(credentials, pi).queryHistory(param).getQueryHistoryResult().getChangeset();
}
});
if (currentChangeSets != null) {
ContainerUtil.addAll(allChangeSets, currentChangeSets);
}
if (currentChangeSets == null || currentChangeSets.length < batchMax) {
break;
}
total -= currentChangeSets.length;
Changeset lastChangeSet = currentChangeSets[currentChangeSets.length - 1];
versionToCurrent.set(new ChangesetVersionSpec(lastChangeSet.getCset()));
}
return allChangeSets;
}