﻿# 如何快速變更 Subversion 專用的隱藏目錄從 .svn 改成 _svn

[TortoiseSVN](https://tortoisesvn.net/) 安裝好之後，預設 Checkout 出來的目錄中都會加上 .svn 隱藏目錄，裡面儲存了關於此目錄中所有檔案的版本資訊與變更狀態，不過我剛開始開發 ASP.NET 時(2.0)，就從網路上的文件中得知「建議」將預設的 .svn 修改成 \_svn，我個人是從善如流在我的開發主機都是用 \_svn 命名，但是我有一台測試機上面用的還是 .svn，而長久以來也沒遇到過問題，不過今天總算被我給遇到了。

因為最近承接了一個 ASP.NET 1.1 的網站，之前開發也都還正常，但是最近開始將整個專案導入 Subversion 管理後，在其中一台開發主機就出問題了，載入專案時出現【Refreshing the project failed. Unable to retrieve folder information from the server.】的錯誤訊息，如下圖示：

![Microsoft Development Environment - Refreshing the project failed. Unable to retrieve folder information from the server.](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/1a1e5b1447c0546d47e7-image_3.png)

然後用此訊息查了網路上的資訊後，終於確認只要目錄種出現任何 . (小數點) 開頭的目錄或檔案，就會導致這個問題發生，所以我必須要將所有的 .svn 目錄都改成 \_svn 才行，並且修改 TortoiseSVN 的設定。

**首先，我們先修改 TortoiseSVN 的設定**

[![Settings - TortoiseSVN](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/d26efc962227d0d87163-image_thumb_1.png)](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/825cf06b90ff295c4ce4-image_5.png)

**再來，就是修正工作目錄的所有子目錄下的 .svn 目錄**，作法有兩種：

1.  將工作目錄全部刪除，並重新簽出(Checkout)一次，不過你可能還有許多未簽入的檔案，使用此法較為不便。
2.  手動將所有 .svn 目錄名稱改名為 \_svn，不過有時專案過大，所以最方便的方式還是用批次檔修改比較快。

我寫了兩個批次檔指令，可以透過一行批次檔將所有目前目錄與所有子目錄下的 .svn 都批次改成 \_svn

**將 .svn 目錄名稱改成 \_svn**

FOR /R . %f IN (.) DO IF EXIST "%f\\\\.svn" attrib -H "%f\\\\.svn" && move "%f\\\\.svn" "%f\\\\\_svn" && attrib +H "%f\\\\\_svn"

**將 \_svn 目錄名稱改成 .svn**

FOR /R . %f IN (.) DO IF EXIST "%f\\\\\_svn" attrib -H "%f\\\\\_svn" && move "%f\\\\\_svn" "%f\\\\.svn" && attrib +H "%f\\\\.svn"

以上的指令只要開啟「命令提示字元」，並且進入該工作目錄，剪下、貼上即可執行完畢。

**相關連結**

-   [Visual Studio .Net 2003 Error: "Refreshing the project failed. Unable to retrieve folder information from the server."](https://web.archive.org/web/20150410091047/http://robz.homedns.org:8080/blog/archive/2004/11/05/187.aspx)
-   [如何快速刪除 Subversion 專用的隱藏目錄](/post/2008/04/18/Remove-Subversion-Folders-using-Shell-Command)
