一、代碼管理平臺介紹 版本控制,記錄若干文件內(nèi)容的變化,以便將來查閱特定版本修訂情況 版本管理工具發(fā)展簡史,CVS→SVN→Git CVS:兼容性不太好。 SVN:太慢。全名:Subversion,是一個(gè)開源版本控制系統(tǒng),始于2000年。 Git:Linux創(chuàng)始人linus發(fā)起的,2005年發(fā)布,最初目的是更好的管理Linux內(nèi)核代碼。 Git和SVN不同在于Git不需要依賴服務(wù)端就可以工作,即Git是分布式的。 關(guān)于Git和SVN的比較,參考http://blog./?p=305 SVN和Git的最主要的差異——分布式。 SVN優(yōu)勢: 1.存儲 SVN服務(wù)器既具有CVS所具有數(shù)據(jù)儲存的優(yōu)點(diǎn),數(shù)據(jù)一般不會丟失,同時(shí)又擁有自己的特色。SVN是通過關(guān)系數(shù)據(jù)庫及二進(jìn)制的存儲方式,同時(shí)解決了既往不能同時(shí)讀寫同一文件等問題,同時(shí)增添了自己特有的“零或一”原則。 2.速度 與初始的CVS相比,SVN在速度運(yùn)行方面有很大提升。因?yàn)镾VN服務(wù)器只支持少量的信息、資源傳輸,與其他系統(tǒng)相比,更支持的是離線模式,因此避免了網(wǎng)絡(luò)擁擠現(xiàn)象的出現(xiàn)。 3.安全性 SVN是一種技術(shù)性更加安全的產(chǎn)品,實(shí)現(xiàn)了系統(tǒng)和控制兩方面的結(jié)合。一方面可以將系統(tǒng)整體的安全功能有效地分布在分支系統(tǒng)中,進(jìn)而保證分支系統(tǒng)能正常運(yùn)行,從而使各分支系統(tǒng)能夠互補(bǔ),最終在系統(tǒng)整體性的安全性得以保障,通過均衡原則實(shí)現(xiàn)最終追求安全的目的。 Git優(yōu)劣勢: 優(yōu)點(diǎn): 適合分布式開發(fā),強(qiáng)調(diào)個(gè)體。 公共服務(wù)器壓力和數(shù)據(jù)量都不會太大。 速度快、靈活。 任意兩個(gè)開發(fā)者之間可以很容易的解決沖突。 離線工作。 缺點(diǎn): 資料少(起碼中文資料很少)。 學(xué)習(xí)周期相對而言比較長。 不符合常規(guī)思維。 代碼保密性差,一旦開發(fā)者把整個(gè)庫克隆下來就可以完全公開所有代碼和版本信息。 GitHub是基于Git的在線web頁面代碼托管平臺,可以選擇付費(fèi)服務(wù)。 Gitlab可以認(rèn)為是一個(gè)開源的GitHub,兩者沒有直接聯(lián)系。 一句話區(qū)分,git是管理工具,github是在線的基于git的平臺(或者叫做服務(wù))。gitlab和github一樣,也是一個(gè)基于git的提供web界面的代碼管理平臺。 二、安裝SVN # yum install -y subversion 創(chuàng)建版本庫 # mkdir -p /data/svnroot/myproject //該目錄路徑可自定義 # svnadmin create /data/svnroot/myproject //在這個(gè)目錄下初始化一些文件 # cd !$/conf #authz為權(quán)限配置文件,passwd為密碼文件,svnserve.conf為SVN倉庫的配置文件。 # vim authz //配置文件新增內(nèi)容如下: [groups] admins = aming,user1 //加到用戶組的下面 [/] @admins = rw //@后面跟組名 * = r //除了admins組以外的所有人只有只讀的權(quán)限。 [myproject:/] user1 = rw # myproject指項(xiàng)目名,這種用法適合于/data/svnroot/有多個(gè)項(xiàng)目的情況下,這只是其中一個(gè)項(xiàng)目而已。 # 帶冒號指的是一個(gè)項(xiàng)目名,這里只有一個(gè)項(xiàng)目,可以在這下面創(chuàng)建子目錄dir1,dir2。可以寫成[/dir1]、[/dir2]的形式。 # 兩種不同的形式表達(dá)而已。一種是[/dir1]、一種是[myproject:/],一個(gè)意思。因?yàn)檫@里只有一個(gè)項(xiàng)目。 aliases:別名 groups:用戶組 [/]:指的是/data/svnroot/myproject這個(gè)目錄。 倉庫里面的目錄或者項(xiàng)目里面的目錄,針對這些項(xiàng)目配置的關(guān)于用戶和組的讀寫權(quán)限: [/foo/bar] [repository:/baz/fuz] # vim passwd //[users]下新增 [users] aming = aming_!(*$123 ##左邊是用戶,右邊是密碼。 user1 = user1_^^^123 user2 = user2-***123 # vim svnserve.conf [general] ##在下面增加這5行內(nèi)容 anon-access = none ##匿名用戶,沒有權(quán)限 auth-access = write ##被授權(quán)的用戶,有寫權(quán)限 password-db = passwd ##用戶密碼存儲位置 authz-db = authz ##權(quán)限控制文件位置,這里只寫一個(gè)字符串,表示這個(gè)字符串就是一個(gè)文件名,位置在當(dāng)前目錄下,針對svnserve.conf的相對路徑。 realm = /data/svnroot/myproject ##表示對哪一個(gè)項(xiàng)目生效,絕對路徑。 # svnserve -d -r /data/svnroot/ //啟動SVN,-d:deamon的形式,后臺啟動;-r:指定SVN所在路徑;后面也可以跟到項(xiàng)目名。 # ps aux |grep svn root 1621 0.0 0.0 162200 656 ? Ss 19:53 0:00 svnserve -d -r /data/svnroot/ root 1623 0.0 0.0 112676 984 pts/0 S 19:53 0:00 grep --color=auto svn # netstat -lntp |grep svn tcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN 1621/svnserve # iptables -nvL //檢查一下有沒有防火墻規(guī)則,有的話后續(xù)操作不會太順利。 三、客戶端上使用SVN(Linux) # yum install -y subversion //另一臺機(jī)器上安裝,安裝好后就可以使用svn命令了。 # mkdir svntest # cd !$ # svn checkout svn://192.168.93.130/myproject --username=aming //checkout,檢出代碼。如果你到一臺機(jī)器上,從來沒有連接過svn服務(wù)器的情況下,執(zhí)行這一步以后,它就可以在本機(jī)上保存一個(gè)曾經(jīng)你連接過的svnserve的用戶名和密碼。上面這條命令可以把遠(yuǎn)程服務(wù)端的myproject項(xiàng)目搞到本地來。 認(rèn)證領(lǐng)域: /data/svnroot/myproject “aming”的密碼: aming_!(*$123 //此處的密碼就是配置文件中設(shè)置的密碼 ----------------------------------------------------------------------- 注意! 你的密碼,對于認(rèn)證域: /data/svnroot/myproject 只能明文保存在磁盤上! 如果可能的話,請考慮配置你的系統(tǒng),讓 Subversion 可以保存加密后的密碼。請參閱文檔以獲得詳細(xì)信息。 你可以通過在“/root/.subversion/servers”中設(shè)置選項(xiàng)“store-plaintext-passwords”為“yes”或“no”, 來避免再次出現(xiàn)此警告。 ----------------------------------------------------------------------- 保存未加密的密碼(yes/no)?yes //將密碼存在了/root/.subversion/servers下 取出版本 0。 [root@MRX svntest]# ls myproject # cd project ; ls -la 總用量 0 drwxr-xr-x 3 root root 18 8月 29 18:43 . drwxr-xr-x 3 root root 23 8月 29 18:43 .. drwxr-xr-x 4 root root 75 8月 29 18:43 .svn [root@MRX myproject]# cp /etc/fstab . # svn add ./fstab //添加到版本控制中心,把變更的想要搞到服務(wù)器上去的東西做個(gè)標(biāo)記 A fstab # svn commit -m "add file" //把文件上傳到服務(wù)器。先增加,再上傳。 # svn commit -m "add fstab" 正在增加 fstab 傳輸文件數(shù)據(jù). 提交后的版本為 1。 # svn delete filename //在本地刪除 # svn commit -m "delete filename" //在服務(wù)器上刪除 [root@MRX myproject]# svn delete fstab D fstab [root@MRX myproject]# svn commit -m "delete fstab" 正在刪除 fstab 提交后的版本為 2。 # svn update //把當(dāng)前目錄下的文件都更新到最新版,把本地的和服務(wù)端的同步。 # svn log //查看變更日志 /root/.subversion/auth/svn.simple下的密碼文件,如果某個(gè)用戶不想存儲了,可以刪除這個(gè)文件。 四、客戶端上使用SVN(windows) 官網(wǎng) https:///index.zh.html 下載TortoiseSVN 并安裝 簡明教程 http://www.jianshu.com/p/6b3b7b915332 下載好后隨便選擇一個(gè)文件夾,比如新建一個(gè)myproject,右鍵文件夾可以看到SVN Checkout和TortoiseSVN。 第一次使用時(shí),也要先SVN checkout,點(diǎn)擊之后,會彈出來一個(gè)窗口,在最上面的URL of repository里定義一下服務(wù)地址和項(xiàng)目地址就可以點(diǎn)OK了:svn://192.168.93.130/myproject。 點(diǎn)OK后再定義用戶名和密碼: aming , aming_!(*$123 再點(diǎn)OK 試驗(yàn): 在Windows的myproject目錄下創(chuàng)建一個(gè)txt文檔,內(nèi)容隨便寫一點(diǎn)。再右鍵該文檔,和在Linux上同樣的操作,TortoiseSVN→add,再右鍵SVN commit,在上方空白框內(nèi)輸入add 123.txt,再點(diǎn)OK就可以了。 再到服務(wù)端或者另一臺客戶端上svn update同步一下,就可以看到123.txt了。 在Linux上寫了文檔,同樣的操作,再到Windows上右鍵SVN update一下,同樣可以看到這個(gè)111.txt。 # svn add 111.txt A 111.txt [root@MRX myproject]# svn commit -m "add 111.txt" 正在增加 111.txt 傳輸文件數(shù)據(jù). 提交后的版本為 4。 |
|