1

GUIまたはDNDを使用してsvnadminを介してSVNディレクトリ(ローカル作業ディレクトリではなくサーバー上)のバックアップ「スクリプト」を設定する過程で、安全機能として確認したいバックアップリストに追加します。選択した各ディレクトリが実際には適切な SVN ディレクトリであることを確認してください。

既存のディレクトリ構造を調べたところ、次のサブディレクトリがあることがわかりました: conf、db、hooks、locks、およびファイル形式と README.txt

すべての SVN リポジトリとディレクトリは現在、TortoiseSVN の現在のバージョン 1.7.10 によって作成/処理されています。

この特定の構造をチェックすることが、SVN ディレクトリのみを受け入れ、他のすべてを拒否する良い方法であるというアイデアやコメントはありますか?

ティア

4

3 に答える 3

4

この同じ問題に遭遇しました。コマンド svnlook info および svnlook youngest (おそらく他のコマンドも同様) は、提供されたディレクトリが Subversion リポジトリであるかどうかに応じて、0 または 1 の終了コードを返します。これは SVN リポジトリに適用され、user999713 が主張する「作業コピー」には適用されません。したがって、次の bash スクリプトは、ディレクトリが SVN リポジトリの場合は 0 を示し、そうでない場合は 1 を示します。

svnlook info directory > /dev/null 2>&1
echo $?
于 2014-04-03T11:10:36.513 に答える
1

なぜ使用しないのsvn info %directory%ですか?ディレクトリが subversion によって改訂されておらず、WC 構造に依存していない場合は、!= 0 の終了コードを返します。さらに、ローカル側でのみ機能し、レポへの接続は必要ありません。

于 2012-12-02T16:24:11.993 に答える
0

コマンドラインツールsvnを使用するsvn lsと、特定のファイルまたはディレクトリを実行できます。これにより、ディレクトリが存在する場合はゼロが返され、ディレクトリが存在しない場合はゼロ以外(a 1)が返されます。これをプログラムで使用できます。

echo -n "What directory?" 
read directory
if svn ls $REPO/$directory > /dev/null 2>&1
then
    echo "Directory $directory exists in $REPO"
else
    echo "ERROR: Directory $directory does not exist in $REPO"
fi

これがサーバー上で行われている場合は、と同様のことを行うことができますsvnlook tree。これは、を使用するよりも高速になりますsvn ls

ちなみに、Subversionでバックアップすると、リポジトリディレクトリの構造が作業ディレクトリのレイアウトとは非常に異なることがわかります。svnadmin dumpSubversionをバックアップするには、またはを使用することをお勧めしますsvnadmin hotcopy。バックアップされたSubversionの最後のリビジョンを追跡するスクリプトを記述してsvnadmin dump、新しいリビジョンのみを実行することができます。そうすれば、バックアップにそれほど時間はかからず、すべてのダンプからリポジトリを再構築できます。

于 2012-12-02T01:05:09.943 に答える