我正在定制我们的构建活动。我想帮你解决一个问题。
以下是我们的版本控制层次结构。
Main
|- Dev
|- QA
我们正在开发Dev分支,在进行构建时,我们需要将Dev分支合并到Main然后合并到QA。 您可能知道Main是根分支。
在我们的构建模板中,我添加了两个自定义活动,将一个从Dev合并到Main,另一个从Main合并到QA。以下是自定义活动的代码。
protected override string Execute(CodeActivityContext context)
{
string lstrStatus = string.Empty;
string lstrSourceBranchPath = context.GetValue(this.SourceBranchPath);
string lstrTargetBranchPath = context.GetValue(this.TargetBranchPath);
// Obtain the runtime value of the input arguments
Workspace workspace = context.GetValue(this.Workspace);
GetStatus status = workspace.Merge(lstrSourceBranchPath,
lstrTargetBranchPath,
null,
null,
LockLevel.None,
RecursionType.Full,
MergeOptions.None);
// resolve the conflicts, if any
if (status.NumConflicts > 0)
{
Conflict[] conflicts = workspace.QueryConflicts(new string[]
{ lstrTargetBranchPath }, true);
foreach (Conflict conflict in conflicts)
{
conflict.Resolution = Resolution.AcceptTheirs;
workspace.ResolveConflict(conflict);
}
}
// checkin the changes
PendingChange[] pendingChanges = workspace.GetPendingChanges();
if (pendingChanges != null && pendingChanges.Length > 0)
{
workspace.CheckIn(pendingChanges, "Merged by MERGE BRANCHES activity");
}
return lstrStatus;
}
问题是,合并在服务器中完美发生。但是,它没有反映在本地文件夹中。我尝试在每个SyncWorkspace activity
之后添加Merge custom activity
。仍然没有工作。
答案 0 :(得分:0)
我的猜测是SyncWorkspace
应该是唯一要做的事情
您可以尝试在此之前执行RevertWorkspace
。
修改强>
在您现在声明即使这不起作用之后,我也会产生一个针对MS的错误,至少要获得正式答案
同时你可以尝试使用以下方法,我绝对认为这是一种矫枉过正:一旦你签到,重做序列Initialize Workspace
内的所有步骤。
如果即使这样也行不通,我会考虑两种不同的构建方式,一种用于合并和构建的构建方式。一个做实际构建的人。然后,您可以组织一个方案,其中第一次构建一旦完成,就会触发第二个构建。 Here是一个很好的资源。