TFSのファイルが他の人によってロックされている場合はどうしますか?
-
06-07-2019 - |
質問
誰かが組織を去りましたが、去る前に、彼は未知の理由ですべてのファイルをロックしました。
他の開発者が作業できるように、すべてのロックを解除するにはどうすればよいですか
解決
次の操作では、チェックインを取り消すプロジェクトのプロジェクト管理者か、すべてのプロジェクトでこれを行う場合はTeam Foundation管理者のいずれかである必要があります。
そのユーザーのユーザー名がまだある場合は、次のようにすることができます。
- Visual Studioコマンドプロンプトを開きます(スタート-<!> gt;プログラム-<!> gt; Microsoft Visual Studio 200X-<!> gt; Visual Studio Tools-<!> gt; Visual Studio 200X Command Prompt)
- 次のコマンドを実行します。
tf lock / lock:none / workspace:WorkspaceName; USERNAME / recursive $ /
ユーザーのワークスペースのリストを取得するには、同じプロンプトから次のコマンドを実行します。
tf workspaces / owner:username
その他のコマンドについては、 tf /?
をチェックしてください他のヒント
開発者が組織を離れた場合、最善の方法はワークスペースを削除することです。これにより、ファイルのロックが解除されますが、サーバー上のリソースも解放されます。
数年前に私がこの問題に遭遇したときに私が行った次のブログ投稿を参照してください。
http://www.woodwardweb.com/vsts/unlocking_files.html
コマンドライン(tf.exe)を使用してワークスペースを削除するか、優れたを使用できます。 AttriceのTFS Sidekicks 。
これは、ユーザーのワークスペースの削除を伴う、これを解決した唯一の方法でした:
http://2toad.com/Blog/ 2012/1/27 / how-to-manage-tfs-workspaces
エラーメッセージに<!> quot;と表示されている場合、アイテム$ / ...はワークスペースsomeMachine123。<!> quotのsomeUser:1によってチェックアウトのためにロックされています。次のコマンドを使用します:
tf workspace /delete /server:http://machinename:8080/tfs/DefaultCollection someMachine123;someUser:1
コレクションURLとsomeMachine123;someUser:1
の間にスペースが1つだけあります。
エラーメッセージにユーザーがsomeUser:1
と記載されていることに注意しているため、コマンドではそれを模倣していることに注意してください。 someUser
のみでコマンドを実行するだけでは不十分でした。 :1の意味がわからないが、ポイントであること、エラーメッセージを模倣すること。
サーバーは完全修飾コレクションパスである必要があることに注意してください。これは、Team Foundation Server管理コンソール-<!> gt;アプリケーション層-<!> gt;チームプロジェクトコレクションに移動すると見つけることができます。上部ペインで選択されているコレクションのURL。
同様のコマンドが複数あるので、誤ってworkspaces
の代わりに複数のworkspace
を使用しようとしたため、問題が発生しました。
最初にこれを行う権利が必要です。最も簡単な方法は、attrice http://www.attrice.info/のTFSサイドキックを使用することです。 cm / tfs /
/ collection:collectionURLを追加する必要がありました。追加しないと、ワークスペースが見つかりませんでした:
- リストアイテム
tf loc / lock:none / workspace:WorkspaceName; UserName / collection:collectionURL
ここに TFSアクセス許可の使用の説明があります。
<!> quot;他のユーザーの変更のロック解除<!> quot; 許可に設定された許可は 別のユーザーが保持しているロックを削除します。
システム管理者にそのユーザーパスワードをリセットさせ、そのユーザーとしてログオンし、すべてのファイルのロックを解除します...
これは、ほとんどすべての「この組織に参加していない人」の質問に対する解決策だと思います...
そのユーザーのワークスペースをサーバーから削除することをお勧めします。例
tf workspace / delete / server:your_tfs_server workspace; username
これは別のユーザーによってロックされている完全に異なるアプリケーションの別の問題を隠していることがありますが、マージする新しいプロジェクトの新しいフォルダーを作成することさえできません(ターゲットは作成を許可せず、誰かが自分の名前でファイルをロックしています)が、さらに深く掘り下げると、別のプロジェクトが犯人です。
したがって、完全に異なるプロジェクトが、他の誰かによってファイルがロックされているという問題になる可能性があります。
私のために働いた方法、私のアカウントには TFS およびプロジェクトの管理者権限があります:
Visual Studio 2015の場合:
- チームエクスプローラーに移動
- ソリューションを右クリックして、[ソース管理で開く]を選択します exporer
- 左側でソリューションを右クリック
- 詳細設定 を選択します
- ロック... を選択
- 左側でソリューションを右クリック
- 詳細設定 を選択します
- [ロック解除]を選択します(ロック解除を選択できるようになりました)
今、すべての開発者は自分の変更を簡単にコミットできます:)
このソリューションを最後の手段として使用。
I <!>#8217; m TFS 2012を使用しています。TFSデータベースにアクセスして、次のクエリを実行しました。そしてうまくいきました! もちろん、データベースをいじったり、バックアップをとるときなどは非常に注意してください。
データベースの名前は Tfs _ <!> lt; <!> lt; your_TFS_collection_name <!> gt; <!> gt; です。 Tfs_Configuration MSSQLデータベースを無視します。よくわかりませんが、 Tfs _ <!> lt; <!> lt; your_TFS_collection_name <!> gt; <!> gt; データベースがない場合、設定は< em> Tfs_DefaultCollection データベース。ロックは tbl_PendingChange.LockStatus に保存されます。
/*Find correct row*/
SELECT LockStatus, PendingChangeId, *
FROM tbl_PendingChange
WHERE TargetServerItem like '%<<fileName>>%'
/*Set lock status to NULL (mine was set to 2 initially)*/
UPDATE tbl_PendingChange SET LockStatus = NULL WHERE
TargetServerItem like '%<fileName>>%'
AND PendingChangeId = <<PendingChangeId from above>>