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

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

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

    ivaneeo's blog

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

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

    1. 當然,先用命令行 check out 出源碼拷貝

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

    2. 從 Emacs 開始

       幾個命令都可以進入 PCL-CVS 中,例如用 cvs-examine:

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

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

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

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

       n, p   移動光標。

       f, o, RET 打開當前文件。

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

       M-u    更新本地拷貝。

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

       m      標記文件,用于對多個文件同時操作。u 去掉標記并下移;Backspace
              去掉標記并上移;M-Backspace 同時去掉 buffer 中所有標記。% 用正
              則表達式標記文件。

       c      準備提交所做的改動,會彈出一個 *cvs-commit* 緩沖,用來寫修改的
              日志,寫完完按 C-c C-c,執(zhí)行提交。如果有標記,同時對所標記的所
              有文件相庫提交。

       C      和 c 類似,但是清除上次提交時留在 *cvs-commit* 緩沖中的內容,不
              過如果當前目錄里的 ChangeLog 文件中有相關內容,會自動插入。

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

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

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

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

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

       t      設置 tag,提示輸入 tag 名字。

       l      查看一個文件,所標記的多個文件,或目錄文件的 log 信息。

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

       z, q   關閉 *cvs* 緩沖。

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

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

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

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

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

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

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

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

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

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

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

    5. 用 Emacs 的前綴參數修改 cvs 命令的選項

       很多 cvs 命令可以給一個前綴參數,改變缺省的行為。多數的前綴參數都是
       C-u,而多數改變的行為,就是修改傳遞給 cvs 的默認選項。

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

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

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

           如果 C-u C-u d d,輸入 -r1.10 RET,以后的 d d 命令都會帶著 -r1.10
           仿佛永久修改了默認選項。當然,可以再 C-u C-u d d 修改回去。

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

    6. 查看一些信息

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

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

           n, p    移動光標,在一個文件內的不同修訂版之間
           N, P    移動光標,在不同的文件之間,M-n, M-p 同樣

           m       設置 mark
           d       和設置 mark 的那個修訂版進行 diff

           e       修改當前 log,編輯完,C-c C-c 提交

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

           z       關閉該緩沖

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

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

           f, o, RET
                  把光標移動到某個 tag 的名字上,則可以直接打開那個 tag 所在
                  的修訂版

           T, t   把每個文件所列的 tag 表轉為樹型結構,T 為橫向的樹,t 為豎向
                  的樹

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

    7. Emacs 的 VC 的方便之處

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

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

       幾個主要的命令:

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

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

       C-x v a    vc-update-change-log
                  更新更改日志文件 ChangeLog。如果源碼庫或本地拷貝中還沒有,
                  試一下這個,它會根據 cvs 的提交日志,自動產生 ChangeLog,如
                  果已經有了,但已經有一段時間沒有更新過,它會自動更新
                  ChangeLog 文件到最新的一條記錄。

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

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

       繼續(xù)了解 VC:

       C-x v =    vc-diff
                  比較文件。如果用了前綴參數,會詢問和哪個文件的哪個版本比較。

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

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

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

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

    8. 相關配置

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

       給 cvs-examine 一個方便的綁定:
         (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 閱讀(600) 評論(0)  編輯  收藏 所屬分類: emacs-牛露鋒芒
    主站蜘蛛池模板: 亚洲制服丝袜一区二区三区| 无码AV动漫精品一区二区免费| youjizz亚洲| 精品视频免费在线| 99久久国产精品免费一区二区| 精品免费久久久久久久| 免费一级大黄特色大片| 久久精品国产亚洲AV无码麻豆| 亚洲日韩精品国产3区| 国产真人无码作爱免费视频| 免费观看激色视频网站(性色)| 国产在线a不卡免费视频| 亚洲高清在线视频| 免费无码AV一区二区| 成人午夜免费福利| 亚洲高清在线视频| 特级毛片aaaa免费观看| 女性自慰aⅴ片高清免费| 在线免费观看亚洲| 色播在线永久免费视频网站| 日韩免费视频播播| 亚洲一区二区三区成人网站 | 日日AV拍夜夜添久久免费| 91亚洲国产成人精品下载| 在线视频网址免费播放| 亚洲v国产v天堂a无码久久| 亚洲色中文字幕在线播放| 97免费人妻无码视频| 亚洲福利秒拍一区二区| 69视频在线是免费观看| 中文字幕亚洲精品| 日韩精品成人无码专区免费| 亚洲欧洲日韩极速播放| 日韩一级视频免费观看| 羞羞视频免费网站含羞草| 亚洲熟妇少妇任你躁在线观看无码| 一级毛片人与动免费观看| 国产AV无码专区亚洲AV毛网站| 中文字幕乱理片免费完整的| 亚洲乳大丰满中文字幕| 在线观看成人免费视频不卡|