largeリモートSVNリポジトリにアクセスします。通常、コンテンツのごく一部しか必要ないため、「スパースチェックアウト」を行いました。
svn checkout --depth empty svn+ssh://... src
リポジトリからフォルダが必要なときはいつでもできる
svn up folder
もう必要ないときは
svn up --set-depth exclude folder
しかし、今ではリポジトリ内のファイルの完全なリストallが必要であり、ファイルとフォルダを取得するためだけに完全なチェックアウトを行いたくない名前。
私はすでにsvn ls -R
を試しましたが、これは実際にチェックアウトしていないいくつかのファイルをリストしますが、それでもいくつか欠落しています。現在のディレクトリ内のすべてを表示するためです。これで、新しく見つかったすべてのディレクトリに対してsvn ls
とsvn up --depth empty
を半手動で実行できましたが、もっと良い代替手段があるかどうか疑問に思います。
とは対照的に、リポジトリにコミットされたすべてのファイルを一覧表示するにはどうすればよいですか? リポジトリの現在のコンテンツにのみ興味があり、svnadmin
。リポジトリサーバーにソフトウェアをインストールすることもできません。
これにより、すべてのファイルが再帰的にリストされます。
svn ls -R URL-OF-REPO
svn list --recursive https://myrespository.my.com/Myproject
私が試みたように、それは現在およびすべてのサブディレクトリで機能すると思います。これには、すべてのブランチとタグ、およびそれらのすべてのサブディレクトリとファイルもリストされます。
私のユーティリティ fast-svn-crawler を試すことができます。これは--svn list --recursiveよりも ずっと速い です。
$ svn-crawler https://myrespository.my.com/Myproject
URLなし
svn list --recursive -r HEAD
フォルダーではなく、すべてのファイルの完全なリストを取得する場合は、svn listおよび次のようなgrepコマンド:
svn list -R svn://url/to/your/main/folder/on/repo | grep '[^\/]$'
リストされたフォルダへのパス
svn list -R svn:// url/to/your/main/folder/on/repo
常に「/」で終わりますが、ファイルパスは終わりません。出力は、入力として渡されます
grep '[^\/] $'
これは、末尾 "/"を持つすべてのパスを除外します。残りのパスはファイルにのみ関連しています。
例:myrepoという名前のリポジトリがあるとしますmy.svnserver.comドメインとして、myrepoのサブディレクトリにリストされているすべてのファイルを取得したい、つまりmysubdir:コマンドは
svn list -R svn://my.svnserver.com/myrepo/mysubdir | grep '[^\/]$'
また、結果をwc -lコマンド(各出力行にはパスが1つだけ含まれているため、改行の数を出力する)コマンドにパイプすると、次のことができます。次のように、mysubdirの下にあるすべてのファイルの数を取得します
svn list -R svn://my.svnserver.com/myrepo/mysubdir | grep '[^\/]$' | wc -l