language-agnostic - 最好的一般SVN忽略模式?




version-control development-environment environment (15)

由於您可能使用第三方庫和dll作為項目的一部分,因此我沒有看到從存儲庫中阻止* .lib和* .dll的智慧。 這些是要存儲在存儲庫中的東西。

什麼是最好的(或盡可能)一般的SVN忽略使用模式?

有許多不同的IDE,編輯器,編譯器,插件,平台等特定文件和一些“重疊”的文件類型(即對於某些類型的項目而不適用於其他類型)。

但是,不管您的開發環境的具體情況如何,您都不會自動將其包含在源代碼管理中的大量文件類型。

對於這個問題的答案可以作為任何項目的一個很好的起點 - 只要求他們添加他們需要的少數環境特定項目。 它也可以適用於其他版本控制系統(VCS)。


用於我的Visual Studio項目

*/bin */obj *.user *.suo

您可以從那裡擴展更多的文件類型。


我忽略Visual Studio的模式:

*/bin */obj */Release */Debug *.suo *.err *.log *.obj *.bin *.dll *.exe *.LOG *.user *.pdb [tT]emp [tT]empPE Ankh.Load thumbs.db *.resharper *.vspscc *.vsssccc *.scc */_ReSharper* */_ReSharper.* bin obj *.resharperoptions *.db *.bak *_ReSharper* *.snk logs output TestResults *.crunchsolution.* *.crunchproject.*

格式化以提高可讀性

*/bin */obj */Release */Debug *.suo *.err *.log *.obj *.bin *.dll *.exe 
*.LOG *.user *.pdb [tT]emp [tT]empPE Ankh.Load thumbs.db *.resharper 
*.vspscc *.vsssccc *.scc */_ReSharper* */_ReSharper.* bin obj 
*.resharperoptions *.db *.bak *_ReSharper* *.snk logs output TestResults 
*.crunchsolution.* *.crunchproject.*

該模式取決於您正在使用的操作系統。

在Linux上,您需要先封鎖**。o *,**。so *,**。a *和**。la *。 您可能還想阻止**〜*(來自編輯的備份文件)和#*#(來自崩潰的emacs備份)。

在Windows上,你至少需要** .obj *,**。lib *和** .dll *。

您需要阻止的任何其他文件取決於您的IDE,編輯器和編譯器。


Visual Studio 2010用戶應該添加ipch (包含C ++預編譯頭文件的文件夾)和*.sdf (intellisense用於任何類型項目的大文件)。


gitignore.io為git提供了可配置的模式。 他們提供了一個可讀的列表,您需要重新格式化SVN。

例如, 請求MicrosoftOffice和Windows返回

# Created by https://www.gitignore.io/api/microsoftoffice,windows

### MicrosoftOffice ###
*.tmp

# Word temporary
~$*.doc*

# Excel temporary
~$*.xls*

# Excel Backup File
*.xlk

# PowerPoint temporary
~$*.ppt*

# Visio autosave temporary files
*.~vsdx


### Windows ###
# Windows image file caches
Thumbs.db
ehthumbs.db

# Folder config file
Desktop.ini

# Recycle Bin used on file shares
$RECYCLE.BIN/

# Windows Installer files
*.cab
*.msi
*.msm
*.msp

# Windows shortcuts
*.lnk

它似乎可以直接用作svn:global-ignore


Visual Studio(VC ++)用戶肯定需要排除.ncb文件


基於Burly的忽略模式,我將ReSharper添加到忽略列表中

格式化為複制和粘貼:

*.o *.lo .la ## .*.rej .rej .~ ~ .# .DS_Store thumbs.db Thumbs.db *.bak *.class *.exe *.dll *.mine *.obj *.ncb *.lib *.log *.idb *.pdb *.ilk .msi .res *.pch *.suo *.exp ~. cvs CVS .CVS .cvs release Release debug Debug ignore Ignore bin Bin obj Obj *.csproj.user *.user _ReSharper.* *.resharper.user

格式化以提高可讀性:

