グーグルを数時間検索した後、私の質問に対する答えが見つかりました。この投稿Undo checkout TFSが私の質問に答えていることは知っていますが、すべての質問に答えているわけではありません。投稿が尋ねたのと同じ目的を達成したい。そのファイルで何も変更されていない場合に、チェックアウトされたファイルのみを元に戻す方法は? 私の質問への答えは、答えるのが難しすぎるべきではありません。
私がやっていることは、サーバーからファイルをコピーし、ローカル ワークスペースで上書きすることです。コピーされているすべてのファイルをチェックアウトしています。ただし、コピーされたファイルが変更されていない場合 (サーバー ファイルと宛先ファイルがまったく同じ)、そのファイルのチェックアウトを取り消したいと思います。
私はworkspace.Undo()メソッドを使用することを知っており、紳士はそれが彼のために働いたと言いました。しかし、彼はそれをどのように実装したかを示しませんでした。
リンクの助けを借りて私が持っているコードは次のとおりです。
public static void CheckOutFromTFS(string filepath)
{
var workspaceInfo = Workstation.Current.GetLocalWorkspaceInfo(filepath);
if (workspaceInfo == null)
{
return;
}
var server = new TfsTeamProjectCollection(workspaceInfo.ServerUri);
var workspace = workspaceInfo.GetWorkspace(server);
workspace.PendEdit(filepath);
}
与えられた答えは、workspace.Undo() メソッドを使用することでした。このメソッドを CheckOutFromTFS() の最後の行として追加しますか?
public static void CheckOutFromTFS(string filepath)
{
var workspaceInfo = Workstation.Current.GetLocalWorkspaceInfo(filepath);
if (workspaceInfo == null)
{
return;
}
var server = new TfsTeamProjectCollection(workspaceInfo.ServerUri);
var workspace = workspaceInfo.GetWorkspace(server);
workspace.PendEdit(filepath);
workspace.Undo();
}
それとも別の方法で行われますか?この Undo() が変更がない場合にのみファイルを元に戻すのか、それともチェックアウトを完全に元に戻して PendEdit() を役に立たなくするだけなのかはわかりません。誰かが私のためにこれを明確にするのを助けることができますか?