現(xiàn)在碼云目前支持使用 Subversion 對(duì)倉(cāng)庫(kù)進(jìn)行操作,以下是使用指南和注意事項(xiàng)。
使用前注意
倉(cāng)庫(kù)體積超過(guò)300 MB不建議使用 Subversion 操作倉(cāng)庫(kù),存儲(chǔ)庫(kù)容量達(dá)到 400 MB,或者 300 MB 并且存儲(chǔ)大量非文本數(shù)據(jù)時(shí),我們將關(guān)閉倉(cāng)庫(kù)的 Subversion 支持。
由于 GIT 不支持空目錄的提交,在存儲(chǔ)機(jī)器上,無(wú)論是普通倉(cāng)庫(kù)還是開啟 Subversion 接入的倉(cāng)庫(kù)存儲(chǔ)時(shí)都是 GIT 倉(cāng)庫(kù),Subversion 的 commit 是提交到 git 倉(cāng)庫(kù)上的,所以碼云的 Subversion不支持空目錄的提交。
第一次開啟 Subversion, 操作一個(gè)倉(cāng)庫(kù),如果倉(cāng)庫(kù)體積較大或者提交次數(shù)較多,由于緩存的緣故,響應(yīng)時(shí)間會(huì)比較長(zhǎng)。
不支持 Subversion 的 Hook 機(jī)制,請(qǐng)使用 WebHook 替代。
Subversion 屬性不完全支持。
客戶端需要開啟 SASL 支持,不支持的客戶端無(wú)法訪問。
部分 svn 命令不支持??梢圆榭?b>Subversion 客戶端的兼容性
版本號(hào)的映射,目前 Subversion 的版本號(hào)計(jì)算依據(jù)為本分支所有的commit 數(shù)目減一 不包括 merge ,如果使用了在 git 中強(qiáng)制回退等操作,請(qǐng)重新檢出。
WARNING:
由于 git 在設(shè)計(jì)上就沒有考慮空文件Kernel.org: Git FAQ
我們?cè)O(shè)計(jì)的原則就是不破壞,不主動(dòng)修改用戶的倉(cāng)庫(kù),我們的后端存儲(chǔ)的完全是一個(gè) git 倉(cāng)庫(kù),如果我們添加了,一次提交內(nèi)容也不會(huì)一致了,建議你在添加目錄的時(shí)候添加 .keep 之類的占位文件,空文件即可。
Git 與 SVN 混用時(shí)盡量不要使用 Git 強(qiáng)制推送。Git 與 SVN 混用注意事項(xiàng)
關(guān)于改版
Subversion 功能的最終解釋權(quán)歸 OSChina.NET 所有。Subversion 接入的規(guī)則可能在下一次改版中發(fā)生改變。
開啟方式
在項(xiàng)目的設(shè)置界面開啟
如果是空倉(cāng)庫(kù):
使用指南
碼云 支持的是 svn 協(xié)議。? 對(duì)于 svn 而言,獲取一個(gè)倉(cāng)庫(kù)的代碼通常是 checkout,在項(xiàng)目主頁(yè)我們通??梢垣@得 URL:

這個(gè)倉(cāng)庫(kù)地址為:
svn://git.oschina.net/svnserver/newos
1.獲取倉(cāng)庫(kù)代碼:
svn checkout svn://git.oschina.net/svnserver/newos newos
注意信息碼云的 SVN 接入后端是通過(guò) git 存儲(chǔ)庫(kù)實(shí)現(xiàn),URL 規(guī)則為 svn://域名/用戶名/項(xiàng)目名 .
使用上述命令,我們將得到項(xiàng)目默認(rèn)分支的代碼。并將本地的工作目錄命名為newos
如果最后不帶 newos,svn 默認(rèn)把本地工作目錄命名為 項(xiàng)目名
svn checkout svn://git.oschina.net/svnserver/newos
如果要獲得任意分支代碼,例如獲取newos的dev分支,請(qǐng)輸入近似如下的命令:
此時(shí)地址為:svn://域名/用戶名/項(xiàng)目名/branches/分支名.
svn checkoutsvn://git.oschina.net/svnserver/newos/branches/dev
特別的說(shuō)明,獲取主干分支,也就是 master 分支可以使用下面的分支格式
svn checkoutsvn://git.oschina.net/svnserver/newos/trunknewos
svn trunk 分支對(duì)應(yīng) master 分支 用戶應(yīng)當(dāng)盡量不使用下面格式
svn checkout svn://git.oschina.net/svnserver/newos
操作說(shuō)明
如果部分檢出倉(cāng)庫(kù),并且倉(cāng)庫(kù)根目錄下包含 branches/tags/trunk 這樣的目錄,請(qǐng)使用完整的路徑 layout,如下:
svn://git.oschina.net/username/example/trunk/tags/hellosvn://git.oschina.net/username/example/branches/dev/trunksvn://git.oschina.net/username/example/branches/dev/branches
如果沒有 master 分支,也就沒有 trunk 分支,檢出的 URL 不能省略分支名。比如只有一個(gè) dev 分支,必須使用下列格式,否則會(huì)提示倉(cāng)庫(kù)不存在。
svn cosvn://git.oschina.net/svnserver/newos/branches/dev? svnserver_dev
打開終端,輸入上述命令,出現(xiàn)以下下面提示。其中第一個(gè)認(rèn)證領(lǐng)域是用戶的密碼,這個(gè)可以留空。而用戶名是用戶在 GIT@OSC 登陸時(shí)使用郵箱地址。密碼則是用戶登陸 碼云 所使用的密碼一般而言,svn 會(huì)加密緩存用戶的用戶名密碼,所以,對(duì)倉(cāng)庫(kù)的操作只需要第一次輸入用戶郵箱和密碼。清除密碼緩存,用戶目錄下的.subversion/auth/svn.simple文件夾下的文件。

