1

自動的に作成されたTFSのブランチをプログラムで削除したい。

作業を行う必要がある既存のメソッド「ICommonStructureService.DeleteBranches」があります。私の問題は、メソッドが「vstfs://...」URIを使用して削除するブランチを指定するパラメーター「string[]nodeUris」を必要とし、ブランチでそれを取得する方法がわからないことです。

私が必要としているのは次のようなものです。

var projectCollection = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new Uri <myCollectionUrl>));
var cssService = projectCollection.GetService<ICommonStructureService3>();
var project = cssService.GetProjectFromName(<myProjectName>);

しかし、どうすればそこからブランチURIを取得できますか?

4

3 に答える 3

1

その間、私は解決策を見つけました。私が使用しているブランチを削除するため

versionControl.Destroy(new ItemSpec(myBranchPath, RecursionType.Full), VersionSpec.Latest,  null, DestroyFlags.KeepHistory);

これはまさに私が必要としていたことを行います。versionControl は VersionControlServer 型であり、Team Collection を使用して初期化する必要があります

于 2013-02-15T14:49:10.483 に答える
0

Destroy コマンドの使用について Edward Thomson に同意します。そこで私は彼のアドバイスに従い、次のように思いつきました。

public void DeleteBranch(string path)
{
    var vcs = GetVersionControlServer();
    var itemSpec = new ItemSpec(path, RecursionType.Full);
    var itemSpecs = new[] {itemSpec};
    var workSpace = GetOrCreateWorkSpace(vcs);
    try
    {
        workSpace.Map(path, @"c:\Temp\tfs");
        var request = new GetRequest(itemSpec, VersionSpec.Latest);
        workSpace.Get(request, GetOptions.GetAll | GetOptions.Overwrite);
        workSpace.PendDelete(path, RecursionType.Full);
        var pendingchanges = workSpace.GetPendingChanges(itemSpecs);
        workSpace.CheckIn(pendingchanges, "Deleting The Branch");
    }
    finally
    {
        if (workSpace != null)
        {
            workSpace.Delete();
        }
    }
}

私はそれを楽しみにしています。あまりにも多くのことを行うため、これは少し遅いです。

  • 一時ワークスペースを作成します
  • それに対するすべての変更を取得します
  • 変更セット全体に対して削除を実行します
  • チェックインします
  • ワークスペースをクリーンアップします
于 2013-04-29T15:01:02.850 に答える
0

バージョン管理でブランチを削除することは、他のバージョン管理項目を削除するのと同じです。Workspace.PendDeleteで削除を保留する必要がありItemます。

あなたが参照する方法は、バージョン管理とはまったく関係がありません。これは、 TFS 作業項目を割り当てることができる「領域と反復」を制御するTFS共通構造サービスの一部です。

つまり、共通構造サービスに対してバージョン管理操作を実行する方法はありません。Workspaceに対してを作成しVersionControlServer、削除を保留してから、保留中の変更をチェックインすることにより、ブランチを削除します。

于 2013-02-12T14:34:53.287 に答える