私はSVNを使い始めたばかりで、ソース管理下で不要なキャッシュディレクトリがあります。SVNでディレクトリ/フォルダー全体を無視するにはどうすればよいですか?
私はSVNを使い始めたばかりで、ソース管理下で不要なキャッシュディレクトリがあります。SVNでディレクトリ/フォルダー全体を無視するにはどうすればよいですか?
回答:
svn:ignore
親ディレクトリのプロパティを設定します。
svn propset svn:ignore dirname .
無視するものが複数ある場合は、プロパティ値を改行で区切ります。その場合、外部エディターを使用してプロパティ値を編集する方が簡単です。
svn propedit svn:ignore .
svn rm --keep-local dirname
最初。(私のsvn stat出力は膨大で、しばらく頭にぶつかりました。)
svn propset svn:ignore -F file.txt .
svn:ignore
ではなくsvn::ignore
、私が行ったように。任意のプロパティを設定できるため、後者はOKに設定され、プロパティを表示および編集できますが、SVNがリストされたファイルを無視することはありません。
次にディレクトリ構造の例を示します。
\project
\source
\cache
\other
project
キャッシュディレクトリが追加されておらず、そのように表示されていることがわかります。
> svn st
M source
? cache
ignoreプロパティを設定するには、次のようにします。
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
dirname
。たとえば、と入力するときにsvn propset svn:ignore dirname
、(bash)シェルがdirnameを入力できるようにすると、末尾にスラッシュが追加され、コマンドが残りますsvn propset svn:ignore dirname/
が、フォルダーは無視されません。少なくとも、それは私の経験でした。
少し拡張すると、svnコマンドラインツールでこれを行う場合は、次のように入力します。
svn propedit svn:ignore path/to/dir
選択したテキストエディターを開き、 '*'を入力してその中のすべてを無視し、save + quitを実行します。これにより、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 ps svn:ignore . 'cachedir'
結果は cachedir is not under version control
です。svn ps svn:ignore 'cachedir' .
私のために働くように変更
上記のすべての貢献に感謝します。ファイルを無視しながら、私の経験からいくつかの追加情報を共有したいと思います。
フォルダが既にリビジョン管理されている場合
後のsvnインポートおよびSVN共同私たちは通常、最初の時間のために何をすべきか、ファイルを。
すべてのランタイムキャッシュ、添付ファイルフォルダーはバージョン管理下にあります。そのため、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
svn propset svn:ignore -F .ignorethesefiles .
ファイルの内容を使用するを使用することもできます。私はそれを維持するのが好きなので、無視されているものを知っています。編集にはフォローアッププロップセットが必要です。
特定のSVNクライアントTortoiseSVNを使用している場合は、コミット時に、アイテムを右クリックして[無視リストに追加]を選択するオプションがあります。
複数のエントリを無視するコマンドは少しトリッキーで、バックスラッシュが必要です。
svn propset svn:ignore "cache\
tmp\
null\
and_so_on" .
このコマンドは、名前の何かを無視しますcache
、tmp
、null
、およびand_so_on
カレントディレクトリに。
svn propset svn:ignore -F .ignorethesefiles .
ファイルを使用できるようになります。そして、述べたように、あなたは常にpropeditを持っています。
「ありがとう」 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に指示します。
複数の無視のワンライナーをバッシュ:
svn propset svn:ignore ".project"$'\n'".settings"$'\n'".buildpath" "yourpath"
プロジェクトディレクトリの名前が/ Projectで、キャッシュディレクトリの名前が/ Project / Cacheの場合、/ Projectにsubversionプロパティを設定する必要があります。プロパティ名は "svn:ignore"で、プロパティ値は "Cache"である必要があります。
TortoiseSVNのようなSVNのフロントエンド、または何らかのIDE統合を使用している場合は、コミット/追加操作と同じメニューに無視オプションもあるはずです。
次の方法でEclipseで解決:
まず、フォルダーをプロジェクトに同期します。
チーム->同期
次のビューであるチームビューでは、SVNサーバーにコミットできるすべてのリソースを確認できます。
したがって、無視するリソースのリソースフォルダーを選択し、それを使用して無視できます
チーム->に追加
svn:ignore
。
その後、確認ウィンドウで最初のオプション「名前で無視」を選択してください。
たとえば、ターゲットフォルダーとそれらの.classリソースを無視したい場合は、同期を行い、同期ビューでターゲットフォルダーを選択します。その後、私は選択します
チーム->追加
に移動svn:ignore
し、確認ウィンドウで最初のオプションを確認します。
この簡単なアクティビティの方法を探すために多くの時間を失った後、私は投稿することにしました。適切な説明を見つけるのは難しくありませんでした。
まずサンプル構造をみましょう
$ svn st?プロジェクト/トランク/ターゲット?project / trunk / myfile.x
1 –最初にエディターを構成し、mycase vim export SVN_EDITOR = vimで
2 –「svn propedit svn:ignore project / trunk /」は新しいファイルを開き、ファイルとサブディレクトリを追加できます。「target」と入力すると、ファイルを保存して閉じ、機能します。
$ svn st?project / trunk / myfile.x
ありがとう。