web-dev-qa-db-ja.com

TFS 2010で特定のChangeSetを削除するにはどうすればよいですか?

Tfs2010で特定のチェンジセットを削除するにはどうすればよいですか?

545、544、543、542のチェンジセットバージョン番号があります。

今、私はtfsでのみ特定のチェンジセット543を削除しようとしていますか?

12
Cherry

チェンジセットをロールバックする必要があります。チェンジセットを削除することはできません。 ( ロールバックコマンド

あなたの場合、単純なロールバックコマンドは次のようになります。

TF rollback /changeset:C543
15
Arin Ghazarian

TFSでチェンジセットを削除することはできません。どういうわけかできたとしても(TFSデータベースに対してSQLクエリを実行してそれを行うことができると思います)、それは良い習慣ではありません。人々がチェンジセット/履歴を削除し始めると、バージョン管理の目的全体が無効になります。他のソース管理でそれを許可しているものはほとんどないと思いますが、そうすることはお勧めしません。その悪い習慣。

また、Workitems/Test CasesなどのTFSの他の機能を使用すると、チェンジセットがリンクされるため、削除されるとリンクが孤立します(私は思います)。

Arinが言ったように、最も近い方法はRollbackコマンドを使用することですが、これを行う場合は、ロールバック後にコードをチェックインする必要があるため、基本的に古い変更セットと新しい変更セット(ロールバック)が履歴に表示されます。

9
Adarsh Shah

免責事項-決して、これを行うべきではありません。それについても考えないでください!

背景-部分的なTFS移行を実行しようとしていますが、「TFS統合」ツールを使用して最も悪意のある時間を過ごしています。最近、一連の間違ったチェンジセットを宛先TFSにダンプしました。すべてを一掃して最初から始める代わりに、TFSデータベースをうなずいて、次のことを思いつきました(TFS 2013では、TFS 2010は多かれ少なかれ似ていると思います)。

declare @ChangeSetId int = 5735

-- Delete the actual file content first
delete from tbl_Content where ResourceId in (select ResourceId from tbl_File where FileId in (select FileId from  tbl_Version where VersionFrom = @ChangeSetId))
-- Remove the file
delete from tbl_File where FileId in (select FileId from  tbl_Version where VersionFrom = @ChangeSetId)
-- Purge the version
delete from tbl_Version where VersionFrom = @ChangeSetId
-- Destroy the changeset
delete from tbl_ChangeSet where ChangeSetId = @ChangeSetId

それをするのは賢明ではありません。 Microsoftではサポートされていません。実稼働環境では使用しないでください。代わりにロールバックを使用してください!しかし、チェンジセットを一掃したい場合は、これを試すことができます。しかし、あなたが警告されなかったと私に言わないでください。

5