現在碼云目前支持使用 Subversion 對倉庫進行操作,以下是使用指南和注意事項。
使用前注意
倉庫體積超過300 MB不建議使用 Subversion 操作倉庫,存儲庫容量達到 400 MB,或者 300 MB 并且存儲大量非文本數據時,我們將關閉倉庫的 Subversion 支持。
由于 GIT 不支持空目錄的提交,在存儲機器上,無論是普通倉庫還是開啟 Subversion 接入的倉庫存儲時都是 GIT 倉庫,Subversion 的 commit 是提交到 git 倉庫上的,所以碼云的 Subversion不支持空目錄的提交。
第一次開啟 Subversion, 操作一個倉庫,如果倉庫體積較大或者提交次數較多,由于緩存的緣故,響應時間會比較長。
不支持 Subversion 的 Hook 機制,請使用 WebHook 替代。
Subversion 屬性不完全支持。
客戶端需要開啟 SASL 支持,不支持的客戶端無法訪問。
部分 svn 命令不支持。可以查看Subversion 客戶端的兼容性
版本號的映射,目前 Subversion 的版本號計算依據為本分支所有的commit 數目減一 不包括 merge ,如果使用了在 git 中強制回退等操作,請重新檢出。
WARNING:
由于 git 在設計上就沒有考慮空文件Kernel.org: Git FAQ
我們設計的原則就是不破壞,不主動修改用戶的倉庫,我們的后端存儲的完全是一個 git 倉庫,如果我們添加了,一次提交內容也不會一致了,建議你在添加目錄的時候添加 .keep 之類的占位文件,空文件即可。
Git 與 SVN 混用時盡量不要使用 Git 強制推送。Git 與 SVN 混用注意事項
關于改版
Subversion 功能的最終解釋權歸 OSChina.NET 所有。Subversion 接入的規則可能在下一次改版中發生改變。
開啟方式
在項目的設置界面開啟
如果是空倉庫:
使用指南
碼云 支持的是 svn 協議。? 對于 svn 而言,獲取一個倉庫的代碼通常是 checkout,在項目主頁我們通常可以獲得 URL:
這個倉庫地址為:
svn://git.oschina.net/svnserver/newos
1.獲取倉庫代碼:
svn checkout svn://git.oschina.net/svnserver/newos newos
注意信息碼云的 SVN 接入后端是通過 git 存儲庫實現,URL 規則為 svn://域名/用戶名/項目名 .
使用上述命令,我們將得到項目默認分支的代碼。并將本地的工作目錄命名為newos
如果最后不帶 newos,svn 默認把本地工作目錄命名為 項目名
svn checkout svn://git.oschina.net/svnserver/newos
如果要獲得任意分支代碼,例如獲取newos的dev分支,請輸入近似如下的命令:
此時地址為:svn://域名/用戶名/項目名/branches/分支名.
svn checkoutsvn://git.oschina.net/svnserver/newos/branches/dev
特別的說明,獲取主干分支,也就是 master 分支可以使用下面的分支格式
svn checkoutsvn://git.oschina.net/svnserver/newos/trunknewos
svn trunk 分支對應 master 分支 用戶應當盡量不使用下面格式
svn checkout svn://git.oschina.net/svnserver/newos
操作說明
如果部分檢出倉庫,并且倉庫根目錄下包含 branches/tags/trunk 這樣的目錄,請使用完整的路徑 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 不能省略分支名。比如只有一個 dev 分支,必須使用下列格式,否則會提示倉庫不存在。
svn cosvn://git.oschina.net/svnserver/newos/branches/dev? svnserver_dev
打開終端,輸入上述命令,出現以下下面提示。其中第一個認證領域是用戶的密碼,這個可以留空。而用戶名是用戶在 GIT@OSC 登陸時使用郵箱地址。密碼則是用戶登陸 碼云 所使用的密碼一般而言,svn 會加密緩存用戶的用戶名密碼,所以,對倉庫的操作只需要第一次輸入用戶郵箱和密碼。清除密碼緩存,用戶目錄下的.subversion/auth/svn.simple文件夾下的文件。
下圖則是成功的拉取了項目代碼。
查看本地工作目錄信息:
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 更新工作拷貝。也就相當于 git pull 后再 git push。
Subversion 的提交是在線的,如果機器已經離線,那么提交會失敗,這個過程用git的方式理解就是 git commit+git push。
用戶使用 svn 提交代碼同樣會有動態顯示。
列出版本庫中的目錄內容:
svn listsvn://git.net/svnserver/newos/trunk
導出倉庫指定分支的所有文件,不含版本控制信息:
svn exportsvn://git.net/svnserver/newos/trunknewos
備注
安裝 Subversion 客戶端
在 Apache 基金會的 Subversion 官網:
http://subversion.apache.org二進制下載提示頁面:
http://subversion.apache.org/packages.html
Windows 系統:
與資源管理起集成的 SVN 客戶端:TortoiseSVN,通常被叫做"海龜",為 msi 安裝包。可以使用ExtractMSI解壓縮。很詭異的是,在 Apache 上并沒有推薦 TortoiseSVN。另外還有 SlikSVN,下載地址:https://sliksvn.com/download/其他的也就不一一介紹了。
Linux 系統
一般而言 Linux 系統自帶的包控制軟件能夠安裝 Subversion,如果版本低于1.8,就建議用戶下載預編譯的二進制或者自己動手編譯 Subversion。這里不做過多說明。
OS X
XCode 自帶的 Subversion 版本為1.7.x,太老,而 GIT@OSC 只支持1.8以上的 SVN 客戶端。
如果安裝了 Homebrew
brew install subversion
或者使用WANdisco的預編譯版本http://www.wandisco.com/subversion/download#osx
Subversion 客戶端的兼容性
我們支持 Apache Subversion 1.8 或者更高的版本,當你安裝一個 Subversion 客戶端時,如果錯誤提示是“無法協商驗證驗證方式” 請確保你的客戶端支持 SASL 驗證,比如在 Ubuntu 上,你可以安裝 libsasl2-dev 然后編譯 Subversion, 這樣的話客戶端是支持 SASL 驗證的。
sudo apt-get install libsasl2-dev
當你使用 svnkit 或者 SubversionJavaHl 這類 IDE 集成客戶端,請確保支持 SASL 驗證。
關于 GIT 與 SVN 的轉換
如果用戶存在一個基于 Subversion 托管的項目,要遷移到 GIT@OSC,可以使用 git-svn 將項目轉變為基于 git 的倉庫,然后推送到 GIT@OSC,這樣你依然能夠使用SVN對項目進行操作。請記得先在 GIT@OSC 上新建一個項目
git svnclonehttp://myhost/repo -T trunk -b branches -t tagsgit remote add oscgit https://git.oschina.net/user/repogit push -u oscgit --all
通常來說,如果本地存在 SVN 倉庫,則可以:
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
將項目轉移到 GIT@OSC 上以后,使用 svn 命令 checkout 即可對項目進行操作。
高級指南:http://git-scm.com/book/zh/ch8-2.html
安裝 git,git-svn
Windows
msysgit 官網http://msysgit.github.io/,版本比較低。
Github for Windows 提供的 git 工具和 msysgit 一致。
MSYS2 git 下載地址:http://sourceforge.net/projects/msys2,然后啟動終端,安裝 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
也可以手動編譯。
Mac OSX