ツリーの深さに関わらず、build
またはdist
という名前のディレクトリをSVNに入れたくありません。
これは可能ですか? Gitに置くだけ
build
dist
私の.gitignore
ルートで、再帰的に無視します。 svnでこれを行うにはどうすればよいですか?すべての親ディレクトリでpropsetを実行するように言わないでください...
Subversion 1.8の時点で、svn:global-ignores
プロパティはsvn:ignore
しかし、再帰的に(したがって、これをトップレベルディレクトリに設定します)
svn propset
はオプションとして--recursive
を取るため、これを行うには2つの欠点があります。
svn:ignore
プロパティを設定することを忘れないでくださいこれを行うことはできません。 Subversionには、svn:ignore
(非再帰的)およびglobal-ignores
(リポジトリに固有ではありません)。
これは私のために働く:
svn propset --recursive svn:ignore *.Zip <dir_tree_with_no_zips>
〜/ .Subversion/configまたは/ etc/Subversion/configファイルに追加します:
[miscellany]
global-ignores = build dist
バージョン管理からディレクトリを削除することにより、buildおよびdist dirsを無視することができます。トリックは、--keep-localオプションを使用して、作業コピーにディレクトリを残すことです。例えば:
svn rm dist --keep-local
svn ci -m'removed build directory from version control'
このディレクトリはSubversionによって追跡されなくなりますが、コンパイラの出力などを保持するために作業コピーに残ります。
歓声、ジョー
たとえば、フォルダー構造:
Project/
Project/dist/
cd Project
svn propset svn:ignore '*' dist/
svn ci -m "content of dist ignored"
Ignoreコマンドの前にdistコンテンツのsvn deleteを行うとよいので、ブランチの場合はdistが空になります。
私のために働いて、今日テストしました。 これを少し説明するページがあります
最初に作業コピーの最上位フォルダーに移動し、そこにファイル(.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/
すべてのリポジトリでこのようなファイルをすべて無視するには、global-ignores
ユーザーごとの構成ファイルに。
Unixライクシステムでは、この領域はユーザーのホームディレクトリに.Subversionという名前のディレクトリとして表示されます。 Win32システムでは、Subversionは、通常はユーザーのプロファイルディレクトリのアプリケーションデータ領域内に、Subversionという名前のフォルダーを作成します
構成オプション を参照してください
残念ながら、これを行うためのリポジトリごとのオプションはありません。基本的にはユーザーごと、またはディレクトリごとであるため、複数のsvn:ignores
は、おそらく迷惑な方法です。
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 .
ファイルを作成して無視するファイルを追加します
ingore-list:
file1
directory1
file2
etc...
その後、次のコマンドを適用します
for n in directory; do svn propset svn:ignore -F ignore-list $n; done
ディレクトリはディレクトリの名前です。ディレクトリ/サブディレクトリもサブカテゴリに分類できます。または、*を使用して、現在のディレクトリを記録します。
これは、シェルとしてbashを使用していることを前提としています
svn propset --recursive svn:ignore svn_ignore_rules .
svn_ignore_rulesは、無視ルールを含むファイルです(1行に1つ)
もちろん、新しいディレクトリをリポジトリに追加するたびに再実行する必要があります
svn_ignore_rulesはレポジトリにチェックインされ、レポジトリへの書き込みアクセス権を持つ他のユーザーが再利用できると考えることもできます。
cd parent_dir#再帰的に無視されるフォルダーを含むディレクトリ svn propedit svn:ignore #svn-prop.tmp enlistフォルダーを開きます ^ X Y commit -m 'ターゲットディレクトリを無視'
1つの方法は、コミット前またはコミット後のいずれかのフックに何らかの種類のチェックを追加することですが、リポジトリサーバーを所有していない場合は簡単に注意できます。
このおそらく一般的な問題の解決策がないように思われるので、私たちの解決策を共有したいと思います。他の人がすでに明らかにしたように、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リポジトリ内のソリューションは本当にありがたいです。だれかが知っていれば、共有してくれませんか。