私はSVNを使い始めたばかりで、ソース管理下では必要のないキャッシュディレクトリがあります。 SVNでディレクトリ/フォルダ全体を無視するにはどうすればいいですか?
親ディレクトリのsvn:ignore
プロパティを設定します。
svn propset svn:ignore dirname .
無視するものが複数ある場合は、プロパティ値を改行で区切ります。その場合、外部エディタを使用してプロパティ値を編集する方が簡単です。
svn propedit svn:ignore .
これがディレクトリ構造の例です。
\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
言及することが重要:
コマンドラインでは使えない
svn add *
コマンドラインで*
が展開されるため、svn add
はすべてのファイルを追加したいと考えているため、無視されたファイルも追加されます。したがって、代わりにこれを使用してください。
svn add --force .
これを機能させるためにしばらく時間をかけたので、ファイルがすでにSVNに存在する場合は、それらをsvn delete
してからsvn:ignore
プロパティを編集する必要があることに注意してください。
私はそれが明白に見えることを知っています、しかし、私がそれが単にそれらをローカルで無視するだろうと思ったとき、彼らは私の?
リストでsvn status
として現れ続けました。
Svnコマンドラインツールを使用してこれを実行している場合は、少し拡大すると、次のように入力します。
svn propedit svn:ignore path/to/dir
選択したテキストエディタを開き、 '*'を入力してその中のすべてを無視し、保存して終了します - これはsvn内のディレクトリ自体を含みますが、その中のすべてのファイルを無視します。親のパスをクリックし、ファイルのディレクトリの名前を次に入力します。保存したら、アップデートを実行し( 'svn up')、適切なパスをチェックインします。
親ディレクトリでsvn:ignore
プロパティを設定します。
$ cd parentdir
$ svn ps svn:ignore . 'cachedir'
これはsvn:ignore
の現在の値を上書きします。あなたは値を編集します:
$ svn pe svn:ignore .
これでエディタが開きます。 1行に1つずつ、複数のパターンを追加できます。
現在の値を見ることができます:
$ svn pg svn:ignore .
GUIを使用している場合は、これを行うためのメニューオプションがあるはずです。
上記のすべての貢献をありがとう。私はファイルを無視しながら私の経験からいくつかの追加情報を共有したいと思います。
フォルダがすでにリビジョン管理されている場合
svn importとsvn coの後に、通常初めて行うことになります。
すべてのランタイムキャッシュ、添付ファイルフォルダはバージョン管理下に置かれます。そのため、svn ps svn:ignoreの前に、リポジトリから削除する必要があります。
上記のSVNバージョン1.5ではsvn del --keep-local your_folder
を使用できますが、以前のバージョンの場合、私の解決策は次のとおりです。
.svn
隠しフォルダなし)無視するフォルダが複数必要な場合
svn:ignore
として設定する必要がありますsvn pe
はテキストファイルを編集する必要があるでしょう、そして vi を使ってあなたのテキストエディタを設定するために必要ならこのコマンドを使うことができます:
export SVN_EDITOR=vi
ファイルは次のようになります。
runtime
cache
attachments
assets
あなたのディレクトリfoo
がすでにバージョン管理下にある場合は、まずそれを削除します。
svn rm --keep-local foo
svn propset svn:ignore foo .
複数のディレクトリを無視したい場合(build/
temp/
と*.tmp
ファイルを言う)、2つのステップ(最初のものを無視し、プロパティを無視するを編集する(他の答えを参照))または1つのように書く
svn propset svn:ignore "build
temp
*.tmp" .
コマンドラインで。
特定のSVNクライアント TortoiseSVN を使用している場合は、コミット時にアイテムを右クリックして[無視するリストに追加]を選択できます。
複数のエントリを無視するというコマンドは少しややこしく、バックスラッシュが必要です。
svn propset svn:ignore "cache\
tmp\
null\
and_so_on" .
このコマンドは、カレントディレクトリ内のcache
、tmp
、null
、およびand_so_on
という名前のものはすべて無視します。
ネストされたディレクトリを無視するのに問題がありました。無視したいトップディレクトリは 'svn status'で表示されませんが、すべてのサブディレクトリは表示されます。これはおそらく他の誰にとっても自明のことですが、私はそれを共有したいと思いました。
例:
/トランク
/トランク/キャッシュ
/ trunk/cache/subdir1
/ trunk/cache/subdir2
cd /trunk
svn ps svn:ignore . /cache
cd /trunk/cache
svn ps svn:ignore . *
svn ci
"ありがとうございました" 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'を無視するように指示します。
1つのライナーを複数回無視します。
svn propset svn:ignore ".project"$'\n'".settings"$'\n'".buildpath" "yourpath"
SVNが無視するディレクトリを保持するには:
svn delete --keepローカルパス/ directory_to_keep/*
svn propset svn: "*"パスを無視します/ directory_to_keep
プロジェクトディレクトリが/ Project、キャッシュディレクトリが/ Project/Cacheの場合は、/ ProjectにSubversionプロパティを設定する必要があります。プロパティ名は "svn:ignore"、プロパティ値は "Cache"にします。
プロパティの詳細についてはSubversionマニュアルの this ページを参照してください。
Jasonの答えがうまくいくでしょう。ただし、svn:ignoreを "。"に設定する代わりに、キャッシュディレクトリでは、キャッシュディレクトリが常に存在するとは限らない場合に、 parent ディレクトリのsvn:ignoreプロパティに "cache"を含めることができます。私はいくつかの "使い捨て"フォルダでこれを行います。
TortoiseSVNのようなSVNのフロントエンド、あるいはある種のIDE統合を使っているのであれば、コミット/追加操作と同じメニューに無視オプションもあるはずです。
Versionsを使っているので、実際にはとても簡単です。
Svn:ignore property を設定します。ほとんどのUI svnツールはこれを行う方法とリンク内のコマンドラインの説明を持っています。
次のように Eclipse で解決される:
まず最初に、あなたのフォルダとプロジェクトを同期させます。
チーム - >同期
次のチームビューでは、SVNサーバーにコミットできるすべてのリソースを見ることができます。
そのため、無視したいリソースのリソースフォルダを選択してから、無視して無視できます。
チーム - >
svn:ignore
に追加.
その後、確認ウィンドウで、最初のオプション「名前で無視」を選択します。
たとえば、ターゲットフォルダとその.classリソースを無視したい場合は、同期します。同期ビューでは、ターゲットフォルダを選択します。その後、選択します
チーム - >追加
svn:ignore
にして、確認ウィンドウの最初のオプションを確認します。
末尾のスラッシュも見てください。無視設定ファイルにimages/*
を含めても./images/
が無視されないことがわかりました。私がsvn status -u
を実行したとき、それはまだ? images
を示しました。そのため、無視設定を単にimages
に変更しました。スラッシュはありません。ステータスチェックを実行し、それをクリアしました。
この単純な活動を実行する方法を探すために多くの時間を失った後、私はそれがまともな説明を見つけるのは難しくないと投稿することにしました。
まずサンプル構造を聞かせて
$ 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
ありがとう。