代碼管理平臺,也能夠稱爲代碼管理工具,顧名思義,就是管理代碼的平臺,代碼能夠是公司開發的網站,或者是開發的項目,咱們須要把這些代碼放到一個平臺上面進行管理。html
說到這可能有人會想,不就是代碼嗎?我把它放在服務器上的某個目錄不就好了嗎?開發完新的項目再把代碼傳上去替換掉舊的代碼不就能夠了嗎?linux
固然,對於網站來講,這樣作是沒什麼問題的。可是,若是代碼天天有不少的地方在更新,當有一天,你想看到最近一段時間代碼變化的地方,你怎麼看?很不方便,並且你和同事都在開發的時候想看到對方開發的內容。而代碼管理平臺就能很容易實現目的。git
代碼管理工具的做用:github
1. 能追蹤一個項目從誕生一直到定案的過程 2. 記錄一個項目的全部內容變化,無限制返回 3. 查看特定版本的修訂狀況
經常使用的代碼管理工具:web
CVS 開啓版本控制之門 1990年誕生,「遠古時代」的主流源代碼管理工具 SVN 全稱是Subversion,C/S架構,集中式版本控制之王者 是CVS的接班人,速度比CVS快,功能比CVS多且強大 在國內軟件企業中使用最爲廣泛(70%-90%) GIT 一款偉大的分佈式源代碼管理工具 目前被愈來愈多的開源項目使用 SVN正在被GIT慢慢取代
GIT與SVN的不一樣在於GIT是分佈式的,GIT不須要依賴服務端就能夠工做,而SVN是集中式的,因此不行。vim
分佈式與集中式比較服務器
另外,github是基於git的在線web頁面代碼託管平臺,能夠選擇付費服務。而gitlab能夠認爲是一個開源的github,二者沒有直接關係。架構
由於是C/S架構,因此須要安裝服務端和客戶端。app
準備兩臺機器,一臺做爲服務端,IP:192.168.100.150,一臺做爲客戶端,IP:192.168.100.160。tcp
# yum install -y subversion
# mkdir -p /data/svnroot/myproject# svnadmin create /data/svnroot/myproject #初始化文件# ls /data/svnroot/myproject/conf db format hooks locks README.txt# ls /data/svnroot/myproject/conf/authz passwd svnserve.conf # vim /data/svnroot/myproject/conf/authz #authz是權限控制文件,添加下面內容lzxs = lzx,user1 #定義lzxs組,組下面有兩個用戶lzx、user1[/] #這裏的 / 指的是/data/svnroot/myproject/目錄@lzxs = rw #@指定組,rw可讀可寫* = r #*指全部也能夠下面這樣寫,在項目不少的時候可使用下面方式[myproject:/]user1 = rw
# vim /data/svnroot/myproject/conf/passwd #passwd是帳號密碼文件;在[users]添加如下內容lzx = lzx_!(123 user1 = user1_^^^ #左邊是用戶,右邊是密碼# vim /data/svnroot/myproject/conf/svnserve.conf #svnserve是服務配置文件;在[general]下面添加如下內容anon-access = none #指匿名用戶,無任何權限auth-access = write #指被受權用戶,可寫權限password-db = passwd #指定用戶密碼存放的目錄是passwd(相對路徑)authz-db = authz #指定權限控制目錄存放的目錄是authz(相對路徑)realm = /data/svnroot/myproject #指定項目,對之生效(這裏是絕對路徑)
# svnserve -d -r /data/svnroot/ #-d表示以daemon形式,後臺啓動;-r 指定svn所在路徑# ps aux |grep svnserveroot 1330 0.0 0.0 162240 652 ? Ss 09:26 0:00 svnserve -d -r /data/svnroot/# netstat -lntp |grep svnservetcp 0 0 0.0.0.0:3690 0.0.0.0:* LISTEN 1330/svnserve //監聽3690端口
# cd /home/# svn checkout svn://192.168.100.150/myproject --username=user1# svn checkout 檢出代碼,後面指定服務器地址和項目坐在目錄,指定用戶名Authentication realm: <svn://192.168.100.150:3690> /data/svnroot/myproject Password for 'user1': #輸入以前定義的user1的密碼----------------------------------------------------------------------- ATTENTION! Your password for authentication realm: <svn://192.168.100.150:3690> /data/svnroot/myproject can only be stored to disk unencrypted! You are advised to configure your system so that Subversion can store passwords encrypted, ifpossible. See the documentation for details. You can avoid future appearances of this warning by setting the value of the 'store-plaintext-passwords' option to either 'yes' or 'no' in'/root/.subversion/servers'.----------------------------------------------------------------------- Store password unencrypted (yes/no)? yes #提示是否保存未加密的密碼,輸入yesChecked out revision 0. #取出版本爲0# lsadmin myproject #出現myproject的新目錄# ls -la myproject/total 0 drwxr-xr-x 3 root root 18 Aug 30 09:53 .drwxr-xr-x. 4 root root 36 Aug 30 09:53 ..drwxr-xr-x 4 root root 75 Aug 30 09:53 .svn
# yum install -y subversion
# cd /home/# svn checkout svn://192.168.100.150/myproject --username=user1# svn checkout 檢出代碼,後面指定服務器地址和項目坐在目錄,指定用戶名Authentication realm: <svn://192.168.100.150:3690> /data/svnroot/myproject Password for 'user1': #輸入以前服務端定義的user1的密碼----------------------------------------------------------------------- ATTENTION! Your password for authentication realm: <svn://192.168.100.150:3690> /data/svnroot/myproject can only be stored to disk unencrypted! You are advised to configure your system so that Subversion can store passwords encrypted, ifpossible. See the documentation for details. You can avoid future appearances of this warning by setting the value of the 'store-plaintext-passwords' option to either 'yes' or 'no' in'/root/.subversion/servers'.----------------------------------------------------------------------- Store password unencrypted (yes/no)? yes #提示是否保存未加密的密碼,輸入yesChecked out revision 0. #取出版本爲0# lsadmin myproject #出現myproject/目錄# ls -la myproject/total 0 drwxr-xr-x 3 root root 18 Aug 29 08:43 .drwxr-xr-x 3 root root 23 Aug 29 08:43 ..drwxr-xr-x 4 root root 75 Aug 29 08:43 .svn
# cd myproject/# cp /etc/fstab .# lsfstab# svn add ./fstab #先增長add,打上標記,存到版本庫裏A fstab# svn commit -m "add fstab" #再傳到服務端上Adding fstab Transmitting file data .Committed revision 1.
# cd myproject/# svn up# svn update 升級版本庫(同步),這裏不須要輸入密碼是由於以前checkout的時候就已經保存密碼到/root/.subversion/serversUpdating '.':A fstab Updated to revision 1.# lsfstab #出現fstab這個文件
上面整個過程,能夠理解爲,一臺客戶端代碼作了修改,傳到服務端,這是另一臺客戶端及時升級版本庫,就可以將作修改的代碼同步到本身客戶端上。
# svn delete fstab #本地刪除D fstab# svn commit -m "delete fstab" #服務端刪除Deleting fstab Committed revision 2.
# svn up #升級版本庫Updating '.':D fstab Updated to revision 2.# ls #已經沒有fstab了
# svn log #從下到上,上面爲最新變化------------------------------------------------------------------------ r2 | user1 | 2018-08-30 10:09:04 -0400 (Thu, 30 Aug 2018) | 1 line delete fstab ------------------------------------------------------------------------ r1 | user1 | 2018-08-30 09:58:05 -0400 (Thu, 30 Aug 2018) | 1 line add fstab ------------------------------------------------------------------------
在Windows下,也可使用SVN。
Windows下有一個很好的svn軟件:TortoiseSVN,官網 , 最新版本是1.10.1。
在官網下載下來安裝,根據本身系統位數選擇。
若是你喜歡用命令行操做,請務必記得勾選command line client tool
爲will be install on local hard driver
,不用命令行的能夠跳過這一步。
而後一路Next
便可安裝。安裝完畢後,在任意地方右鍵查看快捷菜單。發現TortoiseSVN即表示安裝成功。
若是勾選了安裝命令行工具,那麼輸入命令SVN,有以下提示也表示安裝成功。
可是此時菜單全是英文的,若是你不習慣英文,能夠去下載語言包,注意系統位數。
安裝完語言包以後,能夠右鍵進入setting
設置。
選擇你喜歡的語言(好比中文),而後肯定,不出意外,如今的語言已經切換到中文了。
安裝步驟到此結束。
在電腦上隨便建立一個目錄,而後右鍵點擊 SVN 檢出
而後輸入linux上的IP地址和目錄
點擊肯定,輸入以前服務器上定義的用戶名和密碼
而後點擊肯定便可。打開myproject目錄,發現有變化
新建一個123.txt文件,並隨便寫點內容
如今把123.txt傳到服務端上,先add
(加入到版本庫)
而後點擊SVN 提交
,說明是必需要寫的
點擊肯定便可
再回到linux機器上,能夠認爲是另一臺客戶端,升級版本庫:
# svn upUpdating '.':A 123.txt.txt Updated to revision 2.# ls123.txt.txt fstab #能夠看到,剛剛在Windows上建立的123.txt在這能夠看到# cat 123.txt.txt 111 222 333333
再在linux機器上建立一個文件:
# vim 111.sh #隨便寫點內容niwqfdhweiuofhweiu # svn add 111.shA 111.sh# svn commit -m "add 111.sh"Adding 111.sh Transmitting file data .Committed revision 3.
回到Windows上,點擊SVN 更新
點擊肯定便可,再查看myproject文件夾
能夠看到多出了111.sh文件
這就是SVN在Windows上的簡單使用,和linux上沒有很大差異,SVN自己用起來也比較簡單。
更多資料參考: