Tfs TeamFoundation 2008 SDK-如何以编程方式获取所有变更集的列表?
我试图实现的是编写一个任务,该任务将列出与构建相关联的所有变更集,并从该列表中编写一个变更日志文件 在使用默认团队构建定义时,我使用“informationNodeConverters.GetAssociatedChangesets”方法以编程方式获取与构建关联的变更集列表,但是在我们的团队构建中,我们跳过了CoreLabel目标,因为我们不希望每次新构建时都有一个新标签 当我们跳过“CoreLabel”目标时,“CoreGetChangesetsAndUpdateWorkItems”目标将不会将任何变更集与构建相关联,因为此目标需要标签才能正常工作,“GetAssociatedChangesets”方法将不返回任何变更集 我在文档中搜索了是否有办法列出版本源中的所有变更集,这样我就可以找到特定文件夹中包含项目的所有变更集,并使用这些变更集创建我的文件,但我什么也找不到。我知道这是可行的,因为Team Foundation Server Power工具2008有一个类似的功能,允许您在一些文件夹中找到变更集。 有人能帮我找出如何从版本控制中获取所有变更集吗 提前感谢。我发现“VersionControlServer”类的“QueryHistory”方法起到了作用Tfs TeamFoundation 2008 SDK-如何以编程方式获取所有变更集的列表?,tfs,sdk,Tfs,Sdk,我试图实现的是编写一个任务,该任务将列出与构建相关联的所有变更集,并从该列表中编写一个变更日志文件 在使用默认团队构建定义时,我使用“informationNodeConverters.GetAssociatedChangesets”方法以编程方式获取与构建关联的变更集列表,但是在我们的团队构建中,我们跳过了CoreLabel目标,因为我们不希望每次新构建时都有一个新标签 当我们跳过“CoreLabel”目标时,“CoreGetChangesetsAndUpdateWorkItems”目标将不会
System.Collections.IEnumerable changesets = vcs.QueryHistory("$/" ,
VersionSpec.Latest,
0,
RecursionType.Full,
null,
new ChangesetVersionSpec(1),
VersionSpec.Latest,
int.MaxValue,
true,
false);
此方法的第一个参数可以是源代码管理中要检索变更集的任何文件夹。我们也可以使用日期和变更集而不是标签:
public static void main(String[] args)
{
Credentials cred=new UsernamePasswordCredentials("username","password") ;
TFSTeamProjectCollection tpc =new TFSTeamProjectCollection(URIUtils.newURI("Application_Collection_url")
, cred);
WorkItemClient workItemClient = tpc.getWorkItemClient();
Changeset[] chngset=null;
LabelSpec lable=new LabelSpec("tfs_start_Label", null);
LabelSpec lable1=new LabelSpec("tfs_end_label", null);
try {
chngset = tpc.getVersionControlClient().queryHistory("$project_directory", LatestVersionSpec.INSTANCE, 0,
RecursionType.FULL, null,new LabelVersionSpec(lable1), new LabelVersionSpec(lable), Integer.MAX_VALUE, true, true, false, true);
} catch (ServerPathFormatException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
for(Changeset ch : chngset)
{
System.out.println("Change Set ID : "+ ch.getChangesetID());
System.out.println("Owner : "+ ch.getOwner());
Change changes[]=ch.getChanges();
System.out.println("Date : "+ new Date(ch.getDate().getTimeInMillis()));
for(Change chang:changes)
{
System.out.println(chang.getItem().getServerItem());;
//System.out.println("Owner : "+ chang.getItem().getItemType().toString());
}
}
}
我们也可以使用日期和变更集来代替标签。