SVNチェックアウトのフォルダーを無視できますか?ビルドサーバーでのチェックアウト時にDOCフォルダーを無視する必要があります。
編集:外部を無視するオプションはありません。必要な外観がいくつかあります。
SVNチェックアウトのフォルダーを無視できますか?ビルドサーバーでのチェックアウト時にDOCフォルダーを無視する必要があります。
編集:外部を無視するオプションはありません。必要な外観がいくつかあります。
回答:
チェックアウト時にフォルダーを直接無視することはできませんが、svn 1.5ではスパースチェックアウトを使用できます。例えば:
$ svn co http://subversion/project/trunk my_checkout --depth immediates
これにより、プロジェクトトランクのファイルとディレクトリが「my_checkout」にチェックインされますが、それらのディレクトリには再帰しません。例えば:
$ cd my_checkout && ls
bar/ baz foo xyzzy/
次に、「バー」のコンテンツを取得するには:
$ cd bar && svn update --set-depth infinity
svn: Shallowing of working copy depths is not yet supported
はい、SVN 1.6を使用できます。最初にチェックアウトを行ってから、フォルダーを除外対象としてマークし、不要なフォルダーを削除する必要があります。
svn checkout http://www.example.com/project
cd project
svn update --set-depth=exclude docs
rm -fr docs
これ以降、作業コピーを更新しても、ドキュメントフォルダーは再作成されません。
http://blogs.collab.net/subversion/2009/03/sparse-directories-now-with-exclusion/およびhttp://subversion.apache.org/docs/release-notes/1.6.html#sparse-を参照してください。詳細については、ディレクトリの除外。
トム
1.5より前のバージョンでは、最上位のフォルダのみをチェックアウトしてから選択的に更新すると、それ以降の更新では、チェックアウトしたものにのみ影響することがわかりました。つまり。
svn co -N foo
cd foo
svn up -N bar
svn up
-Nフラグは、操作を非再帰的にします。上記はfooレベルで他のものをチェックアウトしません、例えば。フォルダがあると言うとlala
、最後のsvn upはそのフォルダをチェックアウトしませんが、更新されbar
ます。
しかし、後でできるsvn up lala
ので、チェックアウトに追加できます。
おそらくこれは1.5でも動作します。
はい、Subversion 1.5にはスパースチェックアウトと呼ばれる機能があり、まさにこの種のことを実行できます。
この質問で、回帰テストを除外しながらWebKitソースをチェックアウトする方法を探しました。私は次のようになりました:
svn checkout http://svn.webkit.org/repository/webkit/trunk WebKit \
--depth immediates
cd WebKit
find . \
-maxdepth 1 -type d \
-not -name '.*' \
-not -name '*Tests' \
-not -name 'Examples' \
-not -name 'Websites' \
| (while read SUBDIR; do svn update --set-depth infinity "$SUBDIR"; done)
除外は必要に応じて変更できますが、。*は作業ディレクトリ(すでに最新)とすべての.svnディレクトリをスキップすることをお勧めします。
私は最近、同じタスクを解決しました。リポジトリの下にあるフォルダー/ファイルの即時リストを取得して、必要なエントリーを除外し、残りのフォルダーをチェックアウトして、存在する場合は即時ファイルを更新するという考え方です。これが解決策です:
# Path to the svn repository to be checked out
rpath=https://svn-repo.company.com/sw/trunk/ && \
# This files are to be excluded (folders are ending with '/')
# this is a regex pattern with OR ('|') between enties to be excluded
excludep='docs_folder/tests_folder/|huge_folder/|file1|file2' && \
# Get list of the files/folders right under the repository path
filtered=`svn ls $rpath | egrep -v $excludep` && \
# Get list of files out of filtered - they need to be 'uped'
files=`echo $filtered | sed 's| |\n|g' | egrep '^.*[^/]$'` && \
# Get list of folders out of filtered - they need to be 'coed'
folders=`echo $filtered | sed 's| |\n|g' | egrep '^.*[/]$'` && \
# Initial nonrecursive checkout of repository - just empty
# to the current (./) working directory
svn co $rpath ./ --depth empty && \
# Update the files
svn up $files &&\
# Check out the all other folders finally.
svn co `echo $folders | sed "s|\<|$rpath|g"`
ソースの作業ディレクトリに移動します。コマンドをコピーします。ペースト。適切なURLを変更し、パターンを除外します。コマンドを実行します。
おかげで、