776

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

OS X とコマンドラインでVersionsTextMateを使用しています。

4

23 に答える 23

815

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

svn propset svn:ignore dirname .

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

svn propedit svn:ignore .
于 2008-09-22T16:56:30.563 に答える
413

ディレクトリ構造の例を次に示します。

\project
    \source
    \cache
    \other

キャッシュディレクトリが追加されておらず、そのように表示されprojectていることがわかります。

> svn st
M  source
?  cache

無視プロパティを設定するには、次のようにします。

svn propset svn:ignore cache .

ここsvn:ignoreで、 は設定するプロパティの名前、 はプロパティcacheの値、 は.このプロパティを設定するディレクトリです。プロパティが必要なディレクトリの親ディレクトリでcacheある必要があります。

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

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

の値を確認するにはsvn:ignore:

> svn propget svn:ignore
cache

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

svn propdel svn:ignore
于 2008-09-22T17:06:51.287 に答える
135

重要なお知らせ:

コマンドラインでは使用できません

svn add *

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

svn add --force .
于 2009-05-07T23:38:51.947 に答える
76

少し拡張すると、svn コマンドライン ツールでこれを行う場合は、次のように入力します。

svn propedit svn:ignore path/to/dir

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

于 2008-09-22T17:00:43.220 に答える
31

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

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

これにより、 の現在の値が上書きされますsvn:ignore。次の方法で値を編集します。

$ svn pe svn:ignore .

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

現在の値は次の方法で表示できます。

$ svn pg svn:ignore .

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

于 2008-09-22T17:02:37.257 に答える
24

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


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

ファイルをsvn importおよびsvn coした後、通常最初に行うこと。

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

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

  1. svn exportフォルダーのクリーン コピー (.svn隠しフォルダーなし)
  2. svn delローカルとリポジトリ、
  3. svnci
  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
于 2011-09-13T03:26:09.547 に答える
21

まずは外して…

ディレクトリfooがすでにバージョン管理下にある場合は、最初に次のように削除します。

svn rm --keep-local foo

...次に無視します:

svn propset svn:ignore foo .
于 2013-06-27T15:16:41.143 に答える
14

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

于 2008-09-22T17:01:43.563 に答える
12

...そして、複数のディレクトリ(ファイルbuild/ temp/*.tmpファイルなど)を無視したい場合は、2つのステップでそれを行うことができます(最初の無視プロパティを無視して無視プロパティを編集する(ここで他の回答を参照))か、次のようなものを書くことができます

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

コマンドラインで。

于 2010-11-17T10:25:03.193 に答える
11

複数のエントリを無視するコマンドは少しトリッキーで、バックスラッシュが必要です。

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

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

于 2011-07-14T06:40:12.940 に答える
6

複数の無視のためのBashワンライナー:

svn propset svn:ignore ".project"$'\n'".settings"$'\n'".buildpath" "yourpath"
于 2011-09-05T09:24:16.553 に答える
5

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

例:

/トランク

/ trunk / cache

/ trunk / cache / subdir1

/ trunk / cache / subdir2

cd /trunk
svn ps svn:ignore . /cache
cd /trunk/cache
svn ps svn:ignore . *
svn ci
于 2010-10-04T10:22:22.687 に答える
4

ファイルを無視するためのこのような恐ろしい、偽の、難しい方法に対する「ありがとう」 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

もう 1 つ: 私は自分の svn チェックアウトを多くのランダムなファイルで汚染する傾向があります。コミットするときは、これらのファイルを「古い」サブディレクトリに移動し、svn に「古い」サブディレクトリを無視するように指示します。

于 2013-10-08T06:20:35.777 に答える
4

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

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

于 2008-09-22T17:01:49.117 に答える
4

ジェイソンの答えはうまくいくでしょう。ただし、svn:ignore を "." に設定する代わりに、キャッシュ ディレクトリでは、キャッシュ ディレクトリが常に存在するとは限らない場合に備えて、親ディレクトリの svn:ignore プロパティに「キャッシュ」を含めることができます。私はこれを多くの「使い捨て」フォルダーで行います。

于 2008-09-22T17:02:22.670 に答える
3

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

于 2008-09-22T17:01:02.347 に答える
3

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

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

svn delete --keep-local path/directory_to_keep/*

  1. 次に、ディレクトリ (およびすべてのコンテンツ) を無視するように設定します。

svn propset svn:ignore "*" path/directory_to_keep

于 2015-06-13T22:39:36.330 に答える
2

svn:ignoreプロパティを設定します。ほとんどの UI svn ツールには、これを行う方法と、リンクのコマンド ラインの説明があります。

于 2008-09-22T16:56:45.260 に答える
1

バージョンを使用しているため、実際には非常に簡単です。

  • チェックアウトしたコピーを閲覧する
  • 無視するディレクトリをクリックします
  • 右側の [無視] ボックスで、[編集] をクリックします。
  • *.* と入力してすべてのファイルを無視します (または、jpg ファイルのみの場合は *.jpg など)。
于 2012-07-24T01:45:28.767 に答える
1

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

于 2012-09-24T15:22:50.427 に答える
1

この単純なアクティビティを行う方法を探すのに多くの時間を失った後、適切な説明を見つけるのは難しくありませんでした.

まずサンプル構造を

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

1 – 最初にエディターを構成します。私の場合は vim export SVN_EDITOR=vim

2 – 「svn propedit svn:ignore project/trunk/」は新しいファイルを開き、「target」と入力してファイルを保存して閉じると、ファイルとサブディレクトリを追加できます。

$svn st ? プロジェクト/トランク/myfile.x

ありがとう。

于 2014-02-19T20:08:44.903 に答える