免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
【Linux工具】svn命令行使用實(shí)例(轉(zhuǎn))
 本帖最后由 zhaozy78 于 2015-06-02 10:43 編輯

引言
  網(wǎng)上有這么多介紹 svn 使用的文章,為什么還要寫?因?yàn)樗鼈兩钊氩粶\出,平鋪不分類,理論不實(shí)際,看完也記不住。

  本文先介紹基本用法,后進(jìn)行實(shí)例演練。不求大而全,只求熟練常用,自行用 svn help 舉一反三(比如 -r 參數(shù)很多命令都有)。如果你有環(huán)境(別忘了還有服務(wù)器),不妨花十分鐘跟著實(shí)例走一遍。

  簡(jiǎn)介一下 svn:一種流行的版本管理工具?;谝粋€(gè) svn 服務(wù)器,開發(fā)人員用各自的電腦安裝 svn 客戶端后,就可以實(shí)現(xiàn)代碼托管、版本管理、協(xié)作開發(fā)等功能。Windows 上的 svn 客戶端有著名的 TortoiseSVN,圖形界面非常好用。Linux 眾多發(fā)行版通常默認(rèn)安裝 svn 命令行客戶端(本文介紹的內(nèi)容)。當(dāng)然 Linux 下諸如 Eclipse 工具也有圖形界面的 svn 客戶端插件,同樣非常好用。

  歡迎來到 lovickie 的博客 http://www.cnblogs.com/lovickie

svn 命令行用法分類概覽(中括號(hào)[] 內(nèi)為可選參數(shù))
  命令中的 PATH 參數(shù)既可是目錄也可是文件。大多數(shù)命令都可省略 PATH,缺省為當(dāng)前目錄。有些命令可用 URL 代替 PATH。

  -r 參數(shù)大多數(shù)命令都有,缺省 -r BASE。

  歡迎來到 lovickie 的博客 http://www.cnblogs.com/lovickie

  1. 查看

  svn help CMD    # 查看 svn CMD 的幫助,注意 CMD 不含 -xx 之類的參數(shù)。

  svn info PATH    # 查看 PATH 路徑的詳細(xì)信息(URL、作者、BASE版本號(hào)、修改時(shí)間)

  svn log PATH [-v] [-r HEAD/BASE/PREV/版本號(hào)]   # 查看 PATH 路徑的提交日志,-v 含文件和子文件夾

                                                                          # -r 指定版本,缺省 -r BASE

                                                                    # HEAD 服務(wù)器上的最新版

                                                                    # BASE 本地更新或提交的最新版

                                                                         # PREV 前一版,BASE-1

  svn cat PATH/URL [-r 版本]    # 查看內(nèi)容,-r 指定版本

  svn di PATH [-r 版本A] [-r 版本A:版本B]    # di=diff,查看版本A和本地的區(qū)別,或A和B的區(qū)別

  svn di PATH/URL -c 版本B    # B必須為數(shù)字,查看版本B-1和B的區(qū)別

  svn ls PATH [-v]    # ls=list,查看納入版本的文件和子文件夾列表,-v 含本地最新提交記錄

  svn st PATH [-v]    # st=state,查看本地尚未提交的修改,-v 與 svn ls PATH -v 類似

                              # A 增加,D 刪除,M 修改,R 替換,C 沖突

                              # I 忽略,? 未納入,! 異常修改,S 切換



  2. 管理

  svn co URL --username NAME    # co=checkout,檢出工作拷貝至本地當(dāng)前目錄

  svn export URL    # 導(dǎo)出至本地當(dāng)前目錄,非工作拷貝,目錄中不含.svn

                             # 若當(dāng)前目錄有同名文件夾則失敗

  svn import PATH URL -m '提交日志'    # 將本地目錄 PATH 導(dǎo)入 URL,PATH 不變?yōu)楣ぷ骺截?br>
  svn sw URL    # sw=switch,將本地當(dāng)前目錄切換為 URL 的工作拷貝

  svn lock PATH -m '提交日志'    # 鎖定為僅當(dāng)前用戶可修改

  svn unlock PATH    # 解鎖,注意不能加 -m 參數(shù)



  3. 修改

  svn up PATH [-r 版本]    # up=update,更新至本地,U 被更新,G 合并

                                     # 若 C 沖突,則沖突文件*會(huì)被修改,并新增文件 *.rxxxx和*.r.mine

  svn ci PATH -m '提交日志'    # ci=commit,將本地修改提交至服務(wù)器,提交日志也可以用雙引號(hào)

  svn mkdir PATH    # 新建目錄 PATH 并納入版本管理

  svn add PATH    # 將 PATH 新納入版本管理

  svn del(rm) PATH    # del=delete,rm=remove,將 PATH 移除版本管理并刪除

  svn cp OLDPATH NEWPATH    # cp=copy,復(fù)制

  svn mv OLDPATH NEWPATH    # mv=move,移動(dòng)

  svn revert PATH    # 撤銷本地修改(但被刪除的目錄無法恢復(fù))

  svn resolved PATH    # 標(biāo)記沖突已解決(并非解決沖突文件*,而是刪除*.rxxxx和*.r.mine)



  4. 設(shè)置忽略屬性

  svn propset svn:ignore "FILE" PATH    # 將 PATH 目錄中的 FILE 設(shè)置為忽略
                                                            # 多個(gè) FILE 用回車區(qū)分,不能省略 PATH

  svn propedit svn:ignore PATH    # 編輯 PATH 目錄中的忽略列表

                                                    # 之前需 export SVN_EDITOR=/usr/bin/vim

  svn pget svn:ignore    # 讀取當(dāng)前目錄的忽略列表

  svn plist    # 查看當(dāng)前目錄的屬性,如果設(shè)置了忽略則顯示 svn:ignore

  歡迎來到 lovickie 的博客 http://www.cnblogs.com/lovickie

