Я работаю над настройкой нашей деятельности по сборке. Я хотел бы получить вашу помощь по проблеме.
Ниже приведена наша иерархия управления версиями.
Main
|- Dev
|- QA
мы работаем над веткой Dev и, принимая сборку, нам нужно объединить ветку Dev с Main, а затем с QA.
Основным является корневая ветвь, как вы, возможно, знаете.
В нашем шаблоне сборки я добавил два пользовательских действия для слияния одно с 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
. Все еще не работает.