How to build a custom VCS plugin

We are in the process of writing a VCS plugin for TeamCity, but are right now stuck.

Could you elaborate on the instructions given on It seems that the interface CollectSingleStatePolicy and getCurrentVersion is the old way, the new way is using CollectChangesBetweenRepositories and thus implementing getCurrentState/collectChanges.

That is the route we have taken, but when running the build we get the following error:

jetbrains.buildServer.vcs.impl.RevisionsNotFoundException: Revisions are not found for build configuration <projectname>
at jetbrains.buildServer.vcs.impl.BuildChangesLoaderContext.checkAllRevisionsSet(

It seems that it should be enough to implement getCurrentState to get a successful build, but that seems to be a wrong assumption.
It would be a big help if you could outline what calls are made from TeamCity when checking out a new repository, getting the current state and then collecting changes.

To put it simply:

What would a minimal implementation using the newest interface look like?


Please sign in to leave a comment.