*.o *.lo .la ## .*.rej .rej .~ ~ .# .DS_Store thumbs.db Thumbs.db *.bak
*.class *.exe *.dll *.mine *.obj *.ncb *.lib *.log *.idb *.pdb *.ilk .msi .res *.pch *.suo *.exp ~. cvs
CVS .CVS .cvs release Release debug
Debug ignore Ignore bin Bin obj Obj
*.csproj.user *.user _ReSharper.* *.resharper.user

Windows用戶可能想要扔在desktop.ini和thumbs.db中。


對於Eclipse,我使用:

bin
.*

。*獲取所有項目配置。 你幾乎從不想檢入一個“隱藏​​的”目錄或文件,但如果它出現,你仍然可以添加它。


如果您使用Resharper,請添加Resharper。

另一個要注意的是Ankh *。*


每當我遇到一個我通常不想在存儲庫中創建的文件時,我都會更新該模式。 我相信沒有“最好”的模式 - 它總是取決於你所開發的語言和環境

而且,你不太可能想到所有可能的“可忽略的”文件類型 - 你總是會遇到一個你忘記包含的文件類型。 這就是為什麼更新模式,你走的最好。


我會在這個問題上加上我自己的兩分錢:

在Windows和Linux平台上,我使用以下SVN忽略模式與TortoiseSVN和Subversion CLI進行本地C ++,C#/ VB.NET和PERL項目。 這對我來說很有效!

格式化為複制和粘貼:

*.o *.lo *.la #*# .*.rej *.rej .*~ *~ .#* .DS_Store thumbs.db Thumbs.db *.bak *.class *.exe *.dll *.mine *.obj *.ncb *.lib *.log *.idb *.pdb *.ilk *.msi* .res *.pch *.suo *.exp *.*~ *.~* ~*.* cvs CVS .CVS .cvs release Release debug Debug ignore Ignore bin Bin obj Obj *.csproj.user *.user *.generated.cs

格式化以提高可讀性:

*.o *.lo *.la #*# .*.rej *.rej
.*~ *~ .#* .DS_Store thumbs.db 
Thumbs.db *.bak *.class *.exe *.dll
*.mine *.obj *.ncb *.lib *.log 
*.idb *.pdb *.ilk *.msi* .res *.pch *.suo 
*.exp *.*~ *.~* ~*.* cvs  CVS .CVS .cvs  
release Release debug Debug
ignore Ignore bin Bin obj  Obj
*.csproj.user *.user
*.generated.cs

gitignore.io為git提供了可配置的模式。 他們提供了一個可讀的列表,您需要重新格式化SVN。

例如, 請求MicrosoftOffice和Windows返回

# Created by https://www.gitignore.io/api/microsoftoffice,windows

### MicrosoftOffice ###
*.tmp

# Word temporary
~$*.doc*

# Excel temporary
~$*.xls*

# Excel Backup File
*.xlk

# PowerPoint temporary
~$*.ppt*

# Visio autosave temporary files
*.~vsdx


### Windows ###
# Windows image file caches
Thumbs.db
ehthumbs.db

# Folder config file
Desktop.ini

# Recycle Bin used on file shares
$RECYCLE.BIN/

# Windows Installer files
*.cab
*.msi
*.msm
*.msp

# Windows shortcuts
*.lnk

在Subversion中進行分支是由非常非常輕巧高效的複制工具來實現的。

分支和標記實際上是相同的。 只需使用svn copy命令將存儲庫中的整個文件夾複製到存儲庫中的其他位置即可。

基本上這意味著按照慣例,複製文件夾意味著什麼 - 無論是備份,標記,分支還是重擊。 根據你想如何考慮事情(通常取決於你以前使用過哪個SCM工具),你需要在你的倉庫中設置一個文件夾結構來支持你的風格。

常見的樣式是在存儲庫頂部有一堆名為tagsbranchestrunk等的文件夾 - 它允許您將整個trunk (或子集)複製到tags和/或branches文件夾中。 如果您有多個項目,則可能需要在每個項目下複製這種結構:

可能需要一段時間才能習慣這個概念 - 但是它很有效 - 只要確保你(和你的團隊)清楚你將要使用的約定。 擁有一個好的命名約定也是一個好主意 - 告訴你為什麼分支/標籤已經生成以及是否仍然適用 - 考慮歸檔過時的分支的方法。







svn language-agnostic version-control development-environment environment