693

Subversion でファイルを無視するにはどうすればよいですか?

また、バージョン管理されていないファイルを見つけるにはどうすればよいですか?

4

18 に答える 18

784

(この回答は、SVN 1.8 および 1.9 の動作に合わせて更新されています)

2 つの質問があります。

ファイルを無視としてマークする:

「無視されたファイル」とは、ファイルが「バージョン管理されていない」としてもリストに表示されないことを意味します。SVNクライアントは、ファイルがファイルシステムにまったく存在しないふりをします。

無視されるファイルは、「ファイル パターン」によって指定されます。ファイル パターンの構文と形式は、SVN のオンライン ドキュメントで説明されています: http://svnbook.red-bean.com/nightly/en/svn.advanced.props.special.ignore.html「Subversion のファイル パターン」。

バージョン 1.8 (2013 年 6 月) 以降の Subversion では、ファイル パターンを指定する 3 つの異なる方法がサポートされています。例を挙げて要約すると次のようになります。

1 - ランタイム構成エリア -global-ignoresオプション:

  • これはクライアント側のみの設定であるため、global-ignoresリストが他のユーザーと共有されることはなく、コンピューターにチェックアウトするすべてのリポジトリに適用されます。
  • この設定は、ランタイム構成領域ファイルで定義されています。
    • Windows (ファイルベース) -C:\Users\{you}\AppData\Roaming\Subversion\config
    • Windows (レジストリ ベース) -とSoftware\Tigris.org\Subversion\Config\Miscellany\global-ignoresの両方。HKLMHKCU
    • Linux/Unix -~/.subversion/config

2 -svn:ignoreディレクトリ (ファイルではない) に設定されるプロパティ:

  • これはリポジトリ内に保存されるため、他のユーザーも同じ無視ファイルを持つことになります。仕組みに似ています.gitignore
  • svn:ignoreディレクトリに適用され、非再帰的または継承されます。ファイル パターンに一致するファイルまたは親ディレクトリの直下のサブディレクトリは除外されます。
  • SVN 1.8 では「継承されたプロパティ」の概念が追加されていますが、svn:ignoreプロパティ自体は、直接ではない子孫ディレクトリでは無視されます。

    cd ~/myRepoRoot                             # Open an existing repo.
    echo "foo" > "ignoreThis.txt"                # Create a file called "ignoreThis.txt".
    
    svn status                                  # Check to see if the file is ignored or not.
    > ?    ./ignoreThis.txt
    > 1 unversioned file                        # ...it is NOT currently ignored.
    
    svn propset svn:ignore "ignoreThis.txt" .   # Apply the svn:ignore property to the "myRepoRoot" directory.
    svn status
    > 0 unversioned files                       # ...but now the file is ignored!
    
    cd subdirectory                             # now open a subdirectory.
    echo "foo" > "ignoreThis.txt"                # create another file named "ignoreThis.txt".
    
    svn status
    > ?    ./subdirectory/ignoreThis.txt        # ...and is is NOT ignored!
    > 1 unversioned file
    

    (そのため、リポジトリ ルートに " " が適用されていても、ファイル./subdirectory/ignoreThisは無視されません)。ignoreThis.txt.

  • したがって、無視リストを再帰的に適用するには、 を使用する必要がありますsvn propset svn:ignore <filePattern> . --recursive

    • これにより、すべてのサブディレクトリにプロパティのコピーが作成されます。
    • 子ディレクトリで値が異なる場合<filePattern>、子の値が親を完全にオーバーライドするため、「追加」効果はありません。
    • したがって<filePattern>、 rootで を変更した場合は、 で変更して、子および子孫ディレクトリで上書きする.必要があります。--recursive
  • コマンドライン構文が直感に反していることに注意してください。

    • 次のように入力してSVNのファイルを無視すると仮定して始めましたが、svn ignore pathToFileToIgnore.txtこれはSVNの無視機能の仕組みではありません。

3-svn:global-ignoresプロパティ。SVN 1.8 が必要です (2013 年 6 月):

  • これは に似てsvn:ignoreいますが、SVN 1.8 の「継承されたプロパティ」機能を利用する点が異なります。
  • と比較するsvn:ignoreと、ファイル パターンは (直接の子だけでなく) すべての子孫ディレクトリに自動的に適用されます。
    • これは、継承された無視ファイル パターンが継承されると自動的に適用されるためsvn:global-ignores、フラグを設定する必要がないことを意味します。--recursive
  • 前の例と同じコマンド セットを実行しますが、svn:global-ignores代わりに次を使用します。

    cd ~/myRepoRoot                                    # Open an existing repo
    echo "foo" > "ignoreThis.txt"                       # Create a file called "ignoreThis.txt"
    svn status                                         # Check to see if the file is ignored or not
    > ?    ./ignoreThis.txt
    > 1 unversioned file                               # ...it is NOT currently ignored
    
    svn propset svn:global-ignores "ignoreThis.txt" .
    svn status
    > 0 unversioned files                              # ...but now the file is ignored!
    
    cd subdirectory                                    # now open a subdirectory
    echo "foo" > "ignoreThis.txt"                       # create another file named "ignoreThis.txt"
    svn status
    > 0 unversioned files                              # the file is ignored here too!
    

TortoiseSVN ユーザーの場合:

