public SCMRevision GetVersion() { BuildsRootObject builds = this.GetBuilds(); if (builds == null || builds.count == 0) return null; BuildRootObject build = GetBuild(builds.build[0]); ChangeRootObject change = GetChange(build); if (change.count == 0)// no changes --> trail for build with changes { bool changesFound = false; for (int i = 1; i < builds.build.Count; i++) { build = GetBuild(builds.build[i]); change = GetChange(build); if (change.count > 0) { changesFound = true; break; } } if (!changesFound) return new SCMRevision { Revision = build.revisions.revision[0].version }; } ChangesRootObject changes = GetChanges(change); DateTime at = DateTime.ParseExact(changes.date, "yyyyMMddTHHmmsszzzz", System.Globalization.CultureInfo.InvariantCulture); SCMRevision ver = new SCMRevision { Commiter = changes.username, CommitMessage = changes.comment, CommitTime = at, CreateAt = at, Revision = changes.version }; return ver; }
public void AddVersion(SCMRevision assemblyRev, BuildServers.BuildArtifacts files) { PackageInfo = getPackageInfo(); // make sure we have actual version if (PackageInfo == null) PackageInfo = new AssemblyPackage(); string revision = assemblyRev.Revision; AssemblyArtifacts pv = PackageInfo.AddRevision(files); assemblyRev.CreateAt = DateTime.Now; byte[] revdata = assemblyRev.Serialise(); versionContainer.AddVersionData(revision + "/.revision", revdata); foreach (var artF in files.Artefacts) { versionContainer.AddVersionData(revision + "/" + artF.FileName, artF.Data); pv.AddArtefact(artF.FileName, artF); } setPackageInfo(PackageInfo);// write to container }