100

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

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

4

10 に答える 10

105

チェックアウトでフォルダーを直接無視することはできませんが、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
于 2008-10-20T11:44:29.913 に答える
81

はい、SVN1.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-を参照してください。詳細については、ディレクトリ除外を参照してください。

トム

于 2011-12-09T14:03:05.670 に答える
9

1.5 より前のバージョンでは、最上位のフォルダーのみをチェックアウトしてから選択的に更新すると、それ以降の更新はチェックアウトしたものにのみ影響することがわかりました。すなわち。

svn co -N foo
cd foo
svn up -N bar
svn up

-N フラグは、操作を非再帰的にします。上記は foo レベルで他のものをチェックアウトしません。フォルダーがあるとしますlala。最終的な svn アップはそのフォルダーをチェックアウトしませんが、更新しbarます。

ただし、後でsvn up lalaチェックアウトに追加することができます。

おそらくこれは1.5でも動作します。

于 2008-10-20T11:54:42.857 に答える
6

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

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

  • [チェックアウトアイテム]([チェックアウトの深さ]の下)をクリックして、必要なフォルダーのみを選択します。

于 2012-08-31T04:55:51.537 に答える
4

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

于 2008-10-10T19:56:28.367 に答える
4

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

于 2008-10-10T19:57:00.253 に答える
3

回帰テストを除外しながら 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 ディレクトリをスキップすることをお勧めします。

于 2014-08-12T05:39:33.353 に答える
2

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

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

ありがとう、

于 2010-12-20T17:24:44.667 に答える
1

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

于 2008-10-10T19:56:03.030 に答える
1

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

于 2008-10-13T09:26:05.640 に答える