svnを使用してファイルとフォルダを無視する

3378 ワード

svnを使用してファイルとフォルダを無視する方法gitを試したことがある場合は、svnの無視がコマンドラインでどれだけ煩雑であるかを知っています.私はandroidの開発に従事しています.svnがこのように無視できることを望んでいます.
# Built application files
*.apk
*.ap_

# Files for the ART/Dalvik VM
*.dex

# Java class files
*.class

# Generated files
bin/
gen/
out/

# Gradle files
.gradle/
build/

# Local configuration file (sdk path, etc)
local.properties

# Proguard folder generated by Eclipse
proguard/

# Log Files
*.log

# Android Studio Navigation editor temp files
.navigation/

# Android Studio captures folder
captures/

# Intellij
*.iml
.idea/workspace.xml
.idea/libraries

# Keystore files
*.jks

svnの無視は簡単だと思っていたが、実際に最終的な無視効果を達成するのにかなりの時間がかかった.だからここで記録を作って、私の経験を分かち合います.
SVNのignore属性
svnは、プロパティによって倉庫内のファイルをどのように処理するかを判断します.プロパティの1つはsvn:ignoreです.svn propsetを使用して、svn:ignoreを個別のディレクトリに設定できます.svn:ignoreに値、ファイル名、または式を設定できます.例:
svn propset svn:ignore *.class .

このときsvn statusコマンドを使用すると、見えません.classファイルです.無視したファイルも表示したい場合は、次のように入力します.
svn status --no-ignore

フォルダを無視
フォルダを無視して、決してスラッシュをつけないでください.
svn propset svn:ignore bin . # yes  
svn propset svn:ignore /bin . # nope   
 svn propset svn:ignore bin/ . # nope

使用-R再帰属性構成
上記の方法では、現在のディレクトリしか無視できません.自分のサブフォルダも無視したい場合は、-R目覚まし操作を使用します.
svn propset svn:ignore -R *.class .

複数種類のファイルを無視
以下のコマンドで無視できます*.class,*.apk, and Thumbs.db
svn propset svn:ignore -R *.class .  
svn propset svn:ignore -R *.apk .   
svn propset svn:ignore -R Thumbs.db .

あるいは、次のようにすることができます.
svn propset svn:ignore -R "*.class
> *.apk
> Thumbs.db" .

-Fを使用してプロファイルを無視
Androidのように、eclipseエンジニアリングではファイルを無視する必要があります.そこで新しい文書ドキュメントを作成する.svnignoreで書き込み:
build
bin  
gen  
proguard  
.classpath  
.project  
local.properties  
Thumbs.db  
*.apk  
*.ap_  
*.class  
*.dex

次に、
svn propset svn:ignore -R -F .svnignore .

グローバル無視完了.
注意事項
上記の手順を行うと、各フォルダ内のbin、genなどのディレクトリは無視されます.だから名前をつけるときは無視した名前と同じファイルをつけないでください.
無視の表示、削除
すべて表示
svn status --no-ignore

指定したディレクトリの表示
svn proplist -v [PATH]

無視の削除
svn status --no-ignore

ここで終わると思ってるの?
svnにはまだ穴があります...addを使うときは絶対に使わないでください
svn add *

これにより、無視されたファイルも倉庫に追加されます.次のコマンドラインを使用して代替する必要があります.
svn add --force .

注意はポイントです.決して*と書かないでください.
無視する前に、ファイルがaddされるべきである場合は、先に削除する必要があります.
svn delete [path]

ファイルを削除せずにsvnからのみ無視
svn delete --keep-local [path]

svn add後のデータのリカバリ/キャンセル/復元方法
svn addを見つけた後、このコミットされたデータは不要になることがあります.この場合はsvn revertで処理する必要があります.
たとえば
A testcase/perday.php
どうやってキャンセルしますか?
svn revert testcase/perday.php
次のプロンプトが表示されます.
「testcase/perday.php」を復元
説明スクリプトは、SVNバージョンの制御を受けずに元の状態に戻りました.
ディレクトリ全体をリカバリするにはどうすればいいですか?ディレクトリ全体をsvn addにしたり、ディレクトリ全体に異なる深さのフォルダがある場合は、他の方法で解決する必要があります.
svn revert --depth=infinity .

参考資料:http://stackoverflow.com/questions/116074/how-do-i-ignore-a-directory-with-svn http://superchlorine.com/2013/08/getting-svn-to-ignore-files-and-directories/https://www.coder4.com/archives/4244