SVNチェックアウトフォルダーを無視
-
08-07-2019 - |
質問
svn checkoutのフォルダーを無視できますか?ビルドサーバーでのチェックアウト時にDOCsフォルダーを無視する必要があります。
編集:外部を無視するオプションはありません。必要な外観がいくつかあります。
解決
チェックアウトのフォルダーを直接無視することはできませんが、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 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-directory-exclusion を参照してください。
トム
1.5より前のバージョンでは、最上位のフォルダーのみをチェックアウトしてから選択的に更新した場合、それ以降の更新はチェックアウトした内容にのみ影響することがわかりました。すなわち。
svn co -N foo
cd foo
svn up -N bar
svn up
-Nフラグは、操作を非再帰的にします。上記は、fooレベルで他の何かをチェックアウトしません。フォルダー lala
がある場合、最後のsvn upはそのフォルダーをチェックアウトしませんが、 bar
を更新します。
しかし、後で sla up lala
して、チェックアウトに追加できます。
おそらく1.5でも動作します。
これはTortoiseSVNクライアント1.7.1にあります(一部の古いバージョンでも利用できる場合があります):
-
SVNチェックアウト->リポジトリのURLを選択
-
「チェックアウトアイテム」をクリックします。 ([チェックアウトの深さ]の下)を選択し、 必要なフォルダ!
docsフォルダーを外部リポジトリに配置してから、 svn checkout --ignore-externals
を使用できます。
リグレッションテストを除外しながら、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 '^.*[^/]
ソース作業ディレクトリに変更します。コマンドをコピーします。ペースト。適切なURLを変更し、パターンを除外します。コマンドを実行します。
ありがとう、
` && \
# Get list of folders out of filtered - they need to be 'coed'
folders=`echo $filtered | sed 's| |\n|g' | egrep '^.*[/]
ソース作業ディレクトリに変更します。コマンドをコピーします。ペースト。適切なURLを変更し、パターンを除外します。コマンドを実行します。
ありがとう、
` && \
# 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を変更し、パターンを除外します。コマンドを実行します。
ありがとう、
いいえ、無視はファイルの追加のみです。
スパースチェックアウトを使用できます(svn 1.5を使用している場合)
他のいくつかの人が言及したように、チェックアウト時にsvn:externalsプロパティを使用してから--ignore-externalsオプションを使用できます。ただし、svn:externalsは別のリポジトリを参照する必要は必ずしもありません 。同じリポジトリ内の他のフォルダーへの参照になります。