2009-10-13 3 views
1

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

В основном я получаю всю информацию, такую ​​как элемент сервера и локальный элемент, который будет отображаться, а также источник и цель ветки из моего приложения 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(); 
     } 
    } 

ответ

4

В комментариях к изменениям TFS на самом деле доступны для редактирования. Таким образом, вы можете попробовать что-то вроде следующего, что делает использование метода 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(); 

} 
+0

Так же, как он говорит - новый филиал не загружается на локальный диск, пока вы не создадите рабочую область для чтобы жить, а затем попросите TFS выполнить загрузку. Опуская дополнительные шаги, подобные этим, почему решение Мартина проще и быстрее. Конечно, если вам нужна локальная копия, их не обойти. –

Смежные вопросы