svn 命令行使用例子
  假設(shè) http://path 為服務(wù)器原有目錄。

  歡迎來到 lovickie 的博客 http://www.cnblogs.com/lovickie

  1. 檢出工作拷貝 path
  svn co http://path --username lovickie    # 檢出工作拷貝至本地當(dāng)前目錄

  cd path    # 應(yīng) cd path的最子目錄,下同

  svn info

  svn log -v -r HEAD

  svn ls -v



  2. 創(chuàng)建目錄 path/newdir

  2.1 創(chuàng)建目錄方法一:直接操作服務(wù)器目錄

  svn mkdir http://path/newdir -m '創(chuàng)建目錄'    # 直接在服務(wù)器上創(chuàng)建目錄

  cd path

  svn up .    # 更新至本地

  2.2 創(chuàng)建目錄方法二:在本地工作拷貝上操作后提交至服務(wù)器

  cd path

  svn mkdir newdir    # 也可以 mkdir newdir 然后 svn add newdir

  svn st    # 顯示 A newdir

  svn ci newdir -m '創(chuàng)建目錄'    # 提交修改

  svn st    # 無顯示,因?yàn)楸镜厮行薷木烟峤?br>
  svn st -v    # 顯示 A newdir

  svn log -v -r HEAD    # 顯示 A newdir,'創(chuàng)建目錄'



  3. 刪除目錄 path/newdir/dir1

  3.1 刪除目錄的準(zhǔn)備工作:創(chuàng)建目錄 path/newdir/dir1 和 path/newdir/dir1/a.c

  cd path/newdir

  mkdir dir1

  vim dir1/a.c    # 保存退出,下同

  svn add dir1    # 顯示 A dir1,A dir1/a.c

  svn ci -m '創(chuàng)建待刪除目錄dir1和文件a.c'

  3.2 刪除目錄方法一:直接操作服務(wù)器目錄

  svn del http://path/newdir/dir1 -m '刪除dir1'    # 直接在服務(wù)器上刪除目錄

  cd path/newdir

  svn up    # 更新至本地

  3.3 刪除目錄方法二

  svn rm dir1

  svn st    # 顯示 D dir1,D dir1/a.c

  svn ci -m '刪除dir1'    # 提交修改

  svn st    # 無顯示

  svn st -v

  svn log -v -r HEAD

  svn up    # 將刪除目錄信息更新至本地,重要!

  svn st -v    # 顯示 D dir1,D dir1/a.c

  svn log -v -r HEAD    # 顯示 D dir1,D dir1/a.c,'刪除dir1'

  3.4 在刪除目錄后 svn up 的作用不僅僅是讓狀態(tài)刷成最新版本,而且能避免“莫名其妙”的提交失敗

  cd path/newdir

  svn mkdir dir2

  svn ci -m '新建dir2'

  pushd dir2

  vim b.c

  svn add b.c

  svn ci -m '新增b.c'

  popd

  svn del dir2

  svn ci -m '刪除dir2'    # 報(bào)錯(cuò)

  svn up

  svn ci -m '刪除dir2'    # 成功提交



  4. 復(fù)制目錄 path/newdir/dir3,移動(dòng)目錄 path/newdir/dir4

  4.1 復(fù)制目錄的準(zhǔn)備工作:創(chuàng)建目錄 path/newdir/dir3 和 path/newdir/dir3/c.c

  cd path/newdir

  svn mkdir dir3

  vim dir3/c.c

  svn ci -m '創(chuàng)建目錄dir3和文件c.c'

  4.2 復(fù)制與移動(dòng)目錄

  cd path/newdir

  svn cp dir3 dir4    # 將 dir3 復(fù)制到 dir4

  svn mv dir4 dir5    # 失敗,除非先提交,注意 --force 也不行

  svn ci -m '復(fù)制dir3到dir4'

  svn mv dir4 dir5    # 成功將 dir4 移動(dòng)到 dir5

  svn del dir5    # 失敗,除非先提交

  svn del dir5 --force    # 成功刪除 dir5

  svn ci -m '變相刪除了dir4'



  5. 撤銷本地修改 path/newdir/dir3

  5.1 撤銷修改的準(zhǔn)備工作:假設(shè) path/newdir/dir3/c.c 已建立并提交

  svn ls path/newdir/dir3/c.c

  5.2 撤銷文件修改 dir3/c.c

  cd path/newdir

  vim dir3/c.c    # 隨便做些修改

  svn st    # 顯示 M dir3/c.c

  svn revert    # 失敗,參數(shù)不完整

  svn revert .    # 成功,但操作對(duì)象是目錄.而非文件dir3/c.c

  svn st    # 仍顯示 M dir3/c.c

  svn revert dir3/c.c    # 成功撤銷修改 dir3/c.c

  svn st    # 無顯示

  5.3 撤銷文件刪除 dir3/c.c

  cd path/newdir

  rm -f dir3/c.c

  svn st    # 因?yàn)槲床捎?svn rm,顯示 ! dir3/c.c

  svn revert dir3/c.c    # 成功撤銷刪除 dir3/c.c

  svn st    # 無顯示

  5.4 撤銷目錄刪除 dir3

  cd path/newdir

  rm -rf dir3

  svn st    # 顯示 ! dir3

  svn revert dir3    # 失敗,刪除目錄無法用 revert 恢復(fù)

  svn up    # 從服務(wù)器更新可恢復(fù)被刪除的一切目錄和文件

  歡迎來到 lovickie 的博客 http://www.cnblogs.com/lovickie

  6. 解決沖突 path/newdir/dir3/c.c

  6.1 解決沖突的準(zhǔn)備工作:假設(shè) path/newdir/dir3/c.c 已建立并提交

  svn ls path/newdir/dir3/c.c

  6.2 解決別處提交刪除導(dǎo)致的沖突

  cd 一個(gè)新的本地目錄    # 注意該目錄下不能有 dir3

  svn co http://path/newdir/dir3

  svn del dir3/c.c

  svn ci -m '在別處刪除dir3/c.c'

  cd path/newdir/dir3

  vim c.c    # 隨便做些修改

  svn ci -m '不知道c.c已被別處刪除,嘗試提交對(duì)c.c的修改'    # 失敗

  svn log -v -r HEAD    # 顯示 D c.c,'在別處刪除dir3/c.c'

  svn up

  svn st    # 顯示 ? c.c,即 c.c 未納入版本管理

  svn add c.c    # 解決沖突:重新添加 c.c,氣死另一位提交者

  svn ci -m '喂不要再刪除c.c了'    # 若仍失敗說明又有人搶先提交了

  6.3 解決別處提交修改導(dǎo)致的沖突

  cd 一個(gè)新的本地目錄    # 注意該目錄下不能有 dir3

  svn co http://path/newdir/dir3

  vim dir3/c.c    # 修改如下,新增一行:printf ("別處修改\n");
  1. #include <stdio.h>
  2. int main ()
  3. {
  4.     printf ("別處修改\n");
  5.     return 0;
  6. }
