我正在开发一个项目来扩展我部门的TFS功能。基本上我们有两个存储库(团队项目集合),一个开发一个和一个生产一个。我们的开发人员使用开发项目,生产项目是我们想要存储代码副本的地方。我做了一些研究,似乎这是一个经常被要求,从未提出过请求,所以我决定写一个定制的应用程序。
在我的应用程序中,代码(以及其他内容)执行以下操作
现在一切正常 - 无论如何,第一次,因为所有文件都标记为Add并因此成功签入。然而,随后的时间它不能正常工作,因为它只找到已更改的文件。我意识到这是设计的,但我想要做的是建立代码的基线 - 每个基线(变更集)包含项目中的所有文件,无论它们是否已经改变。例如,如果项目中有52个文件,那么当我点击获取此版本时,我希望下载52个文件。
我意识到TFS正在按照设计执行,但我想知道无论如何我都可以强迫它做我想做的事情。作为参考,我的签到代码如下:
// create a workspace on my production server
wSpace = vcsProdServer.CreateWorkspace(cWsMapping);
wSpace.Map(pProjectName, combinedPath);
wSpace.Get();
string files = pProjectName + "/*";
int pendingAdd = wSpace.PendAdd(files, true);
int pendingEdit = wSpace.PendEdit(files, RecursionType.Full);
// get the pending changes
PendingChange[] changes = wSpace.GetPendingChanges();
// check in the changes
wSpace.CheckIn(changes, string.Format(checkinMessage, pProjectName, DateTime.Now));
pProjectName是指TFS中的项目(例如$ / MyProject),combinedPath是下载最新版本代码的本地路径。
答案 0 :(得分:0)
是的,我认为如果有人有兴趣,我已经修好了。问题是因为我在每个进程结束时删除了wSpace,这意味着编辑或删除的文件没有被提取。它不是我完成它的理想解决方案,但似乎有效。
工作区的更新代码为:
// create a workspace on my production server
try
{
wSpace = vcsProdServer.GetWorkspace(cWsMapping, vcsProdServer.AuthorizedUser);
}
catch
{
wSpace = vcsProdServer.CreateWorkspace(cWsMapping);
wSpace.Map(pProjectName, combinedPath);
}
wSpace.Get();
现在,当我获取应用于变更集的标签时,我得到了所有记录。