Get Changes by ChangeId and By BuildLocator
Feature Request
Expose a method from which i can get changes from the TeamCity API.
Something like IConnectedTc.GetChanges(IChangesHavingBuilder having)
Changes are already present but are only accessible from an IBuild.
It would be nice to i.e. retrieve changes by the corresponding git commit hash:
/app/rest/changes/version:GITHASH
or get pending changes for a branch in a buildconfiguration:
/app/rest/changes?locator=buildType:(id:BUILDCONFIGID),pending:true,branch:BRANCHNAME
[Test]
public void GetChangesByChangeId()
{
var changes = new RemoteTc(c=>c.ToHost("HOST").AsGuest())
.GetChanges(c => c.ChangeId("GITHASH"))
}
[Test]
public void GetChangesByBuildLocator()
{
var changes = new RemoteTc(c=>c.ToHost("HOST").AsGuest())
.GetChanges(
c => c.Build(
b => b.BuildConfiguration(
t => t.Id("BUILDCONFIGID"))
.IsPending()
.OnBranch(b => b.Name("BRANCHNAME"))
)
);
}
Affected versions
| Product | Version |
|---|---|
| FluentTc | 0.0.0.249 |
| TeamCity | 2017.2.2 (build 50909) |
| Autofac | |
| EasyHttp | |
| SharpZipLib | |
| System.IO.Abstractions | |
| TeamCity.ServiceMessages |
@sebingel thank you for opening this issue. Does the tests I've added make sense?
@borismod sort of.
Test 1 should be .GetChanges(c => c.Version("GITHASH")).
TeamCity API calls the VCS revision Version. Although a .GetChanges(c => c.ChangeId("CHANGEID")) would be nice too.
In Test 2 it looks like you want to get the changes for a certain build. Am i right?
The API call /app/rest/changes?locator=buildType:(id:BUILDCONFIGID),pending:true,branch:BRANCHNAME gets changes for a certain buildconfiguration and branch and pending refers to the changes too, not the build.
var changes = new RemoteTc(c=>c.ToHost("HOST").AsGuest())
.GetChanges(c => c.BuildConfiguration(bc => bc.Id("BUILDCONFIGID"))
.IsPending().OnBranch("BRANCHNAME"));
I hope that makes some sense.