<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    ivaneeo's blog

    自由的力量,自由的生活。

      BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
      669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks
    Emacs 提供了一個(gè)功能齊全的 CVS 界面 PCL-CVS,使得 CVS 的工作基本可以單
    鍵完成,此外,Emacs 的 VC 也非常方便。下面簡(jiǎn)單介紹 PCL-CVS 的使用,之后再
    簡(jiǎn)要介紹 VC 的方便之處。

    1. 當(dāng)然,先用命令行 check out 出源碼拷貝

          $ cd ~/work
          $ cvs -d :pserver:user@host:/path/to/repository co MODULE

    2. 從 Emacs 開始

       幾個(gè)命令都可以進(jìn)入 PCL-CVS 中,例如用 cvs-examine:

          M-x cvs-examine RET path/to/MODULE RET

       RET 表示回車鍵;path/to/MODULE,源碼復(fù)本的目錄,cvs-examine 缺省為當(dāng)前
       目錄。此時(shí) Emacs 打開名為 *cvs* 的緩沖,就是 PCL-CVS 的主界面。

       PCL-CVS 只是命令行 cvs 的前端界面。在 *cvs* 緩沖中的命令,基本只需要按
       一兩下鍵盤,Emacs 將其翻譯為 cvs 控制命令。每執(zhí)行一次,Emacs 會(huì)在緩沖
       底部顯示對(duì)應(yīng)的 cvs 命令,以供參考。

    3. 在 cvs 緩沖中常用的命令

       n, p   移動(dòng)光標(biāo)。

       f, o, RET 打開當(dāng)前文件。

       M-s    列出所有文件的當(dāng)前狀態(tài)。
       x      在緩沖中去掉所有是 Up-To-Date 的狀態(tài)的文件,這樣比較干凈。

       M-u    更新本地拷貝。

       U      放棄所做的改動(dòng),小心別把你沒有提交的工作弄沒了。

       m      標(biāo)記文件,用于對(duì)多個(gè)文件同時(shí)操作。u 去掉標(biāo)記并下移;Backspace
              去掉標(biāo)記并上移;M-Backspace 同時(shí)去掉 buffer 中所有標(biāo)記。% 用正
              則表達(dá)式標(biāo)記文件。

       c      準(zhǔn)備提交所做的改動(dòng),會(huì)彈出一個(gè) *cvs-commit* 緩沖,用來寫修改的
              日志,寫完完按 C-c C-c,執(zhí)行提交。如果有標(biāo)記,同時(shí)對(duì)所標(biāo)記的所
              有文件相庫提交。

       C      和 c 類似,但是清除上次提交時(shí)留在 *cvs-commit* 緩沖中的內(nèi)容,不
              過如果當(dāng)前目錄里的 ChangeLog 文件中有相關(guān)內(nèi)容,會(huì)自動(dòng)插入。

       d      有一個(gè)提示,詢問用哪種方式 diff。此時(shí)常用的可能是:

              d d  或 d =,比較文件,本地拷貝和最后一次提交時(shí)的修訂版;
              d h  比較本地拷貝和當(dāng)前源碼庫中最新版;
              d b  比較本地拷貝和該文件的備份;
              d e  用 ediff 比較文件,本地拷貝和最后一次提交時(shí)的修訂版。
      d y  和前一天的比較

       r      刪除文件,從當(dāng)前拷貝的工作目錄中刪除,需要提交。

       a      添加文件,添加到當(dāng)前拷貝的工作目錄中,需要提交。

       i      把某個(gè)文件的名字添加到 .cvsignore 文件,這樣在運(yùn)行 cvs 命令時(shí),
              cvs 不再理會(huì)此文件。編輯 .cvsignore 文件,每一行一個(gè)或一類文件。
              下面是一個(gè) .cvsignore 文件的例子。有些類型的文件 cvs 缺省就是忽
              略的,比如 .o 文件。

       t      設(shè)置 tag,提示輸入 tag 名字。

       l      查看一個(gè)文件,所標(biāo)記的多個(gè)文件,或目錄文件的 log 信息。

       s      通過 cvs status 命令查看文件或目錄的狀態(tài),會(huì)彈出一個(gè)漂亮的
              *cvs-info* 緩沖,列出文件的狀態(tài)信息。

       z, q   關(guān)閉 *cvs* 緩沖。

    4. cvs buffer 中幾種狀態(tài)的說明(括號(hào)中是此時(shí)可能需要用到的命令):

       cvs buffer 中按一下 M-s 可以列出所有文件。每個(gè)一行,分別列出了當(dāng)前的
       CVS 狀態(tài)、修訂版和文件名。

       "Up-to-date" 文件和庫中文件一致,也就是說,目前是最新的修訂版,而且沒
       有被改動(dòng)過。(按 f 或 RET,進(jìn)入文件進(jìn)行編輯,l 看修改歷史,+ 看 tag 信
       息)

       "Need-Update" 文件相對(duì)于源碼庫,不是最新的,需要更新。(M-u 更新,d h
       比較當(dāng)前文件和源碼庫中的區(qū)別)

       "Modified" 文件已經(jīng)被改動(dòng)過,但還沒有提交到源碼庫。(c/C 提交,d d 比
       較,d e 用 ediff 比較,U 放棄修改,小心使用)

       "Added" 用 cvs add 命令新添加的文件,添加了新文件只在本地有效,需要提
       交到源碼庫。(c/C 提交)

       "Removed" 用 cvs 的 remove 命令刪除的文件,同 add 一樣,需要提交到源碼
       庫。(c/C 提交)

       "Needs-Merge" 你編輯文件的時(shí)候,別人又向源碼庫提交過,因此本地的改動(dòng),
       和源碼庫中的需要合并。(先 M-u 更新,如果發(fā)生沖突,手工修改,再 c/C 提
       交,d b 和原來的備份比較,d h 和庫中比較)

       "Conflict" 你的提交和源碼庫中當(dāng)前的狀態(tài)有沖突,需要手工修改,并再提交
       一次。(手工修改,再 c/C 提交)

       "Unknown" 源碼庫中沒有該文件,這或許不是你想要的,或許是剛剛新建的。
       (如果想讓 cvs 忽略此文件,按 i;想添加到源碼庫,按 a,再提交;用 r 刪
       除)

       "Missing" 源碼庫中有,可是本地拷貝中卻沒有了。(M-u 更新,可以從新從源
       碼庫得到拷貝)

    5. 用 Emacs 的前綴參數(shù)修改 cvs 命令的選項(xiàng)

       很多 cvs 命令可以給一個(gè)前綴參數(shù),改變?nèi)笔〉男袨椤6鄶?shù)的前綴參數(shù)都是
       C-u,而多數(shù)改變的行為,就是修改傳遞給 cvs 的默認(rèn)選項(xiàng)。

       每執(zhí)行一次操作,pcl-cvs 的 *cvs* 緩沖底部都會(huì)顯示實(shí)際執(zhí)行的 cvs 命令,
       這些命令往往帶有一些參數(shù),如何修改這些參數(shù)呢?就通過給 pcl-cvs 的命令
       加前綴 C-u。一般的,一個(gè) C-u 只改變當(dāng)前命令所用的 cvs 選項(xiàng),如果前綴兩
       個(gè) C-u,則是永久改變所用選項(xiàng)。

       例如,d d 缺省比較當(dāng)前拷貝和庫中你check out時(shí)的修訂版。

           如果用 C-u d d 會(huì)提示輸入 cvs 的選項(xiàng),此時(shí)你可以給任意的 cvs diff
           選項(xiàng),用以進(jìn)行各種各樣靈活的比較。比如,輸入 -r1.10 -r2.3 RET,此
           次比較的就是源碼庫中當(dāng)前文件修訂版 1.10 和 2.3 之間的區(qū)別。

           如果 C-u C-u d d,輸入 -r1.10 RET,以后的 d d 命令都會(huì)帶著 -r1.10
           仿佛永久修改了默認(rèn)選項(xiàng)。當(dāng)然,可以再 C-u C-u d d 修改回去。

       再如,cvs add 命令添加二進(jìn)制文件需要 -kb 選項(xiàng),用 C-u a 則提示輸入cvs
       add flags,輸入 -kb RET,OK。

    6. 查看一些信息

       在一個(gè)文件或目錄上,或標(biāo)記了一些文件,按 l 可以在 *cvs-info* 緩沖中看
       到這些文件的 log 信息,就是提交到源碼庫中的更新日志;按 s 可以看到狀態(tài)
       信息;按 + 也是狀態(tài)信息,但是 tag 表為樹型結(jié)構(gòu)。

       按 l 查看 log 信息時(shí),*cvs-info* 緩沖的狀態(tài)為 (Log-View CVS)。此時(shí),有
       很多方便的操作,比如比較兩個(gè)修訂版之間的不同,修改源碼庫中的 log 信息,
       打開某個(gè)文件任意的修訂版。比如,在 *cvs* 的某個(gè)目錄上面按了 l,然后轉(zhuǎn)
       到 *cvs-info* 緩沖中,這里面列出的時(shí)該目錄中所有文件的 log 信息,此時(shí)
       的常用命令如下。

           n, p    移動(dòng)光標(biāo),在一個(gè)文件內(nèi)的不同修訂版之間
           N, P    移動(dòng)光標(biāo),在不同的文件之間,M-n, M-p 同樣

           m       設(shè)置 mark
           d       和設(shè)置 mark 的那個(gè)修訂版進(jìn)行 diff

           e       修改當(dāng)前 log,編輯完,C-c C-c 提交

           f, o, RET
                   這幾個(gè)都是打開當(dāng)前的修訂版,稍有區(qū)別。用 f 的時(shí)候如果提示
                   vc-find-version 沒有定義,手工加載一下 vc 庫
                   M-x load-library RET vc RET。

           z       關(guān)閉該緩沖

       如果在 *cvs* 的目錄里按 s,此時(shí)的 *cvs-info* 緩沖為(CVS-Status CVS)狀
       態(tài),在這個(gè)緩沖中,也可以做類似的一些操作:

           N, P   在文件之間移動(dòng), M-n, M-p 同樣
           n, p   上一行,下一行

           f, o, RET
                  把光標(biāo)移動(dòng)到某個(gè) tag 的名字上,則可以直接打開那個(gè) tag 所在
                  的修訂版

           T, t   把每個(gè)文件所列的 tag 表轉(zhuǎn)為樹型結(jié)構(gòu),T 為橫向的樹,t 為豎向
                  的樹

       diff 命令產(chǎn)生的 *cvs-diff* 緩沖中也類似,N/P 在文件之間移動(dòng),n/p 在不
       同的 diff 之間移動(dòng)。此外,在任何一行代碼的未知按 o 或 RET 可以直接轉(zhuǎn)到
       文件中的實(shí)際未知,很方便的。

    7. Emacs 的 VC 的方便之處

       在 PCL-CVS 中,幾乎可以做任何 CVS 相關(guān)的操作。但有時(shí)候未免有些麻煩,配
       合 Emacs 的 VC (Version Control) 會(huì)方便很多。

       Emacs 的 VC 模式的作者就是著名的 Eric S. Raymond。VC 的功能很強(qiáng)大,而
       且方便靈活。可以使用在三種版本管理系統(tǒng)中:RCS、CVS、SCCS,操作方式一致。
       和 PCL-CVS 不同的是,VC 使用 C-x v 前綴完成大部分功能,不像PCL-CVS 使
       用一個(gè)主界面,這使 VC 顯得更方便。

       幾個(gè)主要的命令:

       C-x v v    vc-next-action
                  顧名思義,執(zhí)行下一個(gè)動(dòng)作,下一個(gè)動(dòng)作是什么就執(zhí)行什么,如果
                  是 Unknown 就 cvs add,如果是 Modified 就 commit,如果是
                  Up-to-date 就什么都不用做了。最方便的是只需在當(dāng)前 buffer 中
                  執(zhí)行。

       C-x v m    vc-merge
                  將庫中別人所做的改動(dòng)與本地的改動(dòng)合并,和庫中的版本保持一致。

       C-x v a    vc-update-change-log
                  更新更改日志文件 ChangeLog。如果源碼庫或本地拷貝中還沒有,
                  試一下這個(gè),它會(huì)根據(jù) cvs 的提交日志,自動(dòng)產(chǎn)生 ChangeLog,如
                  果已經(jīng)有了,但已經(jīng)有一段時(shí)間沒有更新過,它會(huì)自動(dòng)更新
                  ChangeLog 文件到最新的一條記錄。

       C-x v ~    vc-version-other-window
                  PCL-CVS 也可以方便的查看某個(gè)歷史版本,不過都需要轉(zhuǎn)到相應(yīng)的
                  控制界面(*cvs* 或 *cvs-info* buffer)中。而 VC 的這個(gè)命令可
                  以在當(dāng)前緩沖中用,會(huì)提示輸入版本號(hào),然后顯示在另一個(gè)窗口中,
                  并保存在當(dāng)前目錄,文件名為 FILENAME.~REV~。

       有時(shí)候,用 CVS 管理的東西不需要整體的控制,比如自己的筆記、隨筆之類,
       用 Emacs 設(shè)置上 bookmark,打開就寫點(diǎn),寫完馬上就提交,往往不必打開
       PCL-CVS,恰恰 VC 這些靈活的命令非常合適。

       繼續(xù)了解 VC:

       C-x v =    vc-diff
                  比較文件。如果用了前綴參數(shù),會(huì)詢問和哪個(gè)文件的哪個(gè)版本比較。

       C-x v u    vc-revert-buffer
                  放棄沒有提交的改動(dòng),恢復(fù)原狀,也就是你的本地拷貝的版本,并
                  不管庫中的最新改動(dòng)。如果想同時(shí)和庫中別人所做的改動(dòng)保持一致,
                  用 C-u 作為前綴參數(shù)。

       C-x v g    vc-annotate
                  看看你的每行代碼的狀態(tài)(編輯歷史)。每行的顏色用來表示這行代
                  碼的新舊程度,藍(lán)色的時(shí)間最長(zhǎng),紅色的最短,其他的居中。默認(rèn)
                  的最長(zhǎng)時(shí)間為一年,超過一年的都顯示為藍(lán)色。用前綴參數(shù)可以修
                  改所顯示的版本和默認(rèn)最長(zhǎng)時(shí)間。

                  這個(gè)緩沖中還有一些有趣的功能,可以直接轉(zhuǎn)到某個(gè)修訂版。每行
                  的最前面為當(dāng)前行最后一次修改的修訂版,在這行上按 J,整個(gè)緩
                  沖中的內(nèi)容全都替換為這個(gè)修訂版;按 N (或 P) 為緩沖中當(dāng)前的
                  后一個(gè)(前一個(gè))修訂版;按 A 轉(zhuǎn)到當(dāng)前行上次被修改的版本。N/P
                  按修訂版歷史瀏覽,A 按當(dāng)前行修改歷史瀏覽,J 跳轉(zhuǎn)該行所指修
                  訂版,W 回到該文件的當(dāng)前修訂版。注意,模式行上文件名的后面
                  標(biāo)注了緩沖當(dāng)前內(nèi)容的修訂版。另外,D 可以比較當(dāng)前行上的修訂
                  版和前一修訂版的區(qū)別,N/P 可以使用前綴參數(shù)。

       C-x v d    vc-directory
                  打開一個(gè)帶版本控制功能的 Dired buffer,功能和 pcl-cvs 的
                  *cvs* buffer 有些類似。或許對(duì)非 CVS 的版本管理比較有用。

    8. 相關(guān)配置

       由 CVS 管理的模塊中都有 "CVS" 目錄,打開 cvs-dired-use-hook 時(shí),在
       "CVS" 目錄上按 F,直接進(jìn)入該模塊的 *cvs* buffer:
         (setq cvs-dired-use-hook 'always)

       給 cvs-examine 一個(gè)方便的綁定:
         (define-key global-map "\C-xve" 'cvs-examine) 綁定到 C-x v e。



    Trackback: http://tb.donews.net/TrackBack.aspx?PostId=59395
    posted on 2005-08-04 14:56 ivaneeo 閱讀(602) 評(píng)論(0)  編輯  收藏 所屬分類: emacs-牛露鋒芒
    主站蜘蛛池模板: 免费女人高潮流视频在线观看| 亚洲中文无码卡通动漫野外 | 99久久人妻精品免费一区| 久久亚洲欧洲国产综合| 特级毛片全部免费播放a一级| 午夜精品在线免费观看| 亚洲熟妇自偷自拍另欧美| 最近中文字幕无吗高清免费视频| 亚洲一区免费视频| 午夜时刻免费入口| 国产成人人综合亚洲欧美丁香花 | 在线免费观看中文字幕| 亚洲AV无码资源在线观看| 在线观看免费精品国产| 免费中文字幕视频| 亚洲日本一区二区一本一道| 中文字幕成人免费高清在线视频| 亚洲情综合五月天| 免费国产污网站在线观看15| 77777_亚洲午夜久久多人| 亚洲中文无码永久免费| 亚洲色中文字幕在线播放| 免费人成激情视频| 三根一起会坏掉的好痛免费三级全黄的视频在线观看 | 99国产精品永久免费视频| 国产精品亚洲自在线播放页码| 蜜桃视频在线观看免费网址入口| 亚洲午夜理论片在线观看| 亚洲?v女人的天堂在线观看| 中文字幕乱码免费看电影| 亚洲色图.com| 国产99视频免费精品是看6 | 无码精品一区二区三区免费视频| 91午夜精品亚洲一区二区三区| 暖暖免费高清日本中文| 最新亚洲成av人免费看| 亚洲伊人精品综合在合线| 亚洲AⅤ无码一区二区三区在线 | 亚洲精品视频免费| 亚洲男人电影天堂| 亚洲AV无码乱码在线观看牲色|