0

global-ignores私たちのプロジェクトでは、ユーザーの svn 設定ファイルでのsvn の使用を避けています。これらの svn 設定はクライアントに限定されており、プロジェクトのプロパティではないためです。ファイルのようなものを使用して、プロジェクトのサブディレクトリで無視されたファイルを管理する方法が必要.gitignoreでした。ファイルを (1) ディレクトリ ツリー内のファイルを検索し、(2)ファイルが見つかった各ディレクトリのプロパティを更新.svnignoreするスクリプトと組み合わせて使用​​する単純なスキームを開発しました。誰かがファイルを更新するときは、忘れずにスクリプトを実行する必要があります。これは、ディレクトリのプロパティを手動で管理するよりも簡単です。.svnignoresvn:ignore.svnignoresvn:ignore

スクリプトは次のとおりです。

#!/bin/sh
# Syntax of the .svnignore file: like what "svn propset svn:ignore" accepts,
# and in addition, lines in the .svnignore file that begin with a pound sign
# (#) are ignored so that one can put comments in the file.

find $1 -depth -name .svnignore | while read file ; do
  dir="`dirname $file`"
  egrep -v '^[  ]*#' $file | svn propset svn:ignore -F - $dir
  svn update $dir
  svn commit --depth=immediates -m"Updated list of ignored files." $dir $dir/.svnignore
done
echo "Done."

.svnignoreこのスクリプトが受け入れるファイルの例を次に示します。

# WARNING: This .svnignore file is not understood by SVN directly.
# WARNING: It is meant to be used in conjunction with our script in 
# WARNING: trunk/project/scripts/svn-update-from-svnignore.sh
autom4te.cache
Makefile
config.log
config.status
.deps
include
TAGS
CTAGS
*.o

私の質問は次のとおりです。

  1. 同じことを達成するためのより良い方法はありますか?
  2. ここに表示されているアプローチまたはスクリプトに危険はありますか?

ヒントをありがとう。

4

3 に答える 3

2
  • svn up内部のサイクルを理解できません(以前に WCのルートで単一の更新を行うと、よりエレガントな方法になります)
  • --depth=immediates を使用して複数のコミットを行うことも非常に悪い考えです。プロパティへのすべての変更が既に適用された後に単一のコミットを使用しないのはなぜですか
  • find の結果 ( を追加-print0) を xargs for にパイプしてsvn propset、循環を完全になくすことができます
  • スクリプト WC-root に渡し、更新を (1 回) 実行し、WC のルートでコミットすることは (私にとっては) 悪い考えではないようです
于 2013-02-28T22:20:15.237 に答える
1

今はあまり役に立ちませんが、Subversion 1.8 (リリースされたとき) には、あなたを助けるリポジトリディクテーション設定があります。特に 1.8 には、global-ignores 構成オプションのように機能する svn:global-ignores プロパティがあります。また、1.8 には継承可能なプロパティがあり、svn:global-ignores はそのような継承可能なプロパティです。そのため、ディレクトリでこのプロパティを設定すると、そのディレクトリの下にあるすべてのものが影響を受けます。

http://subversion.apache.org/docs/release-notes/1.8.html#repos-dictated-config

于 2013-03-02T02:52:09.763 に答える
0

グローバル無視をあきらめないでください。ログイン スクリプトや (Windows の場合) グローバル ポリシーなど、SVN の外部にあるメカニズムを介してそれらを更新できます。

もちろん、これは集中管理された環境 (企業ネットワークなど) がある場合にのみ機能します。オープンソース プロジェクトの場合、これは機能しません。しかし、とにかくSVNを使用していないでしょう。

于 2013-02-28T22:54:53.007 に答える