[解決済み] Subversionでファイルを無視するにはどうしたらいいですか?
質問
Subversion でファイルを無視するにはどうしたらいいですか?
また、バージョン管理されていないファイルを探すにはどうしたらよいですか?
解決方法は?
(この回答は、SVN 1.8 と 1.9 の動作に合わせるために更新されました)
2つの質問があります。
ファイルを無視するようにマークする。
無視されるファイルとは、quot;unversioned" としてリストに表示されないファイルのことです。
無視されるファイルは、"ファイルパターン"で指定します。ファイルパターンの構文とフォーマットは、SVN のオンラインドキュメントで説明されています。 http://svnbook.red-bean.com/nightly/en/svn.advanced.props.special.ignore.html Subversionのファイルパターン"。
Subversionは、バージョン1.8(2013年6月)以降では、3種類のファイルパターンの指定方法をサポートしています。以下、例を挙げてまとめてみました。
1 - ランタイム設定エリア - (英語
global-ignores
オプションを使用します。
-
これは
クライアントサイドのみ
を設定する必要があります。
global-ignores
のリストが他のユーザーと共有されることはありませんし、あなたのコンピュータにチェックアウトしたすべてのレポに適用されます。 -
この設定は、ランタイム・コンフィギュレーション・エリア・ファイルで定義されます。
-
Windows(ファイルベース)-。
C:\Users\{you}\AppData\Roaming\Subversion\config
-
Windows(レジストリベース)-。
Software\Tigris.org\Subversion\Config\Miscellany\global-ignores
ともにHKLM
とHKCU
. -
Linux/Unix
~/.subversion/config
-
Windows(ファイルベース)-。
2 - The
svn:ignore
プロパティで、ディレクトリに設定されます (ファイルではありません)。
-
これはレポ内に保存されるため、他のユーザーも同じ無視ファイルを持つことになります。と同じように
.gitignore
が動作します。 -
svn:ignore
はディレクトリに適用され、非再帰的または継承されます。任意のファイルや 即時 親ディレクトリのサブディレクトリで、ファイルパターンにマッチするものは除外されます。 -
SVN 1.8 では "inherited properties" という概念が追加されましたが
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>
の値が異なる場合、子ディレクトリの値が完全に親を上書きするため、 "additive"効果はありません。 -
そのため、もしあなたが
<filePattern>
ルート上の.
で変更する必要があります。--recursive
を使用して、子ディレクトリと子孫ディレクトリに上書きしてください。
-
コマンドラインの構文が直感に反していることに注意します。
-
私は最初、SVNでファイルを無視するには、次のように入力すると仮定していました。
svn ignore pathToFileToIgnore.txt
しかし、これはSVNの無視機能が働く方法ではない。
-
私は最初、SVNでファイルを無視するには、次のように入力すると仮定していました。
3- The
svn:global-ignores
プロパティを使用します。SVN 1.8 (2013年6月) が必要です。
-
と似ています。
svn:ignore
ただし、SVN 1.8 の "inherited properties" 機能を使用します。 -
比較対象
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 エクスプローラーのメニューシステムで使用されているもの)は、当初私にとって誤解を招くものだったからです。この投稿で、Ignore機能がSVN Properties機能とどのように結びついているのか、ご理解いただけたと思います。とはいえ、無視されるファイルを設定するには、GUIを使うのではなく、コマンドラインを使って、どのように動作するかの感触をつかむようにし、コマンドラインに慣れてから、GUIを使って、プロパティを操作することをお勧めします。
無視されるファイルをリストアップします。
コマンドは
svn status
は、無視されたファイル(つまり、RGAの
global-ignores
パターンにマッチするか、あるいは直接の親ディレクトリの
svn:ignore
パターンにマッチするか、あるいは、任意のエーサーディレクトリの
svn:global-ignores
パターンを使用します。
を使用します。
--no-ignore
オプションを使用すると、これらのファイルが一覧表示されます。無視されたファイルは、ステータスが
I
にパイプで出力します。
grep
で始まる行だけを表示するようにします。
コマンドは
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
ジャジャーン
関連
-
[解決済み] ツリーの衝突を解決する
-
[解決済み] プログラムの実行やシステムコマンドの呼び出しはどのように行うのですか?
-
[解決済み] Subversionリポジトリにおける「branch」、「tag」、「trunk」の意味とは?
-
[解決済み] SVNでディレクトリを無視するには?
-
[解決済み] Subversionで既にコミットされたログメッセージを編集するには?
-
[解決済み] Subversion で古いバージョンのコードに戻るにはどうしたらいいですか?
-
[解決済み] なぜGitはSubversionよりも優れているのですか?
-
[解決済み】Subversionから1つのファイルをチェックアウトする
-
[解決済み】Subversionでコミットされていない変更を一時的に片付ける("git-stash "のようなもの)。
-
[解決済み】フォルダのSubversionコントロールを削除する方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] mavenのpomにscmの情報を追加する目的は何ですか?
-
[解決済み] コマンドラインでSVNが動作しない
-
[解決済み] 時折 svn: E170013: URL 'https://svn......' のリポジトリに接続できません svn: E730054: コンテキストの実行エラー
-
[解決済み] svn用HTTPプロキシの設定方法
-
[解決済み] SVNリポジトリURLの変更
-
[解決済み] Visual Studio の .suo と .user ファイルをソースコントロールに追加する必要がありますか?
-
[解決済み] SVNでディレクトリを無視するには?
-
[解決済み] SVNで作業コピーXXXがロックされ、クリーンアップに失敗する。
-
[解決済み】最近のSVNログエントリーを見るにはどうしたらいいですか?
-
[解決済み] SVNアップグレード作業コピー