web-dev-qa-db-ja.com

SVNを含むディレクトリを無視するにはどうすればいいですか?

私はSVNを使い始めたばかりで、ソース管理下では必要のないキャッシュディレクトリがあります。 SVNでディレクトリ/フォルダ全体を無視するにはどうすればいいですか?

私はOS Xとコマンドラインで VersionsTextMate を使っています。

743
Gilean

親ディレクトリのsvn:ignoreプロパティを設定します。

svn propset svn:ignore dirname .

無視するものが複数ある場合は、プロパティ値を改行で区切ります。その場合、外部エディタを使用してプロパティ値を編集する方が簡単です。

svn propedit svn:ignore .
782
Jason Cohen

これがディレクトリ構造の例です。

\project
    \source
    \cache
    \other

projectに入っているとき、あなたはあなたのキャッシュディレクトリが追加されず、そのように現れるのを見ます。

> svn st
M  source
?  cache

Ignoreプロパティを設定するには、

svn propset svn:キャッシュを無視します。

svn:ignoreは設定しているプロパティの名前、cacheはプロパティの値、.はこのプロパティを設定しているディレクトリです。それはプロパティを必要とするcacheディレクトリの親ディレクトリであるべきです。

設定されているプロパティを確認するには:

> svn proplist
Properties on '.':
  svn:ignore

svn:ignoreの値を見るには:

> svn propget svn:ignore
cache

以前に設定したプロパティを削除するには:

svn propdel svn:ignore
401
craigb

言及することが重要:

コマンドラインでは使えない

svn add *

コマンドラインで*が展開されるため、svn addはすべてのファイルを追加したいと考えているため、無視されたファイルも追加されます。したがって、代わりにこれを使用してください。

svn add --force .
129
binco

これを機能させるためにしばらく時間をかけたので、ファイルがすでにSVNに存在する場合は、それらをsvn deleteしてからsvn:ignoreプロパティを編集する必要があることに注意してください。

私はそれが明白に見えることを知っています、しかし、私がそれが単にそれらをローカルで無視するだろうと思ったとき、彼らは私の?リストでsvn statusとして現れ続けました。

79
Kai

Svnコマンドラインツールを使用してこれを実行している場合は、少し拡大すると、次のように入力します。

svn propedit svn:ignore path/to/dir

選択したテキストエディタを開き、 '*'を入力してその中のすべてを無視し、保存して終了します - これはsvn内のディレクトリ自体を含みますが、その中のすべてのファイルを無視します。親のパスをクリックし、ファイルのディレクトリの名前を次に入力します。保存したら、アップデートを実行し( 'svn up')、適切なパスをチェックインします。

69
Greg

親ディレクトリでsvn:ignoreプロパティを設定します。

$ cd parentdir
$ svn ps svn:ignore . 'cachedir'

これはsvn:ignoreの現在の値を上書きします。あなたは値を編集します:

$ svn pe svn:ignore .

これでエディタが開きます。 1行に1つずつ、複数のパターンを追加できます。

現在の値を見ることができます:

$ svn pg svn:ignore .

GUIを使用している場合は、これを行うためのメニューオプションがあるはずです。

28
Frank Szczerba

上記のすべての貢献をありがとう。私はファイルを無視しながら私の経験からいくつかの追加情報を共有したいと思います。


フォルダがすでにリビジョン管理されている場合

svn importsvn coの後に、通常初めて行うことになります。

すべてのランタイムキャッシュ、添付ファイルフォルダはバージョン管理下に置かれます。そのため、svn ps svn:ignoreの前に、リポジトリから削除する必要があります。

上記のSVNバージョン1.5ではsvn del --keep-local your_folderを使用できますが、以前のバージョンの場合、私の解決策は次のとおりです。

  1. svn exportあなたのフォルダの新しいコピー(.svn隠しフォルダなし)
  2. svn delローカルとリポジトリ
  3. svn ci
  4. フォルダを元に戻す
  5. svn stを実行し、フォルダに「?」のフラグが付いていることを確認します。
  6. 解決策に従って、svn psを実行します。

