0

削除したくないが、リポジトリに属していないファイルがあります。システムにプロパティがある場合に無視したくない他のユーザーに影響を与えないように、無視プロパティをコミットしたくありません。無視する小道具を無視するために邪魔をしなければならないので、無視をコミットしたくありません。

構成ファイルで global-ignores をいじってみましたが、名前で無視できfile.txtます。だから私はそれにパス名を与えようとしましfolder/file.txtfolder\file.txt.folder\\file.txt

c:\repo\folder\file.txtスラッシュ、バックスラッシュ、またはエスケープされたバックスラッシュを使用して文字をドライブするまでずっと行っても、どれも機能していないようです。

プロパティを使用せずに、このファイルで無視を参照する方法はありますか?

また、ドキュメントではこれらのパターンを「空白で区切られたグロブ」と呼んでいます。この意味でのグロブは私にとって新しい用語です。誰かが定義に光を当てることができますか? glob には IT 以外の多くの定義が利用できることを考えると、ここでは Google は私の友人ではありません。

4

1 に答える 1

1

一度に 1 つずつ見ていきましょう。

何かを無視することは、リポジトリに入れたくないものを誤ってリポジトリに入れないようにするための方法にすぎません。本質的にグローバルにすることも、特定のディレクトリに対してのみローカルにすることもできます。

Subversion で何かを無視すると、次の 2 つのことが行われます。

  • あなたがするとき、それはリストされませんsvn status
  • を行っても追加されません。svn add *

それだけです。実際、無視はリポジトリにないファイルに対してのみ機能します。リポジトリに追加されたファイルを無視することはできません。

なぜグローバルに何かを無視したいのですか?

私がC開発をしているとしましょう。*.c サフィックスを持つファイルを取得すると、*.o サフィックスを持つファイルにコンパイルされます。これらの *.o ファイルを自分のディレクトリに置きたくないので、グローバルな無視を設定します。

1 つのディレクトリだけで何かを無視したいのはなぜですか?

プログラムをビルドして実行すると、ディレクトリにファイルが作成されるとしましょうoutput.txt。それをリポジトリに追加したくないのでsvn:ignore、そのディレクトリにそのファイルを無視するように設定します。

私は Maven で何かを構築し、Maven はターゲットディレクトリを作成します。すべての Maven プロジェクトで、Subversion にそのターゲットディレクトリを無視するように指示します。

空白で区切られたグロブとは どういう意味ですか?

グロビングは、正規表現のような構文の安価で単純な形式です。あなたはおそらくそれをいつも使っています。主にコマンドラインで使用されます。これはグロビングを使用しています:

$ ls *.txt

したがって、空白で区切られたすべてのグロブは、上記のようなグロブ式の集まりであることを意味し、それがどこにあっても無視したい. コンマではなく空白で区切ります。

右:

global-ignores="*.o *~ *.class"

違う:

global-ignores="*.o, *~, *.class"

もう 1 つ、ignores 内の glob (つまり、ファイル指定) (global か by かに関係svn:ignoreなく) には、ディレクトリ プレフィックスを付けることができません。ディレクトリをグローバルに無視することはできませんがsvn:ignore、ディレクトリは無視できます。たとえば、Maven を使用すると、targetというディレクトリの下にすべてがビルドされます。svn:ignoreターゲットディレクトリにセットアップできます。

それで、あなたの質問に戻ります。誰もがこのファイルを持っているが、誰もそれを Subversion に追加してはならない場合、そのディレクトリでは無視する必要があります。誰かが誤って Subversion に追加するのを防ぐだけです。彼らの視界からそれを隠すことはありません。

実際、最終的には、無視を無視できます。以前にファイルを無視すると言っていたとしても、指定するだけでファイルをコミットして追加できます。

コミットしてはならないファイルを誤ってコミットしないようにしたい場合は、私のpre-commitトリガーを使用する必要があります。これにより、コミットしてはいけないものとその場所を指定できます。グロビング構文または正規表現構文を使用できます。例えば:

[file Don't allow people to add foo files to the bar directory]
file=**/bar/foo.*
access=no-add
users=@ALL

[file Don't allow people to add bar files to the foo directory]
match=/bar/foo.*$
access=no-add
users=@ALL

1 つ目はglobを介して設定されます。2 つ目は正規表現で設定されます。

これがあなたの質問に答えることを願っています。

于 2012-08-21T21:42:36.957 に答える