web-dev-qa-db-ja.com

SVNチェックアウトフォルダーを無視

SVNチェックアウトのフォルダーを無視できますか?ビルドサーバーでのチェックアウト時にDOCsフォルダーを無視する必要があります。

編集:外部を無視するオプションはありません。必要な外観がいくつかあります。

97
Zote

チェックアウトでフォルダーを直接無視することはできませんが、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
103
Jon Topper

はい、SVN 1.6を使用できます。最初にチェックアウトを実行してから、除外するフォルダーをマークしてから、不要なフォルダーを削除する必要があります。

svn checkout http://www.example.com/project
cd project
svn update --set-depth=exclude docs
rm -fr docs

これ以降、作業コピーの更新によって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 詳細については。

トム

77
tommy_turrell

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でも動作します。

9
mxcl

これはTortoiseSVNクライアント1.7.1にあります(一部の古いバージョンでも利用できる場合があります)。

  • SVNチェックアウト->リポジトリのURLを選択

  • 「チェックアウト項目」(チェックアウトの深さの下)をクリックして、必要なフォルダのみを選択してください!

5
gammay

はい、 Subversion 1.5 には スパースチェックアウト と呼ばれる機能があり、まさにこの種のことができます。

4
Greg Hewgill

Docsフォルダーを外部リポジトリーに配置してから、svn checkout --ignore-externals

4
John Millikin

この質問は、リグレッションテストを除外しながら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ディレクトリをスキップすることをお勧めします。

3
rgov

私は最近同じタスクを解決しました。アイデアは、必要なエントリを除外したリポジトリの下のフォルダ/ファイルの即時リストを取得し、残りのフォルダをチェックアウトし、もしあれば即時ファイルを更新することです。解決策は次のとおりです。

    # 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を変更し、パターンを除外します。コマンドを実行します。

おかげで、

2
bv.

いいえ、無視はファイルの追加専用です。
スパースチェックアウトを使用できます(svn 1.5を使用している場合)

1
Peter Parker

他のいくつかの人が言及したように、チェックアウト時にsvn:externalsプロパティを使用してから--ignore-externalsオプションを使用できます。ただし、svn:externalsはnotで別のリポジトリを参照する必要があることに注意してください。同じリポジトリ内の他のフォルダーへの参照にすることができます。

1
Nik Reiman