復(fù)制代碼
svn ci -m '在別處修改dir3/c.c'

  svn info    # 顯示版本號(hào)2001

  cd path/newdir/dir3

  svn info    # 顯示版本號(hào)2000

  vim c.c    # 修改如下,新增兩行:printf ("本處修改"); printf ("\n");
  1. #include <stdio.h>
  2. int main ()
  3. {
  4.     printf ("本處修改");
  5.     printf ("\n");
  6.     return 0;
  7. }
復(fù)制代碼
svn ci -m '不知道c.c已被別處修改,嘗試提交對(duì)c.c的修改'    # 失敗

  svn log -v -r HEAD    # 顯示 M c.c,'在別處修改dir3/c.c',注意缺省是 -r BASE

  svn cat c.c -r BASE    # 查看 BASE=2000版內(nèi)容

  svn cat c.c -r HEAD    # 查看 HEAD=2001版內(nèi)容

  svn di -r BASE:HEAD    # 2000:2001,顯示 BASE 與 HEAD 的差別

  svn di [-r BASE]    # 顯示 BASE=2000版與本地修改的差別

  svn di -r HEAD    # 顯示 HEAD=2001版與本地修改的差別,如下
  1. Index: c.c
  2. =========================
  3. --- c.c  (修訂版 2001)
  4. +++ c.c  (工作拷貝)
  5. @@ -3,5 +3,6 @@
  6. {
  7. -printf ("別處修改\n");
  8. +printf ("本處修改");
  9. +printf ("\n");
  10. }
