生活随笔
收集整理的這篇文章主要介紹了
cvs update 的输出标志/update常用几个参
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
http://hithoper.blog.hexun.com/19367152_d.html
http://man.chinaunix.net/develop/cvsdoc_zh/
update 和 checkout 在執行中,會為每個文件打印一行提示信息,文件的狀態通過前面的單個字符指明:
U file
文件按要求從倉庫得到更新。用在那些倉庫里面有但你的工作目錄沒有的文件,以及工作目錄里面沒有修改過,但舊于倉庫的文件。
P file
類似 `U',但是 cvs 服務器發送的是補丁而不是整個文件。完成與 `U' 同樣的工作,但降低帶寬的使用。
A file
添加到你的私人副本中,當你使用 commit 后會加到倉庫。這可以提醒你需要提交文件。
R file
從你的私人副本中刪除,當你執行 commit 命令后會從倉庫清除。這可以提醒你文件需要提交。
M file
在你的工作目錄中,文件已經修改。 `M' 可以標明你工作的文件的兩種狀態: 同樣的文件倉庫里面沒有修改,你的文件仍保持原樣; 或者倉庫里面的文件也有修改,但在工作目錄里成功合并,沒有沖突發生。
如果合并,cvs 將打印一些信息,并建立工作文件的備份(與 update 執行前相同)。update 運行時會打印相應的名字。
C file
合并你與倉庫中修改到 file 時檢測到沖突。file (你工作目錄里面的副本) 是合并兩個修訂版的結果; 工作目錄里面還有未修改文件的副本,名為 .#file.revision,其中 revision 是你修改的文件所基于的修訂版。解決沖突見 Conflicts example 說明。 (注意,在有些系統里面,如果一段日子沒有訪問 .# 起頭的文件,系統會自動清除。如果你需要保留這些原始的文件副本,最好將其改名) vms 系統中,文件名以 __ 開始,而不是 .#。
? file
file 處于工作目錄,但是倉庫里面沒有對應的文件,它們也不是 cvs 忽略的文件(參見 `-I' 選項的說明,以及 參閱 cvsignore)。
?
?
update的幾個常用參數:
-D date 使用不遲于 date 的最新修訂版。這是一個粘性的選項,含有 `-P'。見 Sticky tags,了解更多粘性標簽/日期的信息。
-f 只與 `-D' 或 `-r' 標識一起使用。如果沒有匹配的修訂版,獲取最新的修訂版(而不是忽略這些文件)。
-k kflag
根據 kflag 處理關鍵字。參閱 Keyword substitution。此選項是粘性的; 以后在這個工作目錄里面更新,還是使用相同的 kflag。status 命令可以看到粘性的選項。參閱 Invoking CVS,了解 status 命令的信息。
-l 只在當前工作目錄里面執行。 參閱 Recursive behavior.
-P 清除空目錄。參閱 Moving directories.
-p 管道方式輸出到標準輸出。
-R 遞歸方式檢出(默認)。 參閱 Recursive behavior.
-r tag
[:date
] 獲得 rev 修訂版/標簽,或者當 date 指定,并且 tag 是分支標簽,分支 tag 上的版本可以當作是在 date 上。此選項是粘性的,含`-P'。參閱 Sticky tags 和 Common options 了解更多粘性標簽/日期的信息。
update 還有一些特殊的選項。
-A 重置任何的粘性標簽,日期,或 `-k' 選項。參閱Sticky tags,了解更多粘性標簽/日期的信息。
-C 用倉庫里面干凈的副本覆蓋本地的修改(但修改過的文件另存為 .#file.revision)。
-d 創建倉庫里面存在而工作目錄里面沒有的目錄。通常,update 只作用于你工作目錄里面已經存在的文件和目錄。 此選項通常用來更新最初檢出創建的目錄; 但也有不好的副作用。如果你在建立工作目錄時,刻意避免倉庫里面的某些目錄(通過模塊名,或在命令行上明確指定所需的文件和目錄),用 `-d' 選項更新將創建這些你不想要的目錄。
-I name
更新時忽略匹配 name 的文件(在工作目錄里面)。你可以在命令行上多次使用 `-I' 指定多個要忽略的文件。`-I !' 可以避免忽略任何文件。參閱 cvsignore, 了解 cvs 忽略文件的其他方式。
-Wspec
指定更新時需要過濾的文件名。你可以重復使用此選項。 spec 可以是文件名模板,與 .cvswrappers 文件里面的類型相同。參閱 Wrappers.
-jrevision
通過兩個 `-j' 選項,合并第一個 `-j' 選項指定的修訂版至第二個 `j' 選項修訂版的變更到工作目錄。 使用一個 `-j' 選項,合并最初的修訂版至 `-j' 選項指定修訂版的變更到工作目錄。最初的修訂版是工作目錄文件基于的修訂版和 `-j' 選項指定修訂版共同的祖先。
注意使用 `-j tagname' 選項而不是 `-j branchname',合并的通常不是從分支上刪除文件的變更。參閱 Merging adds and removals, 了解詳細情況。
另外,每個 `-j' 選項可以包含可選的日期規格,當用于分支時,可以限制修訂版處于指定日期之內。可選的日期通過分號(:)加在標簽里面: `-jSymbolic_Tag:Date_Specifier'.
?
===
http://man.chinaunix.net/develop/cvsdoc_zh/Keyword-substitution.html#Keyword-substitution
只要你在工作目錄中編輯源代碼,你可以隨時使用 `cvs status' 和 `cvs log' 命令了解文件的狀況。一旦你從開發環境中導出了這些文件,將很難識別這些文件的版本。
cvs 提供一種關鍵字替換(keyword substitution),或者叫作關鍵字擴展(keyword expansion),機制來幫助識別這些文件。在文章中嵌入 $keyword$ 和 $keyword:...$ 形式的字符串,以后在獲得文件新版本時將自動被 $keyword:value$ 字串所替代。
?
=================
12.1 關鍵字列表
這是關鍵字列表:
$Author$
檢入該版本的用戶登錄名。
$CVSHeader$
標準的頭部(類似去掉 CVS 根的 $Header$)。包括 rcs 文件的全路徑、版本號、日期(UTC)、作者、狀態、加鎖人(如果有鎖)。在使用 cvs 中文件通常不用加鎖。 注意,該關鍵字是新加到 cvs 的,假如舊的文件中有 $CVSHeader$ 并有其他意義,會帶來一些問題。可以在 CVSROOT/config 中用 KeywordExpand=eCVSHeader 來排除此關鍵字。參閱 Configuring keyword expansion。
$Date$
該版本被檢入的日期與時間(UTC)。
$Header$
標準的 header 包括 rcs 文件的全路徑、版本號、日期(UTC)、作者、狀態、加鎖人(如果有鎖)。 在使用 cvs 中文件通常不用加鎖。
$Id$
除了 rcs 文件不包括路徑,其余和 $Header$ 相同。
$Name$
檢出此文件所用的標簽名。該關鍵字只在檢出時顯式加上標簽時擴展。比如,運行 cvs co -r first 命令時,關鍵字擴展為 `Name: first'。
$Locker$
鎖定版本的用戶登錄名(如果沒有加鎖此項為空,一般就如此,除非使用 cvs admin -l 加鎖)。
$Log$
日志信息在提交時提供,前面是一個 header 包括 rcs 文件名、版本號、作者、日期(UTC)。已有的日志信息不會被替換。相反,新日志信息將插在 $Log:...$之后。默認,每一新行前面使用同樣的 $Log$ 關鍵字前的字符串, 除非在 CVSROOT/config 里面設置 MaxCommentLeaderLength。 例如,文件文件包含:
/* Here is what people have been up to:** $Log: frob.c,v $* Revision 1.1 1997/01/03 14:23:51 joe* Add the superfrobnicate option**/ 新增的行擴展 $Log$ 關鍵字后前面也會帶有 ` * ' 字符。與以前版本的 cvs 和 rcs不同,rcs 文件中的不再使用 comment leader。 $Log$ 關鍵字將會在源文件中累積日志紀錄。有些原因可能會造成問題。
如果 $Log$ 關鍵字的前綴超出 MaxCommentLeaderLength 長度, CVS 將跳過關鍵字擴展,除非在 CVSROOT/config 中設置 UseArchiveCommentLeader,并且有 `comment leader' 設置在 RCS archive 文件,使得 comment leader 替代使用。為了了解更多關于 RCS archive 中設置 comment leader,參閱 admin. 了解更多默認的 $Log$ 替換配置,參閱 config.
參閱 Log keyword.
$RCSfile$
不帶路徑的 RCS 文件名。
$Revision$
該文件的修訂版本號。
$Source$
RCS 文件的完整路徑。
$State$
賦予版本的狀態。可以通過使用 cvs admin -s 命令設置狀態—參閱 admin options。
Local keyword
CVSROOT/config 文件中的 LocalKeyword 選項可以被用作其他關鍵字的別名: $Id$, $Header$, or $CVSHeader$。例如,在 CVSROOT/config 中包含 LocalKeyword=MYBSD=CVSHeader 這樣一行,帶有 $MYBSD$ 的文件會像 $CVSHeader$ 一樣被擴展。如果 src/frob.c 文件包含這個關鍵字,像下面這樣: /** $MYBSD: src/frob.c,v 1.1 2003/05/04 09:27:45 john Exp $*/ 許多倉庫使用 “local keyword” 這類特性。 cvs 的一個舊補丁提供 LocalKeyword 特性,它們使用稱為“custom tag”或“local tag”特性的 tag= 選項。它被用于它們稱為 tagexpand= 選項。在 cvs 中另一個選項為 KeywordExpand。參閱 Configuring keyword expansion。
知名的項目中有這些例子: $FreeBSD$, $NetBSD$, $OpenBSD$, $XFree86$, $Xorg$.
使用它的優點在于可以使用自己的版本信息而不破壞上面版本(它們可能使用不同的 local keyword 或標準關鍵字)。使得 bug 報告可以更恰當地識別第三方的錯誤源,以及減少導入新版本時產生的沖突數。
除 local keyword 之外所有的關鍵字都可以在 CVSROOT/config 文件中用 KeywordExpand 選項停用—參閱 Configuring keyword expansion 獲得詳細信息。
?
====================
12.4 替換模式
每一個文件保存有一個默認的替換模式,每個文件的工作目錄副本也有一個替換模式。前者通過用 `-k' 選項的 cvs add 和 cvs admin 命令設置; 后者用 `-k' 或 `-A' 選項的 cvs checkout 或 cvs update 命令設置。 cvs diff 命令也有一個 `-k' 選項。參閱 Binary files 和 Merging and keywords 獲得這些例子。
可用的模式為:
`
-kkv'
使用默認形式產生關鍵字字符串,如。 $Revision: 5.7 $ 對于 Revision 關鍵字。
`
-kkvl'
類似 `-kkv',如果指定的版本現在被加鎖,還需要插入加鎖者的名字。鎖名與使用的 cvs admin -l 命令相關。
`
-kk'
在關鍵字字符串中只生成關鍵字名;忽略其值。例如,對于關鍵字 Revision,生成的字符串是 $Revision$ 而不是 $Revision: 5.7 $。這一選項在比較版本差異時忽略關鍵字替換的影響非常有用(參閱 Merging and keywords)。
`
-ko'
生成舊的關鍵字字符串,在工作中的文件與檢入前一樣。例如:對于關鍵字 Revision,如果檢入前字符串是 $Revision: 1.1 $,則生成的字串與以前相同而不會是 $Revision: 5.7 $。
`
-kb'
類似 `-ko' 選項,并阻止換行字符的轉換,這種轉換是因為換行符在倉庫(只是換行) 的形式與客戶機使用的操作系統不同。對有些系統,比如 Unix,換行符就是行中止符,這樣就和 `-ko' 沒什么區別。關于二進制文件的更多信息,參閱 Binary files。在 cvs 版本 1.12.2 及之后的 `-kb',不會被在命令行中使用 `-k' 選項的 cvs add、cvs admin 或 cvs import 跨越。
`
-kv'
只為關鍵字符串生成關鍵字值。例如,對于關鍵字 Revision,生成的字串是 5.7,而不是 $Revision: 5.7 $。這種方法有助于一些難以從 $Revision: $ 這樣的字符串中剝去關鍵字分界符的編程語言生成文件。但是,一旦刪除關鍵字名,以后將不能執行關鍵字替換,所以應小心使用該選項。 通常將 `-kv' 選項與 cvs export 命令配合使用 —參閱 export。但請注意,它不能正確導出的文件中的二進制文件。
?
總結
以上是生活随笔為你收集整理的cvs update 的输出标志/update常用几个参的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。