# 請勿將某些檔案類型的檔案簽入到 Subversion 版本庫

**本文章已過期，請查看新版文章：**[請勿將某些檔案類型的檔案簽入到 Subversion 版本庫 (二版)](/post/2012/03/30/Do-not-commit-these-file-type-into-subversion-repository-2.aspx)

我們在用 Visual Studio 開發專案的時候，常常都會有人將一些個人的設定檔也簽入到 Subversion 版本庫，例如說：\*.suo, \*.user 等。導致每次開啟 Visual Studio 的時候都會變更這些檔案的內容，造成每次簽入變更到資料庫時都會將這些檔案也都簽入，當其他團隊成員在做 SVN Update 時，會造成檔案衝突的問題，對大家來說也是個困擾。

我這裡整理出一些常見的檔案類型，請不要將以下檔案簽入(commit)到 Subversion 版本庫：

-   \*.suo (Solution User Options) 方案使用者選項檔 ( 定義在整個方案中使用者自己的開發環境 )。  
      
    參考：Visual Studio 中的檔案類型與副檔名  
    [http://msdn2.microsoft.com/zh-tw/library/xhkhh4zs.aspx](http://msdn2.microsoft.com/zh-tw/library/xhkhh4zs.aspx)  
      
    
-   \*.webinfo 控制 Web 專案虛擬根目錄位置的 Web 資訊檔，這個檔可能每個人都不太一樣，所以不建議將這個檔 commit 進 SVN 版本庫。  
      
    常見的有 vwd.webinfo, \*.csproj.webinfo 或 \*.vbproj.webinfo  
      
    參考：Visual Web developer 檔案系統網站  
    [http://msdn2.microsoft.com/zh-tw/library/e5x4xz73(VS.80).aspx](http://msdn2.microsoft.com/zh-tw/library/e5x4xz73\(VS.80\).aspx)  
      
    參考：ASP.NET 網站檔案類型  
    [http://msdn2.microsoft.com/zh-tw/library/2wawkw1c(VS.80).aspx](http://msdn2.microsoft.com/zh-tw/library/2wawkw1c\(VS.80\).aspx)  
      
    
-   \*.csproj.user 專案使用者選項檔 ( 在 VB.NET 是 \*.vbproj.user )  
      
    
-   \*.dbproj.schemaview   \[ **2011-05-29 補充** \]  
      
    這是 Visual Studio 2010 資料庫專案的暫存檔，每個使用者都不會一樣，因此應該列入忽略清單之中。  
      
    [In the new Visual Studio 2010 SQL Server project type, what is the .dbproj.schemaview file for?](http://stackoverflow.com/questions/3937160/in-the-new-visual-studio-2010-sql-server-project-type-what-is-the-dbproj-schema)
-   Class Library 專案中的 Bin 目錄與 Obj 目錄，此為建置輸出檔，每次編譯都會不太一樣，沒必要將這些變動的檔案簽入到 SVN 版本庫。例如 \*.dll 及 \*.exe 檔案。  
      
    參考：簡介原始檔控制  
    [http://msdn2.microsoft.com/zh-tw/library/ms171339(VS.80).aspx](http://msdn2.microsoft.com/zh-tw/library/ms171339\(VS.80\).aspx)
    

如果你已經簽入(commit)到 SVN 版本庫的話，必須用以下步驟將檔案從版本庫中移出，並從下次起忽略這些檔案：

1.  先備份這些檔案，然後刪除這些檔案
    
2.  簽入這些刪除的變更
    
3.  將步驟 1 備份的檔案還原
    
4.  重新簽入，但這時會看到幾個新的檔案(non-versioned)，將這些檔案加入 SVN 的 ignore list ( 如下圖示 )  
      
    ![重新簽入，但這時會看到幾個新的檔案(non-versioned)，將這些檔案加入 SVN 的 ignore list ](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/5b2d21bc26f2c4aa535e-Screenshot-080219-125337.png "重新簽入，但這時會看到幾個新的檔案(non-versioned)，將這些檔案加入 SVN 的 ignore list ")  
      
    加入後檔案會不見，但是卻會出現目錄的名稱，但是 Status 卻是 modified (property change only) 代表此目錄已經加上了 ignore 的屬性，必須要簽入到 SVN 版本庫後才能將此設定 share 給其他團隊成員：  
      
    ![加入後檔案會不見，但是卻會出現目錄的名稱，但是 Status 卻是 modified (property change only) 代表此目錄已經加上了 ignore 的屬性，必須要簽入到 SVN 版本庫後才能將此設定 share 給其他團隊成員](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/9540da1e51e1c2765f71-Screenshot-080219-125605.png "加入後檔案會不見，但是卻會出現目錄的名稱，但是 Status 卻是 modified (property change only) 代表此目錄已經加上了 ignore 的屬性，必須要簽入到 SVN 版本庫後才能將此設定 share 給其他團隊成員")