無視するフォルダが複数必要な場合

  • 1つのディレクトリに2つのフォルダがあり、それらをsvn:ignoreとして設定する必要があります
  • 一方を設定すると、もう一方も削除されます。
  • それなら、svn peが必要なのでしょうか。

svn peはテキストファイルを編集する必要があるでしょう、そして vi を使ってあなたのテキストエディタを設定するために必要ならこのコマンドを使うことができます:

export SVN_EDITOR=vi
  1. "o"で新しい行を開くことができます
  2. 無視したいすべてのフォルダ名を入力します。
  3. 編集モードから抜け出すために 'esc'キーを押してください
  4. ":wq"と入力してヒット Enter 保存して終了する

ファイルは次のようになります。

runtime
cache
attachments
assets
20
Elliot Yap

最初に削除してください.

あなたのディレクトリfooがすでにバージョン管理下にある場合は、まずそれを削除します。

svn rm --keep-local foo

...そして無視する:

svn propset svn:ignore foo .
19
matt burns

複数のディレクトリを無視したい場合(build/temp/*.tmpファイルを言う)、2つのステップ(最初のものを無視し、プロパティを無視するを編集する(他の答えを参照))または1つのように書く

svn propset svn:ignore "build
temp
*.tmp" .

コマンドラインで。

12
DerMike

特定のSVNクライアント TortoiseSVN を使用している場合は、コミット時にアイテムを右クリックして[無視するリストに追加]を選択できます。

11
Michael Lang

複数のエントリを無視するというコマンドは少しややこしく、バックスラッシュが必要です。

svn propset svn:ignore "cache\
tmp\
null\
and_so_on" .

このコマンドは、カレントディレクトリ内のcachetmpnull、およびand_so_onという名前のものはすべて無視します。

6
James Stroud

ネストされたディレクトリを無視するのに問題がありました。無視したいトップディレクトリは 'svn status'で表示されませんが、すべてのサブディレクトリは表示されます。これはおそらく他の誰にとっても自明のことですが、私はそれを共有したいと思いました。

例:

/トランク

/トランク/キャッシュ

/ trunk/cache/subdir1

/ trunk/cache/subdir2

cd /trunk
svn ps svn:ignore . /cache
cd /trunk/cache
svn ps svn:ignore . *
svn ci
5
brainycat

"ありがとうございました" svnこのようにぞっとするような、偽の、そしてファイルを無視するのが難しい方法です。

それで私はスクリプト svn-ignore-all を書きました:

#!/bin/sh

# svn-ignore-all

# usage: 
#   1. run svn status to see what is going on at each step 
#   2. add or commit all files that you DO want to have in svn
#   3. remove any random files that you don't want to svn:ignore
#   4. run this script to svn:ignore everything marked '?' in output of `svn status`

svn status |
grep '^?' |
sed 's/^? *//' |
while read f; do
    d=`dirname "$f"`
    b=`basename "$f"`
    ignore=`svn propget svn:ignore "$d"`
    if [ -n "$ignore" ]; then
        ignore="$ignore
"
    fi
    ignore="$ignore$b"
    svn propset svn:ignore "$ignore" "$d"
done

また、ファイル/パス名の特定のリストを無視するために、この変種 svn-ignore を使うことができます。 svn-ignore-allはxargs svn-ignoreのようなものでなければなりません。

#!/bin/sh

# svn-ignore

# usage:
#   svn-ignore file/to/ignore ...

for f; do
    d=`dirname "$f"`
    b=`basename "$f"`
    ignore=`svn propget svn:ignore "$d"`
    if [ -n "$ignore" ]; then
        ignore="$ignore
"
    fi
    ignore="$ignore$b"
    svn propset svn:ignore "$ignore" "$d"
done

もう一つのこと:私は多くのランダムなファイルで私のSVNチェックアウトを汚染する傾向があります。コミットする時が来たら、それらのファイルを 'old'サブディレクトリに移動し、svnに 'old'を無視するように指示します。

4
Sam Watkins

1つのライナーを複数回無視します。

svn propset svn:ignore ".project"$'\n'".settings"$'\n'".buildpath" "yourpath"
4
Fedir RYKHTIK

SVNが無視するディレクトリを保持するには:

  1. これによりリポジトリからファイルが削除されますが、ディレクトリはSVNの管理下に置かれます。

svn delete --keepローカルパス/ directory_to_keep/*

  1. それからディレクトリ(そしてすべてのコンテンツ)を無視するように設定します。

svn propset svn: "*"パスを無視します/ directory_to_keep

3
sheasie

プロジェクトディレクトリが/ Project、キャッシュディレクトリが/ Project/Cacheの場合は、/ ProjectにSubversionプロパティを設定する必要があります。プロパティ名は "svn:ignore"、プロパティ値は "Cache"にします。

プロパティの詳細についてはSubversionマニュアルの this ページを参照してください。

3

Jasonの答えがうまくいくでしょう。ただし、svn:ignoreを "。"に設定する代わりに、キャッシュディレクトリでは、キャッシュディレクトリが常に存在するとは限らない場合に、 parent ディレクトリのsvn:ignoreプロパティに "cache"を含めることができます。私はいくつかの "使い捨て"フォルダでこれを行います。

3
harpo

TortoiseSVNのようなSVNのフロントエンド、あるいはある種のIDE統合を使っているのであれば、コミット/追加操作と同じメニューに無視オプションもあるはずです。

2

Versionsを使っているので、実際にはとても簡単です。

  • チェックアウトしたコピーを閲覧する
  • 無視するディレクトリをクリック
  • 右側の「無視」ボックスで、「編集」をクリックします。
  • すべてのファイルを無視するには*。*を入力します(またはjpgファイルだけの場合は* .jpgなど)。
1
Andrew

Svn:ignore property を設定します。ほとんどのUI svnツールはこれを行う方法とリンク内のコマンドラインの説明を持っています。

1
Joe Skora

次のように Eclipse で解決される:

まず最初に、あなたのフォルダとプロジェクトを同期させます。

チーム - >同期

次のチームビューでは、SVNサーバーにコミットできるすべてのリソースを見ることができます。

そのため、無視したいリソースのリソースフォルダを選択してから、無視して無視できます。

チーム - > svn:ignoreに追加.

その後、確認ウィンドウで、最初のオプション「名前で無視」を選択します。

たとえば、ターゲットフォルダとその.classリソースを無視したい場合は、同期します。同期ビューでは、ターゲットフォルダを選択します。その後、選択します

チーム - >追加

svn:ignoreにして、確認ウィンドウの最初のオプションを確認します。

1
Antonio Martin

末尾のスラッシュも見てください。無視設定ファイルにimages/*を含めても./images/が無視されないことがわかりました。私がsvn status -uを実行したとき、それはまだ? imagesを示しました。そのため、無視設定を単にimagesに変更しました。スラッシュはありません。ステータスチェックを実行し、それをクリアしました。

1
cdmo

この単純な活動を実行する方法を探すために多くの時間を失った後、私はそれがまともな説明を見つけるのは難しくないと投稿することにしました。

まずサンプル構造を聞かせて

$ svn st?プロジェクト/トランク/ターゲット? project/trunk/myfile.x

1 - 最初にエディタを設定します。mycasevim exportの場合SVN_EDITOR = vim

2 - “ svn propedit svn:ignore project/trunk /”は新しいファイルを開き、私たちの場合はあなたのファイルとサブディレクトリを追加することができます。

$ svn st? project/trunk/myfile.x

ありがとう。

0
Bruno Marinho