web-dev-qa-db-ja.com

SVNは.gitignoreのように無視します

Git で、内部に多くのプロジェクトがあるプロジェクトがある場合、多くのJavaプロジェクト、.gitignoreファイルを作成できますルートで、リポジトリ全体で「尊重」されます。

SVNプロジェクトでこれを行うにはどうすればよいですか?

たとえば、次のような.gitignoreに対して(cmd行を使用して)「svn ignore」セットアップを行うにはどうすればよいですか?

*.class
*.jar
*.war
*.ear
target/
.classpath
.settings/
.project
.metadata
bin/

質問の最も重要な部分:ルート内の新しいフォルダーに対してどのように機能させることができますか?例:

ルートでsvn propset svn:ignore "*.class" . -Rを実行してコミットしました。 OK:

root
- folder1/
-- *.class (ignored)
-- other files (ok)
- folder2/
-- *.class (ignored)
-- other files (ok)

次に、フォルダー3を作成します。以前のsvn:ignore設定は適用されませんよね?そうする方法はありますか?

40
caarlos0

svn:ignoreを使用できます。通常、SVNにファイルに特別なプロパティを適用するように指示する必要があります。

svn propset svn:ignore "*.jpg" .

(コマンドの最後にあるドットに注意してください。)

複数のファイルの場合、改行文字を追加できます。

ここに改行を入れて正確に入力してください:

svn propset svn:ignore "file1
file2
file3" dir1

ファイルが無視されることを確認します。

svn status --no-ignore

次に、コードをコミットします。

そして、はい、多くの重複した質問がすでに利用可能です。

お気に入りの svn cheatguide を参照できます。

無視されたファイルとディレクトリを使用して、svn-ignore.txtというファイルを作成できます。

*.class
*.jar
*.war
*.ear
 target/
.classpath
.settings/
.project
.metadata
 bin/

次のことを試してください:

svn propset svn:ignore -RF /root/svn-ignore.txt . [dot for current dir]

-Rは再帰的です。

65
Amarpreet Singh

私はこの問題をわずかに異なる方法で解決しました。これは、Bashシェルを使用していて、Perlがインストールされている場合にのみ機能しますが、ほとんどすべてのMacおよびLinuxマシンです。

.bashrcおよび.bash_profileファイルに次を追加します。

alias _ss="svn status | egrep -v '`cat .svnignore|Perl -p -e 's/\n/|/'`'"

ターミナルを再起動するか忘れずに:

source ~/.bashrc
(or .bash_profile if that's what you used)

ここで。svnignoreというファイルを作成し、リポジトリがチェックアウトされているディレクトリに配置します。

files/to/ignore
another/file
tmp
node_modules

実行すると

_ss

作業コピーのルートディレクトリで、.svnignoreファイルを読み取り、その中のすべてを無視します。

.gitignoreファイルをバージョン管理するのと同じ方法で、.svnignoreファイルをバージョン管理します。

注:これはsvn statusコマンドにのみ影響し、無視されたファイルの追加/コミットを妨げません。

0
Jaybill