hermapi

This WordPress.com site is the cat’s pajamas

Azure DevOps に誤ってチェックインしたデータを削除したい

保留中の変更をチェックインする際に不要なデータの除外をうっかり忘れた

※TeamFoundation で管理中のプロジェクトでやらかした想定です

バージョン管理から根こそぎデータの存在を消し飛ばしたい

データサイズが巨大とか、残しておきたくないとか、その文字列アップしたらヤバイやろとか色々なシチュエーションは考えられ。

実際は何度か遭遇したことがあったけれど、追ってデータ削除状態で上書きでしのいでいました。今回はそういうわけにもいかなく。

どうやって削除するかをネット情報彷徨いましたがなかなか見つからなかったので、うまくいった方法をまとめておきましょう。そうしましょう。

削除手順

VisualStudio のバージョン管理でやっておくこと

  1. 削除状態を上書きチェックインして、最新状態にはそのデータの存在がないようにする
  2. ソース管理エクスプローラで、接続しているサーバのURLを確認
    [組織名].visualstudio.com\[組織名]
    みたいな感じになっていると思われ
  3. 同じくソース管理フォルダーのパス表記も確認
    $/[プロジェクト名]
    みたいになっているはず

コマンドプロンプトでやること

スタートメニューから VisualStudio 2019 のフォルダを探して Developer Command Prompt for VS 2019 を起動する

※コマンドプロンプトとか PowerShell とか、VS のコマンドウィンドウとかではない

**********************************************************************
** Visual Studio 2019 Developer Command Prompt v16.0.3
** Copyright (c) 2019 Microsoft Corporation **********************************************************************

tf vc help 等のコマンドが動作するか確認する

C:\Program Files (x86)… > tf vc help

こんな感じのがでてきたら動作OK

Microsoft (R) TF – Team Foundation バージョン管理ツール、バージョン 16.133.28815.1
Copyright (C) Microsoft Corporation. All rights reserved.

tf vc dir /collection:[サーバURL] でプロジェクト一覧を出してみる

C:\Progr… > tf vc dir /collection:aaaa.visualstudio.com\aaaa

$/:
$project1
$project2

/recursive オプションを付けると再帰的一覧が表示できる

C:\Progr… > tf vc dir /collection:aaaa.visualstudio.com\aaaa /recursive

$/:
$project1
$project2

$/project1:
$test
test.sln
test.vssscc


$/project2:
$testA
testA.sln

これを元に削除したいデータのパスを手繰る
tf vc dir [$/ディレクトリパス名/サブディレクトリ]

/deleted オプションで削除済みも一覧に表示されるようになる
※削除項目は 末尾に;X000 のような削除マーカが記載される

C:\Progr… > tf vc dir $/project1 /collection:aaaa.visualstudio.com\aaaa /deleted

/$project1:
$test
$test2;X125
test.sln
test.vssscc

破棄したいディレクトリを特定できたら、 destory コマンドを実行する

/preview オプションで破棄対象の一覧が表示できる(破棄は実行されない)

tf vc destory [特定したディレクトリパス] /preview

C:\Progr… > tf vc destory $/project1/test2 /collection:aaaa.visualstudio.com\aaaa /preview

破棄: $/project1/test2;X159
破棄: $/project1/test2/test2.csproj;X159

破棄対象のデータに問題がないことを確認できたら /preview オプションなしで実行

C:\Progr… > tf vc destory $/project1/test2 /collection:aaaa.visualstudio.com\aaaa

$/project1/test2 およびそのすべての子を破棄しますか? (Yes/No)

確認が来るので

yes

で継続

破棄: $/project1/test2;X159
破棄: $/project1/test2/test2.csproj;X159

これで、データが完全にファイル管理から消える

確認

Azure DevOps に接続して、レポジトリのファイル、チェンジセットで
指定したデータの存在が消し飛んでいることを確認する

参考URL

Destroy コマンド
https://docs.microsoft.com/ja-jp/previous-versions/visualstudio/visual-studio-2010/bb386005(v=vs.100)

【TFS】 Team Foundation Server に巨大ファイルをチェックインしてしまったときの対処
https://tech.d-itlab.co.jp/programming/352/

コメントを残す