2

ソース管理は素晴らしいです。優れた機能の1つは、何かが混乱した場合に以前のリビジョンに戻ることができることを知っていることです。

ただし、不要になったコードの大規模なバッチを削除することを嫌がりますが、将来的にはその一部を使用したいと思うかもしれません。現在のコードベースでは実際にはビジネスがありません。ただし、改訂履歴を調べて見つける簡単な方法がないため、削除するのは好きではありません。私はよくそれを切り取って貼り付け、「未使用」や「tmp」などのわかりやすい名前のファイルに入れますが、しばらくそこに留まります。

この問題は、リポジトリの履歴を参照したり、過去のコードを検索したりするための優れた方法があれば解決されます。これを可能にするGUI、または使用できる使いやすいプロセスはありますか?TortoiseSVNでこれを行う方法はありますか?今のところ、私が知っている唯一のアプローチは、さまざまなリビジョン番号をチェックアウトして、必要なファイルがそこにあるかどうかを確認することです。

4

3 に答える 3

4

私がやりたいのは、「Codebase_before_removing_such_and_such_function」というタグを追加することです。次に、TortoiseSVNのリポジトリブラウザに移動し、そのタグにアクセスして、そのタグを掘り下げて古いファイルを見つけることができます。そのファイルをクリックして[開く]を選択すると、そのファイルのコードが表示されます。

HEADを指すのではなく、特定のリビジョンを指すようにリポジトリブラウザを変更することによっても同じことができます(そして、もう一度、必要な特定のファイルを参照して開きます)が、タグを意味のあるものにすることができるため、タグ付けが簡単です名前。

于 2010-06-24T15:41:40.590 に答える
0

Tortoise SVNの変更を表示することで、これを行うことができます...ただし...

私は個人的にMercurialが好きです。

グループで作業しているときは、好きなだけローカルでコミットできます。その後、グループソリューションにコミットしようとするときは、すべてをマージできます。このように、マージ中に何が起こっても、全員がハードドライブにリポジトリをバックアップしているため、データが失われることはなく、マージ前のバージョンはグループリポジトリで利用できます。また、グループリポジトリにプッシュするまで他の誰にも表示されないため、変更が機能するかどうかに関係なく、変更を加えるたびにコミットできることも意味します。コミットにかなり長いコメントを追加するのが好きです。これは、正しいバージョンを検索する必要がまったくないことを意味します。

Tortoise(私が職場で使用している)とは少し異なりますが、私に関する限り、間違いなく優れています。

于 2010-06-24T15:42:03.607 に答える
0

-v(詳細、変更されたパスを表示)および--xmlオプションを指定してsvnコマンドラインを使用し、結果をXMLStarletにパイプすることができます。これにより、削除されたアクションでフィルタリングし、ファイルが削除されたリビジョンを表示できます(grepをパイプ処理して、探しているファイルを取得できます)。

例:

svn log -v --xml /path/to/repo | xml sel -T -t -m "//logentry/paths/path[@action='D']" -v "concat(../../@revision,': ',.)" -n

サンプル出力:

103: /foo/deprecated.h
99: /foo/bar/badfile.hpp

明らかに、svn logを使用すると、リビジョンの範囲(-r M:N)、日付の範囲(-r {date1}:{date2})、または最後のN個のリビジョン(-l C)に制限できます。

唯一の欠点は、SVNの移動が実際にはコピーと削除であるため、誤検知です。

削除されたリビジョンがわかったら、svncatまたはsvnexportを使用ファイルを確認できます。

svn cat /path/to/repo/foo/deprecated.h@102

deprecated.hはr103で削除されたので、r102に存在していたdeprecated.hへのパスを取得するようにsvnに指示しました(削除前)。

于 2010-06-24T16:28:56.313 に答える