TortoiseSVN の用語 (Windows エクスプローラーのメニュー システムで使用されている) が最初は誤解を招くものだったので、この配置全体が私を混乱させました。オプション。この投稿で、無視機能が SVN プロパティ機能とどのように結びついているかを説明できれば幸いです。とはいえ、GUI を使用する代わりにコマンドラインを使用して無視されるファイルを設定し、コマンドラインに慣れてから GUI を使用してプロパティを操作することをお勧めします。

無視されるファイルのリスト:

このコマンドsvn statusは、無視されたファイル (つまり、RGAglobal-ignoresパターンに一致するファイル、直接の親ディレクトリのsvn:ignoreパターンに一致するファイル、または祖先ディレクトリのsvn:global-ignoresパターンに一致するファイル) を非表示にします。

--no-ignoreオプションを使用して、それらのファイルを一覧表示します。無視されたファイルのステータスは でありI、出力を にパイプしてgrep、「I」で始まる行のみを表示します。

コマンドは次のとおりです。

svn status --no-ignore | grep "^I"

例えば:

svn status
> ? foo                             # An unversioned file
> M modifiedFile.txt                # A versioned file that has been modified

svn status --no-ignore
> ? foo                             # An unversioned file
> I ignoreThis.txt                  # A file matching an svn:ignore pattern
> M modifiedFile.txt                # A versioned file that has been modified

svn status --no-ignore | grep "^I"
> I ignoreThis.txt                  # A file matching an svn:ignore pattern

タダ!

于 2008-09-17T18:16:07.227 に答える
94

次のコマンドを使用して、バージョン管理ファイルの下にないリストを作成します。

svn status | grep "^\?" | awk "{print \$2}" > ignoring.txt

次に、ファイルを編集して、実際に無視したいファイルだけを残します。次に、これを使用して、ファイルにリストされているファイルを無視します。

svn propset svn:ignore -F ignoring.txt .

行末のドットに注意してください。プロパティが現在のディレクトリに設定されていることをSVNに伝えます。

ファイルを削除します。

rm ignoring.txt

最後にコミットし、

svn ci --message "ignoring some files"

次に、次の方法で無視されるファイルを確認できます。

svn proplist -v
于 2013-10-25T15:20:08.293 に答える
51

TortoiseSVNを使用している場合は、ファイルを右クリックして [ TortoiseSVN / 無視リストに追加] を選択します。これにより、ファイル/ワイルドカードがsvn:ignoreプロパティに追加されます。

svn:ignoreファイルのチェックイン時にチェックされ、一致するファイルは無視されます。Visual Studio .NET プロジェクトの次の無視リストがあります。

bin obj
*.exe
*.dll
_ReSharper
*.pdb
*.suo

このリストは、TortoiseSVN / Propertiesのコンテキスト メニューにあります。

于 2008-09-17T18:35:59.800 に答える
22

記事 .svnignore Example for Javaを見つけました。

例: Ruby on Rails の場合は .svnignore、

/log

/public/*.JPEG
/public/*.jpeg
/public/*.png
/public/*.gif

*.*~

それとその後:

svn propset svn:ignore -F .svnignore .

.gitignore の例 .svnignore に使用できます

https://github.com/github/gitignore

于 2014-03-25T20:06:07.597 に答える
10

propeditを使用するときは、ファイルが無視リストから除外される原因となるため、末尾にスペースがないことを確認してください。

Linuxでtab-autocompleteを使用してファイルを作成した場合、これらは自動的に挿入されます。

svn propset svn:ignore 'file1
file2' .
于 2011-03-01T13:54:11.303 に答える
8

また、Tortoise SVN を使用している場合は、次のことができます。

  1. コンテキストメニューで「TortoiseSVN」を選択し、次に「プロパティ」を選択します
  2. 表示されたウィンドウで、[新規]、[詳細] の順にクリックします。
  3. 「プロパティ名」の反対側に表示されたウィンドウで「svn:ignore」を選択または入力し、「プロパティ値」の反対側に目的のファイル名またはフォルダー名またはファイルマスクを入力します(私の場合は「* / target」でした)、「適用」をクリックしますプロパティを再帰的に"
  4. Ok。Ok。
  5. 専念
于 2013-02-28T22:56:22.990 に答える
6
  1. cd ~/.subversion
  2. 設定を開く
  3. 「global-ignores」のような行を見つけます
  4. 次のように無視するファイル タイプを設定します: global-ignores = *.o *.lo *.la *.al .libs *.so .so.[0-9] *.pyc *.pyo 88 *.rej ~ # # #* .*.swp .DS_Store node_modules 出力
于 2017-01-11T09:49:16.777 に答える
3

svn statusSVN にないファイルと、何が変更されたかがわかります。

ignore プロパティのSVN プロパティを見てください。

SVN に関するすべてのことについて、Red Bookを読む必要があります。

于 2008-09-17T18:17:40.530 に答える
3

SVN の構成ファイルでグローバルな無視パターンを設定することもできます。

于 2008-09-17T18:18:16.037 に答える
2

作業コピーでコマンドsvn statusを使用して、ファイルのステータスを表示します。まだバージョン管理されていない (そして無視されていない) ファイルの横には疑問符が表示されます。

ファイルを無視する場合は、svn:ignore プロパティを編集する必要があります。http://svnbook.red-bean.com/en/1.5/svn.advanced.props.special.ignore にある svnbook の「バージョン管理されていないアイテムを無視する」の章を読んでください。 html . この本では、svn status の使用についても詳しく説明しています。

于 2008-09-17T18:19:39.557 に答える