下圖則是成功的拉取了項(xiàng)目代碼。
查看本地工作目錄信息:
svninfo
cdhelloworldecho"test"> SVNReadMe.md#svn add SVNReadMe.md#svn add * --force類似于git add -Asvn add * --forcesvn update .svn commit -m"first svn commit"
Subversion 在提交前建議先使用 svn update 更新工作拷貝。也就相當(dāng)于 git pull 后再 git push。
Subversion 的提交是在線的,如果機(jī)器已經(jīng)離線,那么提交會(huì)失敗,這個(gè)過(guò)程用git的方式理解就是 git commit+git push。
用戶使用 svn 提交代碼同樣會(huì)有動(dòng)態(tài)顯示。
列出版本庫(kù)中的目錄內(nèi)容:
svn listsvn://git.net/svnserver/newos/trunk
導(dǎo)出倉(cāng)庫(kù)指定分支的所有文件,不含版本控制信息:
svn exportsvn://git.net/svnserver/newos/trunknewos
備注
安裝 Subversion 客戶端
在 Apache 基金會(huì)的 Subversion 官網(wǎng):
http://subversion.apache.org二進(jìn)制下載提示頁(yè)面:
http://subversion.apache.org/packages.html
Windows 系統(tǒng):
與資源管理起集成的 SVN 客戶端:TortoiseSVN,通常被叫做"海龜",為 msi 安裝包??梢允褂?a target="_blank" rel="nofollow">ExtractMSI解壓縮。很詭異的是,在 Apache 上并沒有推薦 TortoiseSVN。另外還有 SlikSVN,下載地址:https://sliksvn.com/download/其他的也就不一一介紹了。
Linux 系統(tǒng)
一般而言 Linux 系統(tǒng)自帶的包控制軟件能夠安裝 Subversion,如果版本低于1.8,就建議用戶下載預(yù)編譯的二進(jìn)制或者自己動(dòng)手編譯 Subversion。這里不做過(guò)多說(shuō)明。
OS X
XCode 自帶的 Subversion 版本為1.7.x,太老,而 GIT@OSC 只支持1.8以上的 SVN 客戶端。
如果安裝了 Homebrew
brew install subversion
或者使用WANdisco的預(yù)編譯版本http://www.wandisco.com/subversion/download#osx
Subversion 客戶端的兼容性
我們支持 Apache Subversion 1.8 或者更高的版本,當(dāng)你安裝一個(gè) Subversion 客戶端時(shí),如果錯(cuò)誤提示是“無(wú)法協(xié)商驗(yàn)證驗(yàn)證方式” 請(qǐng)確保你的客戶端支持 SASL 驗(yàn)證,比如在 Ubuntu 上,你可以安裝 libsasl2-dev 然后編譯 Subversion, 這樣的話客戶端是支持 SASL 驗(yàn)證的。
sudo apt-get install libsasl2-dev
當(dāng)你使用 svnkit 或者 SubversionJavaHl 這類 IDE 集成客戶端,請(qǐng)確保支持 SASL 驗(yàn)證。
關(guān)于 GIT 與 SVN 的轉(zhuǎn)換
如果用戶存在一個(gè)基于 Subversion 托管的項(xiàng)目,要遷移到 GIT@OSC,可以使用 git-svn 將項(xiàng)目轉(zhuǎn)變?yōu)榛?git 的倉(cāng)庫(kù),然后推送到 GIT@OSC,這樣你依然能夠使用SVN對(duì)項(xiàng)目進(jìn)行操作。請(qǐng)記得先在 GIT@OSC 上新建一個(gè)項(xiàng)目
git svnclonehttp://myhost/repo -T trunk -b branches -t tagsgit remote add oscgit https://git.oschina.net/user/repogit push -u oscgit --all
通常來(lái)說(shuō),如果本地存在 SVN 倉(cāng)庫(kù),則可以:
git svn clone file:///tmp/svn-repo -T trunk -b branches -t tagsgit remote add oscgit https://git.oschina.net/user/repogit push -u oscgit? --all
將項(xiàng)目轉(zhuǎn)移到 GIT@OSC 上以后,使用 svn 命令 checkout 即可對(duì)項(xiàng)目進(jìn)行操作。
高級(jí)指南:http://git-scm.com/book/zh/ch8-2.html
安裝 git,git-svn
Windows
msysgit 官網(wǎng)http://msysgit.github.io/,版本比較低。
Github for Windows 提供的 git 工具和 msysgit 一致。
MSYS2 git 下載地址:http://sourceforge.net/projects/msys2,然后啟動(dòng)終端,安裝 git,目前版本為2.4.3。
pacman -S git
Cygwin git 下載地址:http://www.cygwin.com/,然后使用包管理軟件或者直接下載 git 源碼編譯 git。
makeconfigure./configure --prefix=/usr/localmakemakeinstall
Linux
有包管理器的直接用包管理器安裝。
如 Ubuntu
sudoapt-get install git git-svn
也可以手動(dòng)編譯。
Mac OSX