回答:
作業コピーのルートで以下を実行します。
svn propget svn:externals -R
以下のコメントで説明されているように、これは外観に外観をリストしません。
TortoiseSVNユーザーへの注意:TortoiseSVNインストーラーには、SVNコマンドラインクライアントもインストールするオプションがあります。このオプションはデフォルトでは有効になっていません。
これらすべての外部プロパティを手動で変更するのは面倒に聞こえます。Subversion 1.5で追加された外部機能の新機能を見ましたか?
Subversion 1.5は、これらの不満を解消するために大きな一歩を踏み出しました。前述のように、新しい外部定義形式で使用されるURLは相対である可能性があり、SubversionはURL相対性の複数のフレーバーを指定するための構文マジックを提供します。
../
svn:externalsプロパティが設定されているディレクトリのURLからの相対
^ /
svn:externalsプロパティがバージョン管理されているリポジトリのルートに対して相対的
//
svn:externalsプロパティが設定されているディレクトリのURLのスキームに関連
/
svn:externalsプロパティがバージョン管理されているサーバーのルートURLからの相対
多分そのうちの1つが役立つでしょうか?私はそれがあなたがどのように分岐しているか、そしてあなたのリポジトリ構造がどのように見えるかに依存していると思います。
TortoiseSVNの私の回避策:
SVNコンテキストメニューから[ブランチ/タグ...]ダイアログを開きます。下のダイアログには、ネストされた外部を含むすべての外部が表示されます。
svn propget svn:externals -R
です。
私はWim Coenenの回答を使用して、すべてのリビジョンのリストを作成するために次のスクリプトを書きました。
getSvnRevs() {
cd "$1"
wcver="$(svnversion)"
[ -n "$wcver" ] || panic "Unable to get version for $wcdir"
echo "$1: $wcver"
svn propget svn:externals -R | while read a b c d e; do
[ -n "$a" ] || continue
if [ "$b" = "-" ]; then
wcparent="$a"
wcdir="$wcparent/$c"
[ -z "$e" ] || panic "Invalid format #1"
else
[ -n "$wcparent" ] || panic "Invalid format #2"
wcdir="$wcparent/$a"
[ -z "$c" ] || panic "Invalid format #3"
fi
[ -d "$wcdir" ] || panic "Invalid directory: $wcdir"
wcver="$(svnversion "$wcdir")"
[ -n "$wcver" ] || panic "Unable to get version for $wcdir"
echo "$1/$wcdir: $wcver"
done
}
幸い、私は外部を入れ子にしていないので、これをテストする必要はなく、うまくいかないと思います。しかし、これが必要な場合は、この関数を再帰的に呼び出すだけで十分でしょう。また、エスケープが必要なファイル名でテストしたことはありません。その場合、おそらく機能しません。
免責事項:私は元の質問がWindowsに関するものであることを知っており、cygwinなどを使用していない限り、シェルスクリプトはそこで機能しません。
私はDaniel Alderの回答を取り、svnversion呼び出しを削除して再帰的にしました(注:read a b c d e
ソースまたは宛先にスペースがある場合は機能しません)。これはbashスクリプトなので、Cygwinのようなものが必要か、Linux用のWindowsサブシステムを使用します。
getSvnExternals() {
svnbase="$1"
svnpath="$2"
svn propget svn:externals -R "$svnbase/$svnpath" 2> /dev/null | while read a b c d e; do
[ -n "$a" ] || continue
if [ "$b" = "-" ]; then
wcparent="$a"
external="$c"
wcdir=$(echo "$wcparent/$d" | sed s#^./##)
[ -z "$e" ] || echo "WARNING: Invalid format #1. line='$a $b $c $d $e'"
else
[ -n "$wcparent" ] || echo "WARNING: Invalid format #2. wcparent=$wcparent"
external="$a"
wcdir=$(echo "$wcparent/$b" | sed s#^./##)
[ -z "$c" ] || echo "WARNING: Invalid format #3. line='$a $b $c $d $e'"
fi
echo "$1/$wcdir: $external"
## recurse into external directory
[ -d "$wcdir" ] && getSvnExternals "$1/$wcdir"
done
}