将当前目录下所有扩展名为txt的文件添加到depot相应目录,注意在添加文件的时候不可以使用通配符 ... 因为 ... 有服务器负责解析,这时候服务器并不知道需要添加什么文件,但却可以使用 * ,它是由shell负责解析。
另外,所有修改在submit之前都不会提交到服务器。
修改文件:
$p4 edit //depot/src/a.c
这个文件执行以后在服务器上就会记录下当前的 client已经在编辑这个文件,在本地只有一个动作,就是将a.c文件的只读属性去掉,这时候我们就可以随便使用某种编辑器来编辑这个文件了,在这之前所有文件都是只读的,而且不要手动去掉只读属性来编辑,因为那样服务器跟踪不到client的修改记录。
删除文件:
$p4 delete //depot/doc/a.pdf
注意在submit之前这个文件在服务器上也是不会被删除的。
撤销修改: $p4 revert *.txt
这会将之前所有添加的或者修改的,以txt作为扩展名的文件全部撤销到原先的状态,原先添加的文件会被删除,修改的文件被还原到执行p4 sync时候的版本。 最后我们可以将上面所有修改全部提交: $p4 submit
这时候p4会调用默认的或者P4EDITOR所指定的编辑器来编辑一个配置文件,里面包含了提交者的信息,对这次提交的描述以及列举出涉及到的文件等,一般来说把Description一项填充完保存就可以了。然后会看到屏幕上哗啦哗啦的输出一堆东西,最后显示 Change xxxx submitted. 就表示这次提交成功了。如果出现错误,有可能是存在冲突或者别的情况,关于冲突的问题留着后面再说~~_~~ 文件之间的diff: $p4 diff file $p4 diff2 file1 file2
前者在client端进行比较,使用client端配置的工具,相对于perforce自带的diff我还是更喜欢vimdiff :-)后者在server端比较,返回两个文件(也可能是很多文件)之间的比较结果。 离线工作:
在线工作的时候所有文件的修改都由服务器来记录,文件的读写权限设置也是和服务器上同步的,但是一但离线就需要用另一种方法来管理workspace里面的文件了。
首先需要对那些等待修改的文件手动去掉只读属性,然后可以开始修改,等到和服务器建立连接的时候需要做两件事情:
1 找到所有修改过的文件,open for edit $p4 diff -se | p4 -x - edit
2 找到所有删除的文件, open for delete $p4 diff -sd | p4 -x - delete 最后 submit 就可以
下面是perforce diff详述:
概述
对一个客户工作区中的文件和一个版本库中的文件版本进行比较 语法
p4 [g-opts] diff [-dflag -f -m max -sa -sb-sd -se -sr -sl -t] [file[rev#]...] 描述
p4 diff 命令在Perforce客户端上运行一个diff程序, 对客户工作区中的文件和版本库中的版本文件进行比较。
这个命令需要一个包含版本标识符的文件参数。如果包含了一个版本标识符,在客户工作区的文件会与该指定的版本文件进行比较。如果没有包含版本标识符,那么客户工作区的文件会与当前被编辑的版本(通常是最新的版本)进行比较。在这两种情况中,客户的文件都必须被打开编辑,或比较必须是对客户文件最后一个同步版本不同的版本文件进行比较。
如果文件名包括通配符,那么所有打开得匹配该模板的文件都会被比较。如果没有提供文件参数,那么所有打开的文件会与他们在版本库中的相应文件进行比较。
缺省情况下,diff 程序使用的是内建在p4客户程序中的。如果要改变diff 程序去运行一个外部程序,那么设置P4DIFF 环境变量或注册一个变量来指向这个新的程序。 选项 -f
强制进行比较 (如果没有版本标识符,那么于最新版本比较),即使客户文件没有打开进行编辑 -dflags
传递选项给后面的diff 程序 (阅读下面的使用提示) -m max
限定输出显示diffs(or status) 的第一个max 文件 -sa
只显示那些打开的与版本库里版本文件不同或不存在的文件的名字 -sb
只显示打开得已解析过给集成的,但是在解析后背修改过的文件的名字 -sd
只显示那么没有打开得没有存在与客户工作区中,但是在版本库中存在的文件的名字。 -se
只显示没有打开的在客户工作区中但是与版本库中版本不同的文件的名字 -sr
只显示那些在客户工作区中打开的用来标识版本库中版本的文件的名字。 -sl file...
所有打开的文件与版本库进行比较,然后显示三种状态 same, diff, 或 missing.中的一种 If you use the -f flag together with the-sl flag, files that are open for edit are also compared and their status islisted.
-t
比较甚至文件类型不是文本类型的文件的不同 g-opts 阅读 全局选项部分 使用提示
Can File Arguments Use Revision Specifier? YES
Can File Arguments Use Revision Range? NO
Minimal Access Level Required read
p4 diff 支持的diff 选项有: 选项 名字 -dn
RCS输出格式,显示文件中增加的和删除的以及相关行的内容 -dc
文本输出格式,显示行编号范围和三行变更内容 -ds
总结输出格式,只显示总共增加,删除或修改的行数量 -du
unifiedoutput format, showing added and deleted lines with sufficient context forcompatibility with the patch(1) utility. -dl
ignoreline-ending (CR/LF) convention when finding diffs -db
ignorechanges made within whitespace; this flag implies -dl. -dw
ignorewhitespace altogether; this flag implies -dl. ??
为了传递超过一个的选项给diff程序,可以打包他们。例如: p4 diff -dub file
specifies a unified diff that ignores changes in whitespace. ???
The header line of a unifieddiff produced with the -du option for use with patch(1) displays filenames inPerforce syntax, not local syntax. 举例 p4 diff file#5
将客户工作区中的“file”与版本库中的第五版本进行比较 p4 diff @1999/05/22
将客户工作区中所有打开得文件与版本库中May 22, 1999修改的版本进行比较. p4 diff -du file
对file 进行比较,显示符合patch(1) utility格式的输出. p4 diff -sr | p4 -x - revert
恢复所有打开得没有修改过的文件。
This differs from p4 revert -a ( revert allunchanged files, where resolving a file, even if no changes are made, counts asa change), in that it reverts files whose workspace content matches the depotcontent, including resolved files that happen to be identical to those in thedepot.
第一个命令显示所有打开得没有修改过的文件。The second command (running p4 -x and taking arguments, one perline, from standard input, abbreviated as \inthat list.
(This is the UNIX version of this command;it uses a pipe. Most operating systems have some equivalent way of performingthese operations in series). p4关于 -x 选项的更多信息,阅读 全局选项 部分 相关命令
比较两个版本库中的文件版本的不同 p4 diff2
查看一个文件的全部内容