web-dev-qa-db-ja.com

SVN:再帰的にいくつかのディレクトリを無視する

ツリーの深さに関わらず、buildまたはdistという名前のディレクトリをSVNに入れたくありません。

これは可能ですか? Gitに置くだけ

build
dist

私の.gitignoreルートで、再帰的に無視します。 svnでこれを行うにはどうすればよいですか?すべての親ディレクトリでpropsetを実行するように言わないでください...

99
Paul Tarjan

Subversion 1.8の時点で、svn:global-ignoresプロパティはsvn:ignoreしかし、再帰的に(したがって、これをトップレベルディレクトリに設定します)

51
twin

svn propsetはオプションとして--recursiveを取るため、これを行うには2つの欠点があります。

  1. リポジトリ全体(または少なくともその中のすべてのディレクトリ)をチェックアウトする必要があります。
  2. 新しいディレクトリを追加するときは常にsvn:ignoreプロパティを設定することを忘れないでください
44
Michael Hackner

これを行うことはできません。 Subversionには、svn:ignore(非再帰的)およびglobal-ignores(リポジトリに固有ではありません)。

41
Kevin Reid

これは私のために働く:

 svn propset --recursive svn:ignore *.Zip <dir_tree_with_no_zips>
16
Stewart

〜/ .Subversion/configまたは/ etc/Subversion/configファイルに追加します:

[miscellany]
global-ignores = build dist
12
jspcal

バージョン管理からディレクトリを削除することにより、buildおよびdist dirsを無視することができます。トリックは、--keep-localオプションを使用して、作業コピーにディレクトリを残すことです。例えば:

svn rm dist --keep-local
svn ci -m'removed build directory from version control'

このディレクトリはSubversionによって追跡されなくなりますが、コンパイラの出力などを保持するために作業コピーに残ります。

歓声、ジョー

8
jsharit

たとえば、フォルダー構造:

Project/
Project/dist/

cd Project
svn propset svn:ignore '*' dist/
svn ci -m "content of dist ignored"

Ignoreコマンドの前にdistコンテンツのsvn deleteを行うとよいので、ブランチの場合はdistが空になります。

私のために働いて、今日テストしました。 これを少し説明するページがあります

6
marian

最初に作業コピーの最上位フォルダーに移動し、そこにファイル(.svnignoreなど)を作成する必要があります。ここに、無視するすべてのパターンを配置する必要があります(たとえば、Androidプロジェクトの場合)。

bin
gen
proguard
.classpath
.project
local.properties
Thumbs.db
*.apk
*.ap_
*.class
*.dex

次に、次のコマンドを実行します(作業コピーの最上位フォルダーにいる必要があります)。

svn propset svn:ignore -R -F .svnignore .

これは、まだバージョン管理下にないフォルダーとファイルに対してのみ機能します。バージョン管理されているフォルダー(またはファイル)も無視されるようにするには、次のコマンドを実行してバージョン管理から削除します。

svn rm --keep-local <path>

それをすべて説明しているこの素晴らしい記事からこれをすべて手に入れました: http://superchlorine.com/2013/08/getting-svn-to-ignore-files-and-directories/

5
Luccas Correa

すべてのリポジトリでこのようなファイルをすべて無視するには、global-ignoresユーザーごとの構成ファイルに。

Unixライクシステムでは、この領域はユーザーのホームディレクトリに.Subversionという名前のディレクトリとして表示されます。 Win32システムでは、Subversionは、通常はユーザーのプロファイルディレクトリのアプリケーションデータ領域内に、Subversionという名前のフォルダーを作成します

構成オプション を参照してください

残念ながら、これを行うためのリポジトリごとのオプションはありません。基本的にはユーザーごと、またはディレクトリごとであるため、複数のsvn:ignoresは、おそらく迷惑な方法です。

5
Blair Conrad

Subversion 1.8以上では、現在のリポジトリにグローバル無視を設定できます。

svn propset svn:global-ignores build .
svn propset svn:global-ignores dist .

また、.svnignoreという名前のフォルダーを作成し、条件を書き込むことができます。

build
dist

build/*またはdist/debugを設定しても、1行に1つの条件しか覚えていない。次に、コマンドを実行します。

svn propset svn:global-ignores -F .svnignore .
4
John Zhu

ファイルを作成して無視するファイルを追加します

ingore-list:

file1 
directory1
file2
etc...

その後、次のコマンドを適用します

for n in directory; do svn propset svn:ignore -F ignore-list $n; done

ディレクトリはディレクトリの名前です。ディレクトリ/サブディレクトリもサブカテゴリに分類できます。または、*を使用して、現在のディレクトリを記録します。

これは、シェルとしてbashを使用していることを前提としています

2
jncc99
svn propset --recursive svn:ignore svn_ignore_rules .

svn_ignore_rulesは、無視ルールを含むファイルです(1行に1つ)

もちろん、新しいディレクトリをリポジトリに追加するたびに再実行する必要があります

svn_ignore_rulesはレポジトリにチェックインされ、レポジトリへの書き込みアクセス権を持つ他のユーザーが再利用できると考えることもできます。

2
georg
 cd parent_dir#再帰的に無視されるフォルダーを含むディレクトリ
 svn propedit svn:ignore #svn-prop.tmp 
 enlistフォルダーを開きます
 ^ X 
 Y 
 commit -m 'ターゲットディレクトリを無視' 
1
Moin Haidar

1つの方法は、コミット前またはコミット後のいずれかのフックに何らかの種類のチェックを追加することですが、リポジトリサーバーを所有していない場合は簡単に注意できます。

0
8DH

このおそらく一般的な問題の解決策がないように思われるので、私たちの解決策を共有したいと思います。他の人がすでに明らかにしたように、svn:ignoreプロパティを使用して単一のディレクトリに適用する(したがって新しいディレクトリには適用しない)か、単一のユーザーに適用するglobal-ignoresを使用できます(ただし、リポジトリに属していません)。

生活を少し楽にするために、Settings.Svn.regという名前のregファイルを作成し、リポジトリのルートに追加しました。これで、誰もがこのregfileをダブルクリックして、設定を完了できます。

REGEDIT4

[HKEY_CURRENT_USER\Software\Tigris.org\Subversion\Config\miscellany]
"global-ignores"="obj *.suo *.bak *.pdb *.user *.Cache*"

SVNリポジトリ内のソリューションは本当にありがたいです。だれかが知っていれば、共有してくれませんか。

0
martinstoeckli