web-dev-qa-db-ja.com

リモートSVNリポジトリ内のすべてのファイルをリストする方法は?

largeリモートSVNリポジトリにアクセスします。通常、コンテンツのごく一部しか必要ないため、「スパースチェックアウト」を行いました。

svn checkout --depth empty svn+ssh://... src

リポジトリからフォルダが必要なときはいつでもできる

svn up folder

もう必要ないときは

svn up --set-depth exclude folder

しかし、今ではリポジトリ内のファイルの完全なリストallが必要であり、ファイルとフォルダを取得するためだけに完全なチェックアウトを行いたくない名前。

私はすでにsvn ls -Rを試しましたが、これは実際にチェックアウトしていないいくつかのファイルをリストしますが、それでもいくつか欠落しています。現在のディレクトリ内のすべてを表示するためです。これで、新しく見つかったすべてのディレクトリに対してsvn lssvn up --depth emptyを半手動で実行できましたが、もっと良い代替手段があるかどうか疑問に思います。

とは対照的に、リポジトリにコミットされたすべてのファイルを一覧表示するにはどうすればよいですか? リポジトリの現在のコンテンツにのみ興味があり、svnadmin。リポジトリサーバーにソフトウェアをインストールすることもできません。

32
Koma

これにより、すべてのファイルが再帰的にリストされます。

svn ls -R URL-OF-REPO
56
Lazy Badger
svn list --recursive https://myrespository.my.com/Myproject

私が試みたように、それは現在およびすべてのサブディレクトリで機能すると思います。これには、すべてのブランチとタグ、およびそれらのすべてのサブディレクトリとファイルもリストされます。

8
Gjordis

私のユーティリティ fast-svn-crawler を試すことができます。これは--svn list --recursiveよりも ずっと速い です。

$ svn-crawler https://myrespository.my.com/Myproject
6
Dmitry Pavlenko

URLなし

svn list --recursive -r HEAD

1
sanrodari

フォルダーではなく、すべてのファイルの完全なリストを取得する場合は、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
0
m3t4l