私の同僚の 1 人が、メインの CVS リポジトリのディレクトリの内容を完全にめちゃくちゃにしてしまいました。モジュール全体を昨年末の状態に戻す必要があります。これを行うための CVS コマンドは何ですか?
彼は何百ものファイルを追加および削除したため、単純な「古いチェックアウトからファイルをコピーしてコミットする」だけでは十分ではありません。
私はRTFMとSTFWを持っていて、これを試しました:
cvs co modulename # Note no -P option
cvs up -jHEAD -jMAIN:2008-12-30 modulename
しかし、それはうまくいきません。彼が作成した新しいファイルは削除されますが、古いファイルとディレクトリは復活しません。(私はそれをコミットしませんでした)。
おそらくこれ用のシェル スクリプトを作成できますが、この機能は既に CVS に組み込まれているに違いありません。
更新: いくつかの説明:
特定の日付にモジュールのローカル チェックアウトを取得できます。問題は、それを CVS に戻す方法です。
バックアップはありますが、CVS のようなリビジョン管理システムを使用するポイントは、履歴状態を簡単に取得できるはずだということです。次回このようなことが起こった場合、幸運にもバックアップを取得できない可能性があります (たとえば、バックアップは毎日行われるため、最大で 1 日分の作業が失われる可能性があります)。
CVS が古いことはわかっています。新しいものに移行する必要があります。しかし、多数の CVS ベースのツール (チェックアウト & ビルド スクリプト、ナイトリー ビルド サーバーなど) を持つ大規模なチームでは、このような移動にかかる時間コストは相当なものです。(評価、スクリプトの更新、テスト、移行、トレーニング、開発者の時間の損失、古いブランチには CVS がまだ必要であるため、両方のシステムを並行して維持すること)。したがって、これは管理者が計画およびスケジュールする必要があります。
更新 #2: これについて報奨金を開始します。 報奨金の資格を得るには、ハッキーなシェル スクリプトではなく、通常の CVS コマンドを使用して元に戻す方法を説明する必要があります。
更新 #3: サーバーはCVS 1.12.13です。アクセスは pserver 経由です。Linux PC で同じバージョンの CVS を使用することも、 Windows でCVSNT 2.0.51dクライアントを使用することもできます。