Как создать новую ветку исходного кода, используя TFS API?

Я пытаюсь создать новую ветку, используя API, и использовал оба PendBranch()и CreateBranch(). Проблема в CreateBranch()том, что он фиксируется немедленно, и я хочу иметь возможность добавлять комментарии, когда ветка отмечена. Итак, то, что я сделал, показано ниже.

По сути, я получаю всю информацию, такую ​​как элемент сервера и локальный элемент, для сопоставления, а также источник и цель ветви из моего приложения Windows.

Каким-то образом, когда я вижу Source Control Explorer, он по-прежнему говорит «Не отображается», хотя я дал: workspace.Get()после создания рабочей области иworkspace.Map(serverItem,localItem)

Кто-нибудь может пролить свет на это?

public void CreateNewBranch(string server,string serverItem,string localItem,string sourceBranch, string targetBranch)
    {
        int changeSetNumber = 0;
        // Get a reference to Team Foundation Server and Source Control.
        tfs = GetTFS(server);
        // Create a new workspace for the currently authenticated user.             
      workspace = tfvc.CreateWorkspace("Example Workspace", tfvc.AuthenticatedUser);
        }
        // Create a mapping to the project.
        try
        {
           workspace.Map(serverItem, localItem);

            // Get the latest source files from the repository.
            //workspace.Get();

            // Perform a pending Branch operation. 
            workspace.PendBranch(sourceBranch, targetBranch, VersionSpec.Latest);
            // Get a list of all the Pending Changes.
            PendingChange[] pendingChanges = workspace.GetPendingChanges();
            if (pendingChanges.Length > 0)
            {
                changeSetNumber = workspace.CheckIn(pendingChanges, "Comment:Branch Created");
                MessageBox.Show("Checked in changeset # " + changeSetNumber);
            }
        }
        catch (Exception e)
        {
            MessageBox.Show(e.Message);
        }
        finally
        {
            // Cleanup the workspace.
            workspace.Delete();
        }
    }
13.10.2009 09:43:02
1 ОТВЕТ
РЕШЕНИЕ

В TFS changeset комментарии фактически доступны для редактирования. Поэтому вы можете попробовать что-то вроде следующего, в котором используется метод CreateBranch, представленный в VS2008 / TFS2008 SP1:

public void CreateBranchWithComment(
    string serverUrl, 
    string sourcePath, 
    string targetPath, 
    string comment)
{
    TeamFoundationServer tfs = new TeamFoundationServer(serverUrl);
    VersionControlServer vcServer = 
        (VersionControlServer)tfs.GetService(typeof(VersionControlServer));

    int changesetId = vcServer.CreateBranch(
        sourcePath, 
        targetPath, 
        VersionSpec.Latest);

    Changeset changeset = vcServer.GetChangeset(changesetId);
    changeset.Comment = comment;
    changeset.Update();

}
5
2.12.2014 15:58:30
Как сказано: новая ветка не загружается на ваш локальный диск до тех пор, пока вы не создадите рабочую область для ее использования, а затем попросите TFS фактически выполнить загрузку. Отказ от таких дополнительных шагов - вот почему решение Martin проще и быстрее. Конечно, если вам нужна локальная копия, их не обойти.
Richard Berg 14.10.2009 05:53:41