1

Subversion の不適切な使用が原因で発生した問題のトラブルシューティングを依頼されています (私の知る限り)。

これは、時間の経過、ユーザーの混乱などによって損なわれた歴史ですが、私が把握できる最高のものです。意図された目標は、特定の時点でファイル セットをアーカイブすることでした (基本的にリポジトリにタグを付けるためですが、ユーザーはこれを知りませんでした)。

  • ユーザーは作業ディレクトリをチェックアウトしています
  • タグを作成する代わりに、ユーザーは UNIX コピー コマンド (SVN の移動や SVN のコピーではない) を使用してファイルを作業コピー内のサブ フォルダーにコピーしました。
    • たとえば、作業コピーは /var/tmp/working で、ファイルを var/tmp/working/todays_date にコピーしました
  • ユーザーは、いくつかの .svn ディレクトリがこの新しいディレクトリにないことに気付いたので、.svn フォルダーを別のディレクトリ (場所がわからない) から「タグ」付きのディレクトリにコピーしました。

これはそれを修正する最良の方法ですか?

私は次のことを試してみようと考えています:

  • 間違ったサブディレクトリにあるすべての .svn フォルダを再帰的に削除します
  • ディレクトリをリポジトリからローカルにコピーします
  • 最後のコミットの前に作業ディレクトリをチェックアウトする
  • 新しい作業ディレクトリのファイルを「エクスポートされた」ファイルで上書きします
  • 通常の更新/コミットプロセスを実行します
  • タグを作成する

これは理にかなっていますか、それとも私は他の問題に心を開いていますか?

その他の質問

  • このユーザーが二度と同じことをしないように教育する最善の方法は何ですか?

更新: 詳細情報

ユーザーから次の情報を入手しました。

  • 私は作業を行い、svn add を試みました。
  • 次に、svn commit を実行すると、いくつかのエラーが発生しました。
  • その時点で.svnファイルを移動し、最終的にsvnの追加とコミットをエラーなしで実行しました
  • ただし、svn log にはコミットのログ メッセージは表示されません。

そのため、ユーザーがコミットを機能させようとして .svn フォルダーをコピーしたように見えます。その後、追加してコミットしたようです。

4

3 に答える 3

1

ルート svn フォルダーを更新するだけです。削除された(移動された)ファイルが復元され、インデックスが作成されていない他のファイルは変更されません。

次に、svn delete コマンドを使用してクリーニングするか、svn move または svn copy を実行できます。ただし、これを行うと、新しい「まだインデックスが作成されていないファイル」と変更が失われます。おそらく、svn delete の方が簡単です (ただし、新しいファイルが別のファイルからの移動であることを svn が認識できないため、履歴は失われます)。

于 2012-11-13T22:33:44.307 に答える
0

私が見るように、あなたは2つのタスクを解決する必要があります

  • トランク内のサブディレクトリ周辺の不正なコミットを元に戻す
  • ユーザーのトイレを復元する

はい?

  1. 間違ったコミットの逆マージを使用して新しいコミットでコミットを元に戻す
  2. ユーザーの作業コピーをこのコミットに更新します
于 2012-11-14T04:21:35.983 に答える
0

そのため、グループと協議した後、問題を解決するために次のことを行うことができました。

  • フォルダをバックアップしました
  • rsync を使用して、.svn フォルダーのないフォルダー構造のクリーン コピーを作成しました。

rsync -avr --exclude='.svn*' /オリジナルディレクトリ /クリーンディレクトリ

  • 作業コピーを更新しました
    • このユーザーの変更が構造のこの部分で重要な唯一のものであることを事前に確認した
  • ユーザーのローカル作業コピー ファイルを優先して競合を解決しました。
  • 間違ったディレクトリ構造を見つけるためにコミットしようとしました
  • これらのツリーをファイル構造から削除し、リポジトリを再更新して再度プルダウンしました
  • 適切な措置として、すべてのファイルの内容をクリーンなファイルで上書きして、それらが最新であることを確認してください
  • 構造内のすべてのファイルを強制的に追加しました。
  • 関与する。
  • 終了時にタグを作成しました。

言うまでもなく、すぐに Subversion のベスト プラクティスについて説明します。ポインタをありがとう、すべて!

于 2012-12-03T13:39:25.350 に答える