復(fù)制代碼
svn up

  svn st    # 顯示 ? c.c.r2000,本地更新或提交的最新版BASE

               #    ? c.c.r2001,服務(wù)器上的最新版HEAD,printf ("別處修改\n");

               #    ? c.c.mine,本地修改,printf ("本處修改"); printf ("\n");

               #    C c.c,沖突文件,若為U更新、G合并則不用解決,c.c 內(nèi)容如下
  1. #include <stdio.h>
  2. int main ()
  3. {
  4. <<<<<<< .mine
  5.     printf ("本處修改");
  6.     printf ("\n");
  7. =======
  8.     printf ("別處修改\n");
  9. >>>>>>> .r2001
  10.     return 0;
  11. }
復(fù)制代碼
vim c.c    # 手動(dòng)修改解決沖突

  svn resolved c.c    # 刪除 c.c.*,標(biāo)記沖突已解決

  svn st    # 顯示 M c.c

  svn ci -m '解決c.c的修改沖突'    # 生成版本2002

  6.4 詳解 svn di PATH -r A:B 或 -r A(B為本地尚未提交)或 -c B(A=B-1)的輸出格式
  1. Index: 有差別的文件 c.c
  2. =========================
  3. --- c.c  (修訂版 A)
  4. +++ c.c  (修訂版 B)
  5. @@ -3,5 +3,6 @@    # 以下顯示版本A的3~5行,版本B的3~6行
  6. 版本AB的相同內(nèi)容
  7. -版本A的獨(dú)有內(nèi)容
  8. +版本B的獨(dú)有內(nèi)容
  9. 版本AB的相同內(nèi)容
