安裝 Subversion 到 Windows 平台可參考這篇文章,但是在設定 Subversion 存取權限時卻需要注意關於中文目錄名稱的問題,我最近在設定 Subversion 存取權限時就遇到一個用中文命名的目錄怎樣都無法設定成功,所有被賦予這個目錄權限的人都無法存取,永遠都會回應 403 Forbidden 的錯誤訊息(如下):
Server sent unexpected return value (403 Forbidden) in response to OPTIONS
request for 'https://example.com/repos/project1/trunk'
我也去查詢 Apache 的 error log 發現這樣的訊息:
Access denied: 'username' GET project1:/trunk/\xe4\xb8\xad\xe6\x96\x87\xe7\x9b\xae\xe9\x8c\x84
我再去看 authz.ini 設定:
[project1:/trunk/中文目錄]
@dev-team=rw
username=rw
然後我再試著將中文改成 UrlEncode 與 Hex 的格式,卻還是都不行:
[project1:/trunk/中文目錄]
@dev-team=rw
username=rw
[project1:/trunk/\xe4\xb8\xad\xe6\x96\x87\xe7\x9b\xae\xe9\x8c\x84]
@dev-team=rw
username=rw
[project1:/trunk/%e4%b8%ad%e6%96%87%e7%9b%ae%e9%8c%84]
@dev-team=rw
username=rw
分析至此,我直覺的認為應該是 Unicode 的問題了,然後我就將此檔改成 UTF-8 ( 含 BOM 字元 ),改完後卻更慘,從 Apache error log 中查到 "Section header expected" 的錯誤:
Failed to load the AuthzSVNAccessFile: D:\\SVNRepository\\authz.ini:1: Section header expected
Access denied: 'username' GET project1:/trunk
又試了一會兒原本要放棄了,但多堅持個 20 分鐘終於被我試出來,原來只要將檔案格式改成 UTF-8 without BOM 即可,如果你用 Notepad++ 可以參考以下圖示修改 authz.ini 檔案的編碼:
改完存檔之後就一切正常了,以後可以放心的在 Subversion 中使用中文命名了。