Hi,
Can you give me a code sample on how to promote an item in a label via API please?
Regards,
Igor.
Item promotion using API
Moderator: SourceGear
-
- Posts: 27
- Joined: Fri Jun 17, 2005 8:13 am
- Location: London, UK
This example assumes you have the label name and path, the paths of the items you want to alter, and the desired version number (if you're trying to change a version). You can skip the parts that find the various version ids, etc if you have gotten that info some other way.
Let me know if anything is unclear.
Let me know if anything is unclear.
Code: Select all
string url = "http://VaultServer/VaultService";
string username = "user";
string password = "password";
string repository = "Your Repository";
// Set the login options and login/connect to a repository.
ServerOperations.client.LoginOptions.URL = url;
ServerOperations.client.LoginOptions.User = username;
ServerOperations.client.LoginOptions.Password = password;
ServerOperations.client.LoginOptions.Repository = repository;
ServerOperations.Login();
string labelName = "label1";
string labelPath = "$/SomeJavaProject";
// get the objID for the label
long objID = RepositoryUtil.FindVaultTreeObjectAtReposOrLocalPath(labelPath).ID;
string qryToken;
long rowsRetMain;
long rowsRetRecur;
long maxRows = 200;
ServerOperations.client.ClientInstance.BeginLabelQuery(labelPath, objID, false, false, false, false, maxRows, out rowsRetMain, out rowsRetRecur, out qryToken);
VaultLabelItemX[] labelItems;
ServerOperations.client.ClientInstance.GetLabelQueryItems_Main(qryToken, 0, (int) rowsRetMain, out labelItems);
long labelID = 0;
VaultDateTime lastChanged = new VaultDateTime();
// find the right label to get the id
foreach (VaultLabelItemX item in labelItems)
{
if (item.Name.Equals(labelName))
{
labelID = item.LabelID;
lastChanged = item.LastChange;
}
}
VaultClientFile file = RepositoryUtil.FindVaultFileAtReposOrLocalPath("$/SomeJavaProject/a/SomeClass.java");
VaultObjectVersionInfo[] versions = null;
ServerOperations.client.ClientInstance.GetObjectVersionList(file.ID, ref versions, false);
long objVerID = 0;
foreach (VaultObjectVersionInfo v in versions)
{
if (v.Version == 4)
objVerID = v.ObjVerID;
}
VaultLabelPromotionItem pItemChangeVersion = new VaultLabelPromotionItem("SomeJavaProject/a/SomeClass.java", file.ID, 4, objVerID, VaultLabelPromotionChangeType.Modify);
file = RepositoryUtil.FindVaultFileAtReposOrLocalPath("$/SomeJavaProject/b/.project");
VaultLabelPromotionItem pItemAdd = new VaultLabelPromotionItem("SomeJavaProject/b/.project", file.ID, file.Version, file.ObjVerID, VaultLabelPromotionChangeType.Add);
file = RepositoryUtil.FindVaultFileAtReposOrLocalPath("$/SomeJavaProject/a/AnotherClass.java");
VaultLabelPromotionItem pItemDelete = new VaultLabelPromotionItem("SomeJavaProject/a/AnotherClass.java", file.ID, file.Version, file.ObjVerID, VaultLabelPromotionChangeType.Delete);
VaultLabelPromotionItem[] promotionItems = new VaultLabelPromotionItem[] { pItemChangeVersion, pItemAdd, pItemDelete };
int indexFailed;
string rootPathConfl;
int ret = ServerOperations.client.ClientInstance.PromoteLabelItems(labelPath, labelID, labelName, ref lastChanged, promotionItems, out indexFailed, out rootPathConfl);