0

私は問題を抱えていました。それは、10年にわたる大規模なsvn履歴内で特定のタイプ(* .xxx)のファイルを検索する必要があるということです。私はsvnの仕組みにあまり精通していません。最初は、履歴の深さではなく、現在の状態内のすべてのリポジトリを検索するだけで十分です。TortoiseSVN Repobrowserは、通常のファイルブラウザーのように、現在の状態でファイルを表示できるため、このようなことが可能になると思います。同じ問題に関する他のさまざまなQ&Aスレッドを見つけましたが、それらはすべてsvnサーバーへのアクセスを想定しているようです。

また、これらのスレッドで参照されているツールをいくつか試しましたが、どれも私のニーズに合わないようです。たとえば、「SvnQuery1.2.2.0」および「SVNSearch1.3.0。」です。どちらも、SVNリポジトリへのローカルパスを指定する必要があります。しかし、リポジトリはサーバーに存在し、クライアントは作業コピーを取得したと思いましたか?!しかし、私は間違っているかもしれません...

もう1つの(二次的な)質問は次のとおりです。1年前の履歴について、特定のユーザーのすべてのチェックイン/コミットを表示することは可能ですか?(これもクライアントアクセスだけです。)現時点では、次のコマンドを実行するだけです。

TortoiseProc.exe /command:log /path:"https://svn:9880/SvnRoot"

この後、探しているものが見つかるまで「次へ100」ボタンを押します。または私の指が腐ります。

誰かが私を助けることができますか?

敬具、

マイケル

4

3 に答える 3

0

私の(同様の)質問への回答を参照してください。これは、-lスイッチを使用してログをダンプする方法(デフォルトの100を超える値を取得するため)とsvnquery: どこにあるかわからないときにSVNリポジトリでファイルを検索する方法を示しています私はそれを置きます?

于 2013-01-29T14:35:47.277 に答える
0

コマンドラインクライアントとPowerShellを使用している場合は、次の手順を実行して、特定のユーザーのすべてのログエントリを取得できます。

[xml]$log = svn log --xml --verbose https://svn:9880/SvnRoot/;
$log.log.logentry|where-object {$_.author -eq "USERNAME"};

ワンライナーにする方法はあると思いますが、今は来ていません。

リビジョンの範囲または日付を制限する場合は、svnlogのヘルプを参照してください

于 2013-01-30T14:02:31.413 に答える
0

履歴の深さではなく、現在の状態内のすべてのリポジトリを検索するだけで十分です。

探しているコマンドはですsvn ls -R %REPO%。これにより、リポジトリ内のすべてのファイルと、-R再帰的に手段が一覧表示されます。そこから、サフィックスを使用して、関心のあるリポジトリ内のファイルのみを除外できます。

1年前の履歴について、特定のユーザーのすべてのチェックイン/コミットを表示することは可能ですか?(これもクライアントアクセスだけです。

探しているコマンドはsvn log -r{20120130}`:HEAD%REPO%です。これにより、2012年1月30日から今日までのすべての履歴が一覧表示されます。

そこから、特定のユーザーのログ全体を除外できます。

Subversionを初めて使用する場合は、オンラインのSubversionマニュアルを確認してください。これは、私が見た中で最高のオープンソースプロジェクトマニュアルの1つです。また、コマンドラインのSubversionツールには多くのヘルプが組み込まれています。

$ svn help
usage: svn <subcommand> [options] [args]
Subversion command-line client, version 1.7.5.
Type 'svn help <subcommand>' for help on a specific subcommand.
Type 'svn --version' to see the program version and RA modules
 or 'svn --version --quiet' to see just the version number.

Most subcommands take file and/or directory arguments, recursing
on the directories.  If no arguments are supplied to such a
command, it recurses on the current directory (inclusive) by default.

Available subcommands:
   add
   blame (praise, annotate, ann)
   cat
   changelist (cl)
   checkout (co)
   cleanup
   commit (ci)
   ...

そこから、特定のコマンドのヘルプを取得できます。これらのいずれかが機能します。

$ svn help checkout
$ svn checkout --help

TortoiseSVNには、Subversionコマンドラインクライアントが付属しています。チェックC:\Program Files\TortoiseSVN\bin(またはTortoiseSVNがシステムにインストールされている場所)。PATHsvnを実行するように正しく設定されていると思います。

PCでPowerShellを使用するか、PythonまたはPerlをダウンロードできます。これらの言語を使用すると、さまざまなコマンドからのコマンドライン出力をより適切に操作できますsvn。PerlとPythonには、APIを介してSubversionに直接アクセスするSubversionモジュールがあります。

ただし、ほとんどのSubversionレポートにはBASHシェルとUnixユーティリティを使用する傾向があります。これは、通常、コマンドラインから大騒ぎせずに直接実行できるためです。Unixユーティリティに精通していて、PCを使用している場合は、BASHシェルとほとんどの標準的なUnix/GNUユーティリティを提供するCygwinを試してください。

于 2013-01-30T15:20:12.713 に答える