復(fù)制代碼
注意:當(dāng) svn di [-r BASE] 時(shí),顯示 --- (修訂版 2000),+++ (工作拷貝);

     當(dāng) svn di -r BASE:HEAD 時(shí),顯示 --- (工作拷貝),+++ (修訂版 2001)。

     “工作拷貝”在上面兩處的含義不同!

  歡迎來到 lovickie 的博客 http://www.cnblogs.com/lovickie

  7. 加鎖與解鎖 path/newdir/dir3/c.c

  7.1 加鎖的準(zhǔn)備工作:假設(shè) path/newdir/dir3/c.c 已建立并提交

  svn ls path/newdir/dir3/c.c

  7.2 加鎖與解鎖

  cd path/newdir

  svn lock dir3/c.c -m '用戶lovickie鎖定c.c'    # 加鎖

  svn unlock dir3/c.c    # 解鎖,加 -m 則失敗


  8. 導(dǎo)出與導(dǎo)入

  8.1 導(dǎo)出 path/newdir

  cd 一個(gè)新的本地目錄    # 注意該目錄下不能有 newdir

  svn export http://path/newdir [-r HEAD]    # 當(dāng)前目錄生成的 newdir 中不含.svn,非工作拷貝
  8.2 導(dǎo)入 path/newdir/dir6/d.c

  cd 一個(gè)新的本地目錄

  mkdir dir6

  vim dir6/d.c

  svn import dir6 http://path/newdir -m '導(dǎo)入dir6中的內(nèi)容'    # 即只導(dǎo)入了 d.c

  8.3 導(dǎo)入 path/newdir/dir7

  cd 一個(gè)新的本地目錄

  mkdir dir7
  vim dir7/e.c

  svn import dir7 http://path/newdir/dir7 -m '導(dǎo)入dir7'    # 即導(dǎo)入了 dir7 和 dir7/e.c

  8.4 檢驗(yàn)導(dǎo)入結(jié)果
  cd path/newdir

  svn up    # 顯示 A d.c,A dir7,A dir7/e.c


  9 切換工作拷貝 path/newdir/dir8

  9.1 切換工作拷貝的準(zhǔn)備工作:假設(shè) path/newdir/dir7/e.c 已建立并提交

  svn ls path/newdir/dir7/e.c

  9.2 切換工作拷貝
  cd path/newdir

  mkdir dir8

  vim dir8/f.c

  svn add dir8

  svn ci -m '新建dir8'

  cd dir8

  svn sw http://path/newdir/dir7    # 切換本目錄為 dir7 的工作拷貝

  svn ls    # 顯示 e.c

  svn st path/newdir    # 顯示 S dir8

  9.3 恢復(fù)原工作拷貝(不能revert)

  cd path/newdir

  rm -rf dir8

  svn up

  svn ls dir8    # 顯示 f.c

  歡迎來到 lovickie 的博客 http://www.cnblogs.com/lovickie

  10 設(shè)置忽略 path/newdir/dir3

  10.1 設(shè)置忽略的準(zhǔn)備工作:假設(shè) path/newdir/dir3 已建立并提交

  svn ls path/newdir/dir3

  cd path/newdir/dir3

  vim a.out

  vim a.o

  vim b.obj

  svn st    # 顯示 ? a.out,? a.o,? b.obj

  10.2 設(shè)置忽略文件

  cd path/newdir/dir3

  svn propset svn:ignore "a.out

  > *.o

  > *.obj" ./    # 注意不能省略最后的./或.,多個(gè)忽略文件用回車分隔(>是自動(dòng)生成的提示符)

  svn st    # 無顯示,表明忽略列表設(shè)置成功

  export SVN_EDITOR=/usr/bin/vim    # 否則無法執(zhí)行 svn propedit

  svn propedit svn:ignore ./    # 編輯當(dāng)前目錄的忽略列表,保存退出后生效

  svn pget svn:ignore    # 讀取當(dāng)前目錄的忽略列表,顯示 a.out  *.o  *.obj

  svn plist    # 顯示 svn:ignore


  11 合并(svn merge)

  該功能太浪,不建議在未完全掌握時(shí)使用。
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
svn 常用操作
python中os操作文件及文件路徑實(shí)例匯總
python os模塊 讀寫、創(chuàng)建 文件
git , vim , ls 全局配置
linux Centos yum的安裝和配置和使用/SVN的搭建
常用SVN命令總結(jié)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服