Perforce使用中文教程

P4递交建议流程:

1. p4 sync

2. 覆盖或者改动local文件

3. p4 delete or 直接delete 废弃的文件

4. p4 add: 增加新文件到depot

5. p4 diff -se: 查看编辑过的文件

6. p4 diff -se | p4 -x - edit: 把所有改动过的文件置为open for submit, 对于覆盖的文件 or没有用p4 edit的文件,需要这个命令, 才能将文件置为open状态, 才能方便递交

7. p4 diff -sd: 查看删除的文件(未用p4 delete删除的)

8. p4 diff -sd | p4 -x - delete: 置删除的文件为opened状态, 方便递交

9. p4 submit -d 'xxx': 递交

P4可以差分递交, 只要别人的递交没有影响到你的递交, 任何时候都可递交, 这一点, 和svn相同, 和git不同。

 

可以用p4 edit -k file将file设为opened状态。 

 

恢复:

p4 revert -a (file 可选): revert所有打开的已经存在的文件

p4 revert file: revrt 已经打开的已经存在的文件或者新add的文件

p4 sync -f: 强行同步到head changelist, 如果有打开的文件, 需要先revert

 

 

 

 

 

 

下面是网上的资料, 通用但不实用:

 

环境变量:
export P4PASSWD=abcdefg
export P4CLIENT=xxx    //这个可以不设
export P4USER=yyy
export P4PORT=ip:port

1. p4 client #配置本地信息,文件下载在哪里在这里面配置,Root项
2、p4 sync   #从perforce 下载文件
3、p4 login #登陆perforce
4、p4 help   #显示关于命令的帮助
5、p4 -h     #显示关于p4的帮助
6、 p4 labels ...   #显示和这个目录相关的标签
7、p4 sync @label #同步标签label中的所有文件
8、p4 files @label #查看标签label所包含的文件列表
9、p4 revert     #恢复所有打开的文件
10、p4 revert -n ... #恢复所有打开却没提交的文件
11、p4 branch brach   #新建分支
12、p4 integrate -b   brach   #合并分支brach中描述的文件
13、p4 opened #查看打开的文件
14、p4 help commands #查看p4所有命令的帮助
15、4 dirs -H .   #显示当前目录
16、p4 branches    #显示所有的分支
17、 p4 delete filename   #从p4删除文件
18、p4 changelists -L ...   #显示当前目录下面所有文件的修改注释
19、p4 label label   #新建标签 label,编辑标签
20、p4 tag -l label ... #把当前目录下面的所有文件添加到标签 label
21、p4 changes ...   #当前目录的changelist
22、 p4 sync @10931     #sync file @changelist
23、 p4 sync ...@10929   #only synclocalfile@changelist
24、p4 help revisions    #查看关于文件范围的帮助

export好变量之后,然后用1进行配置,就可以用p4 sync进行代码下载了

如果commandbar是目录则后面要加上/...,如果是文件的话就不用

在虚拟机上使用p4

一共分为如下几步:

1.      要在 Linux 上用 P4 ,就需要虚拟机能够访问外网

2.      安装及配置 P4

3.      配置源代码环境

 

下面具体介绍一下各个步骤:(我称我们的工作机本身为“主机”)

1.      配置虚拟机访问外部网络。设置步骤如下

1) 共享主机网卡

本地连接 -》 属性 -》高级 -》选择允许其它网络通过本...,并选择家庭网络连接为 VMware Network Adapter VMnet1

 

2) 设置虚拟机 IP 信息

选择 Traditional ….


3) 设置静态 IP

IP     192.168.0. xxx

Subnet mask 255.255.255.0

DNS        192.168.0.1(编辑/etc/reslove.conf)

Default Gateway 192.168.0.1

2.      安装及配置 P4

1)      下载客户端 http://www.perforce.com/perforce/downloads/index.html   我使用的是 The Perforce Command-Line Client (P4)

2)      把客户端放在文件夹 /usr/local/bin 。 这样能在任何目录直接使用 p4 命令

3)      配置客户端,在线帮助有很多种方式,我使用配置文件方式。步骤如下

a.      在 /usr 下面新建一个文件夹 p4config ( 可以自定义 ) ,在文件夹里面新建文件 p4.configfile.

b.      用 VI 打卡 p4.configfile, 输入如下配置

 

P4CLIENT= (定义你的工作空间,比如 ygxu_xms )

P4PASSWD= (你的密码)

P4PORT=10.12.33.133:1700

P4USER= (你的用户名)

 

保存退出。

c.       配置环境变量。修改后需要重启这个才生效

用 vi 打开 /etc/profile , 末尾处加入

 

#

# pv4 config file path

#

if test -z "$P4CONFIG" ; then

        export P4CONFIG=/usr/p4config/p4.configfile

fi

 

d.      测试环境配置是否成功

命令 p4 info , 如果显示了连接信息,则 OK ,否则会提示连接不上

 

3.      配置源代码环境

使用命令 p4 client 会有如下信息显示

 

Client:   你 上面配置的工作空 间

Update: 2010/01/19 20:38:36

Access: 2010/01/21 02:57:38

Owner:    你 的用 户 名

Host:   linux

Description:

        Created by ygxu.

Root:   /home/hammer

Options:        noallwrite noclobber nocompress unlocked nomodtime normdir

SubmitOptions: submitunchanged

LineEnd:        local

View:

       ….

        //XMS/SS7_Mainline/... //Arthur_Xms/XMS/SS7_Mainline/...

       ….

 

两个地方需要修改:

a . Root . 这个决定你的代码会放在什么地方,如上,我的是 /home/hammer

b. View. 这个决定你需要取哪些代码下来,因为一般不会把全部代码取下来,在 Linux 上我们一般只需要 XMS 的 SS7_Mainline, 所以把其他的删掉,修改成上面这个样子

      

       注意事项,一定要保证空间足够,建议先删掉原来的 SS7_Mainline ,使用 Shrink 工具回收空间之后再取代码。

       好了,使用 p4 sync 命令吧,就可以继续工作了!

       关于 p4 的使用命令,文档如下:

http://www.perforce.com/perforce/technical.html

更详细的命令格式参考 http://www.perforce.com/perforce/products/p4.html

p4客户端下载 http://www.perforce.com/perforce/downloads/index.html

*************************************************************************************************************************

快速上手perforce

perforce是什么?参考http://www.perforce.com

[概念]
先说说概念吧,一般来说版本控制软件都会分client和server,server负责做一些管理代码和文档仓库,控制各个用户的权限,记录版本升级历史之类的事情,client使用某种客户端连入server来完成代码、文档的修改、提交等工作,perforce也不例外。在server端perforce做得很精简,没有太多的依赖,一个p4d搞定,配置起来也很简单,它的主要任务就是管理一个文件仓库depot。在client端有user和workspace两个概念,user顾名思义就是在server上登记的一个用户,每个user可以拥有零个或者多个workspace,甚至也可以switch到别人的workspace上去,只要有权限。简单的说workspace是depot到本地的一个映射,例如这样写 //depot/foo/...   //myspace/bar/...就把depot里面foo目录下面所有东西映射到本地bar目录里面去了,myspace是和特定的workspace相关的,在设置workspace的时候可以设置它的绝对路径。

[连接之前的配置]
首先我们需要一个用户,假设已存在一个用户test,没有密码。
$P4CONFIG=p4conf.conf; export P4CONFIG
windows下使用
p4 set P4CONFIG=p4conf.conf
这个命令设置一个环境变量P4CONFIG,文件名可以自己定义,里面可以存放客户端的配置。在UNIX系统中配置信息都可以写道环境变量里,windows下可以都写到注册表里去,不过我更倾向于在某一个目录下面建立一个配置文件,这样可以很方便的切换不同的workspace。然后我们就可以开始编辑这个p4conf.conf配置文件,格式很简单都是 setting=value 形式的。
建立一个workspace目录,在里面新建一个p4conf.conf文件,内容如下:
P4PORT=192.168.0.1:1666
P4USER=test
P4CLIENT=test-client
这是一个最简单的配置文件,P4PORT指名了服务器的ip和端口,ip也可以用计算机名代替,例如
P4PORT=p4server:1666
如果留空 P4PORT=1666 这样代表默认连接本地的server,如同 P4PORT=127.0.0.1:1666一样。
P4USER是用户名,P4CLIENT是当前是用的workspace名字,这个名字可以任意取,仅仅是一个标识。
这时候就可以cd到这个目录运行一下
$p4 info
看看输出是什么,如果显示了如下内容
User name: test
Client name: test-client
Client host: computername
Client unknown.
Current directory: /home/test/workspace
Client address: 127.0.0.1:1508
Server address: 192.168.0.1:1666
Server root: .
Server date: 2006/07/26 00:28:12 +0800 China Standard Time
Server version: P4D/NTX86/2006.1/102189 (2006/06/27)
Server license: none
就表示成功连上服务器了,如果出现像这样的错误,那就要检查一下P4PORT有没有设置正确
Perforce client error:
       Connect to server failed; check $P4PORT.
       TCP connect to 1666 failed.
       connect: 1666: WSAECONNREFUSED
到这儿,最基本的client配置已经完成,很简单吧:-) 在配置文件里还可以存放一些其他的设置,例如
P4EDITOR指定在编辑的时候默认使用这个vim编辑器,P4DIFF指定了比较文件的时候使用的工具,
P4PASSWD当用户需要密码的时候可以提供一个默认密码,其他还有一些可以参考官方文档 P4 User's Guide

[连接之后的配置]
之前的所有设置都是保存在环境变量,配置文件或者注册表里面的,这仅仅定义了一个客户端的行为,很大一部分事情例如追踪用户的修改、打开、提交的文件之类都是由服务器记录下来的,所以现在我们需要通过一些命令来配置一下服务器那头的用户信息。
$p4 user
这个命令的结果是p4使用一个默认的编辑器打开一个临时文件,文件中保存着用户的一些信息,例如用户名,Email,FullName之类,用户可以自己修改其中某些设置,保存以后它会自动提交到服务器上更新用户设置。这个过程中使用的编辑器可以在环境变量或者配置文件中指定(P4EDITOR)。
$p4 client
和上面一样,这个命令编辑一个client的配置文件。Root对应于workspace在本机上的绝对路径,Options定义了一些client的属性,例如unlocked值允许其他的用户switch到你的工作空间,其他的定义可以参考官方文档。View的配置比较重要,它定义了服务器上面的文件到workspace的映射。例如
//depot/... //test-client/...
左右分别代表源地址和目的地址,中间以空格隔开,它的意思是将服务器depot里面所有文件映射到我的工作目录(在这之前用Root参数指定的绝对路径)。映射可以有多行:
//depot/src/... //test-client/local-src/...
//depot/doc/... //test-client/local-doc/...
这样就将代码和文档分别映射到本地,而且不一定要和服务器上使用相同的名字。在这之中也许会有需要排出的一些文件或者目录,这时只需要在映射前面加上一个减号:
-//depot/doc/file1.txt //test-client/local-doc/file1.txt
这样就排除了一个文件。在这个过程中要留意出现冲突,如下:
//depot/src/... //test-client/src/...
//depot/doc/... //test-client/src/...
将服务器上两个目录都映射到本地同一个目录。
上面的过程中使用了一种通配符“...”它递归的匹配这个目录以及子目录下面的所有文件,另一种上面没有使用的 “*” 匹配单个目录下的文件,例如 //test-client/src/*.c 匹配 src目录下面所有以 .c 作为扩展名的文件。
上面说了,如果把服务器上的两个目录都映射到本地通一个目录会产生冲突,后者会把前者覆盖,但如果这样写:
//depot/src/... //test-client/local-src/...
+//depot/doc/... //test-client/local-src/...
就会产生不同的效果,两个目录里面的文件都会出现在local-src这个目录中,不过如果仍然有重名的文件则后者会把前者覆盖。
至此,client的配置基本上完成,可以 $p4 sync 一下把服务器上的东西抓下来看看:-)
另外,如果要删除这个cient的话很简单 $p4 client -d test-client 就可以了

[文件管理]
配置了这么半天,现在开始步入正题,文件的管理才是我们使用perforce的核心工作。简单的说,文件操作可以分成三类:往depot里面添加文件,修改并提交文件和删除文件。
在这之前最好保证workspace里面文件和服务器上的最新版本同步,使用命令:
$p4 sync ...
如果需要同步到某一个版本,在后面添上 #1 数字代表版本号;如果需要强制同步所有文件,可以加上 -f 参数。关于sync的具体用法可以用命令
$p4 help sync
btw: 可以试试看$p4 help help

添加文件:
$p4 add *.txt
将当前目录下所有扩展名为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.
l
为了传递超过一个的选项给diff程序,可以打包他们。例如:
p4 diff -dub file
specifies a unified diff that ignores changes in whitespace.
l
?
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 "-") reverts each file 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
查看一个文件的全部内容
p4print
************************************************************************************************************************************

Perforce使用中文教程: p4 diff2

Perforce命令: p4 diff2

概述
比较版本库中文件的两个版本
语法
p4 [g-opts] diff2 [-dflags -q -t -u]file1[rev] file2[rev]
p4 [g-opts] diff2 [-dflags -q -t -u] -bbranch [[fromfile[rev]] tofile[rev]]
描述
p4 diff2 命令使用Perforce服务器中内建的diff程序对版本库中的俩个文件版本进行比较。这些版本通常是指同一个文件的两个不同的版本,但是他们也可以是两个完全不同文件的版本。如果没有没有提供版本给文件参数,那么最新的版本被用来比较。
p4 diff2 不使用由环境变量P4DIFF定义的diff程序。p4 diff命令使用的diff算法在装有Perforce服务器机器上运行,而且一直使用服务器内建的diff程序
可以在指定文件参数的位置指定一个有(或没有)版本标识的文件模版;这样可以导致Perforce对那些匹配模版的成对文件执行diff命令。如果你调用使用文件模版的p4 diff2命令,使用引号或反斜线可以从OS外壳中退出文件模版,那么确定在两个模版中的通配符相匹配。
Perforce presents the diffs in UNIX diffformat, prepended with a header. 起始部分的格式如下:
==== file1 (filetype1) - file2 (filetype2)==== summary
summary 可能出现的值和意义如下:
content: 文件版本的不同内容
types: 内容完全相同, 但是文件类型不同
identical: 版本的内容和文件类型都相同
如果文件file1 file2在指定的版本中不存在,那么起始部分将显示summary <none>.
选项
-q
Quietdiff.
只显示表头部分,并且在文件版本内容和类型不同时也不显示内容
-dflags

把标准的UNIX diff 选项之一作为参数运行diff程序。阅读后面的《使用提示》
-b branchname
fromfile[rev] tofile[rev]
使用一个分支的定义去比较在两个分支代码行里的文件。被比较的文件可以被文件模版中的 fromfile tofile里的任意一个所限定
-t

比较甚至文件类型不是文本类型的文件的不同
-u
Generateunified output format, showing added and deleted lines with sufficient contextfor compatibility with the patch(1) utility. Only those files that differ areincluded. File names and dates remain in Perforce syntax.
g-opts
阅读全局选项 部分
使用提示
Can File Arguments Use Revision Specifier?

Yes
Can File Arguments Use Revision Range?

NO
Minimal Access Level Required
readaccess necessary for both file revisions

The diff flagssupported by p4 diff2 are:
选项
名称
-dn
RCS输出格式,显示文件中增加的和删除的以及相关行的内容
-dc
文本输出格式,显示行编号范围和三行变更内容
-ds
总结输出格式,只显示总共增加,删除或修改的行数量
-du
unified输出格式 showing added and deleted lines with sufficient context forcompatibility with the patch(1) utility.
-db
忽略在空格中做的改变
-dw
忽略连在一起的空格
为了传递超过一个的选项给diff 程序,可以打包他们。例如
p4 diff2 -dub file1 file2
specifies a unified diff that ignoreschanges in whitespace.
The header lineof a unified diff produced with the -du option for patch(1) use displays thediffed files in Perforce syntax, not local syntax.


p4 diff2 命令被用来对比较二进制文件时,该行
... files differ ...
会被显示出来,如果他们没有被识别的话。
选项 -b branch [[fromfile[rev]] tofile[rev] ] 在第一次看见是可能觉得不正确。Since the branch specification maps fromfiles to tofiles, why wouldyou specify both fromfile and tofile file patterns? You wouldn't, but thissyntax allows you to specify a fromfile file pattern and a tofile revision, ora fromfile revision and a tofile file pattern.
举例
p4 diff2 -ds file#1 file

比较 file 文件的第二个版本和最新版本,并显示文件中内容被添加,更改或删除的信息
p4 diff2
file@34 file@1998/12/04
Diff the revision of file that was in thedepot after changelist 34 was submitted against the revision in the depot atmidnight on December 4, 1998.
p4 diff2
//depot/rel1/... //depot/rel2/...#4

比较在版本库 //depot/rel1 中的所有最新文件与版本库 //depot/rel2 第四个版本文件
p4 diff2
//depot/rel1/* //depot/rel2/...

不允许。每个文件的通配符模式必须匹配
p4 diff2
-b branch2 //depot/rel2/...#2 @50
Compare the second revision of the filesin //depot/rel2/... to the files branched from it by branch specificationbranch2 at the revision they were at in changelist 50.
相关命令
比较客户工作区中文件与版本库中的版本文件
p4 diff

查看一个文件的全部内容
p4 print
 
===========================================================================
 
创建或者编辑一个客户工作区的定义和它的视图。

语法
p4 [g-opts] client [-f -t template] [clientname]
p4 [g-opts] client -o [-t template] [clientname]
p4 [g-opts] client -d [-f] clientname
p4 [g-opts] client -i [-f]
描述
一个 Perforce 的客户工作区是版本库中一个文件子集在客户机器上镜像的一组文件。“p4 client”命令用来创建或者编辑客户工作区的定义;调用这个命令会显示一个Perforce用来维护客户工作区而要求用户输入信息的表单.
虽然在版本库文件和客户工作区文件间是一对一的映射,但是这些文件不需要储存在一样的相关位置或是必须拥有相同的名字。客户视图,在P4 客户表单的视图中定义: 字段, 定义了文件在客户工作区如何被映射到版本库以及vice-versa.
如果在使用时没有带一个客户名字的参数,那么“P4 client”会在“P4CLIENT”环境变两或者与它相等的变量定义的工作区进行操作。如果客户名参数是一个被锁住的客户,那么这个客户定义是只读的。
当“p4 client”命令完成后,新的或是修改后的客户工作区定义会被储存到Perforce的数据库中;在客户工作区内的文件不会被改变。这个新的客户视图不会生效直到使用“p4 sync”命令。

命令“ p4 workspace ”是“ p4 client”的别名。

表单字段

字段名        类型        描述

Client:        只读        客户工作区名字, 定义在“ P4CLIENT ” 环境变量或类似变量
Owner:        可写        拥有该工作区的 Perforce 用户名字。缺省为该工作区的创建者。
Update:        只读        工作区定义被最后修改的日期
Access:        Read-only 使用任何Perforce命令访问客户工作区定义的任何一部分的日期和时间
Host:        Writable, optional 客户工作区所属机器名字。如果包含了该选项,那么对该客户工作区的操作只能在该主机上运行
当从该主机运行时,主机名必须与使用"P4 info" 命令显示的主机名完全一致。
这个字段是为了阻止意外在错误的机器上错误使用客户工作区。它并不提供安全措施,一旦指定的主机名字可以被带“-H”选项的任何P4 命令或者P4HOST 环境变量覆盖。提供了安全措施的类似机制是使用p4 protect 命令的IP地址限制特性。
Description:Writable, optional 对客户工作区的文字描述。缺省得文本由所有者创建。
Root:        Writable, mandatory 与在视图内的定义的所有文件相关的目录。缺省是当前工作目录。
AltRoots: Writable, optional 提供最多两个可交替使用的客户工作区的roots. Perforce客户端程序使用第一个相应的主根和替代根来匹配客户程序当前的工作目录.
该命令允许用户在不同命名规则的多平台上使用相同的Perforce client 定义说明。
如果你在自己的客户根中使用一个windows的目录,那么你必须定义该目录为你的主客户根同时在altRoots字段中定义其他的客户根。
例如,一个工程师在多平台上创建一个产品,他可能会指定一个主客户根C:\Projects\Build 为Windows 版本,然后建立一个不同的根/staff/userid/projects/build 来给 UNIX 版本
Options: Writable, mandatory 一套总共7个的用来控制特定用户选项的开关。阅读后面的选项列表和使用提示了解详细内容
SubmitOptions: Writable, mandatory


用来管理 p4 submit操作的选项

* submitunchanged 
把所有打开的文件(修改过或没有修改过)提交到版本库中.这是Perforce缺省操作. 

* submitunchanged+reopen 
把所有打开的文件(修改过或没有修改过)提交到版本库中,并且所有文件在缺省得变更表中重新自动打开。 

* revertunchanged 
只提交内容或者类型改变过的文件到版本库中。恢复没有作修改的文件 

* revertunchanged+reopen   只提交修改过内容或者类型的文件到版本库中,并且在缺省变更表中重新打开它们。没有作修改过的文件被恢复并且不会在缺省变更表中被打开。 

* leaveunchanged 
只提交修改过内容或者类型的文件到版本库中。任何没有修改过的文件被移动到缺省的变更表中。 

* leaveunchanged+reopen 只提交内容或者类型改变过的文件到版本库中。任何没有更改过的文件被移动到缺省的变更表中,并且在缺省变更表中打开修改过的文件。这个选项除了没有修改过的文件被提交到版本库外与submitunchanged+reopen 类似。

LineEnd:Writable, mandatory 一套总共4个的用来控制 carriage-return/linefeed (CR/LF) conversion的开关。阅读后面的选项列表和使用提示了解详细内容

View: Writable, multi-line 定义版本库中的文件和客户工作区中文件的映射。阅读 Views 了解更多内容

选项

-t clientname
拷贝客户工作区 clientname   的视图和客户选项到该工作区的视图和选项字段中去(i.e, 使用 clientname's 视图作为一个模版)

-f
Allows the last modification date, which is normally read-only, to be set. Superusers may use this flag to delete or modify locked workspaces owned by other users, and non-superusers may use this flag to delete or modify locked workspaces that they do own.

-d clientname
删除定义过的客户工作区,如果客户端属于调用该命令的用户或没有被锁住。 ( -f 选项允许 Perforce 的超级用户删除不许与他们的被锁住的客户工作区,或者允许不是超级用户的该客户工作区所有者进行对被锁住的客户工作区进行删除/修改。

-i
从标准的输入设备读取客户的描述

-o
从标准输出设备输出客户定义

g-opts
阅读 全局选项 部分


使用提示
文件名参数可以使用版本标记吗?    N/A
文件名参数可以使用版本范围吗?    N/A
最小访问权限                    list

* Use quotation marks to enclose depot-side or client side mappings of file or directory names that contain spaces.
* 在客户工作区名字中的空格符被转化为下划线。例如,输入命令p4 client "my client" 创建一个名叫"my_client"的客户工作区。
* 选项: 该字段包含六个值, 由空格符分隔开。每个选项有两种值;下面的表提供了这些选项的值和它们的解释:

选项              选择                                                              缺省值
[no]allwrite    如果设置,那么在客户机上的没有打开得文件被设置为可写          noallwrite

[no]clobber    设置后,那么p4 sync 命令会用新的同步文件覆盖("clobbers") 在客户端有相同名字可写但是没有打开得文件。 noclobber

[no]compress    设置后,在客户端和服务器间的数据流被压缩。(客户端和服务器都必须是99.1 更高版本,否则该设置被忽略)    nocompress

[no]crlf
提示: 2000.2 或更早版本,在Windows中,如果设置了crlf, CR/LF 的间转换在版本库和客户工作区建复制文件时会自动进行 crlf

[un]locked 允许或拒绝其他用户对客户定义的编辑修改。(为了真正锁住一个客户定义,你还要通过p4 passwd设置该客户所有者的密码
如果锁住了,那么只有所有者可以使用,编辑或删除这个客户定义。Perforce的管理员可以使用-f(force)选项取消锁定状态。
unlocked

[no]modtime
没有 +m (modtime) 文件类型修改符的文件:
      o 对于99.2 和更早版本的Perforce客户, 如果设置了modtime,那么新的同步文件的修改日期为该文件提交到版本库时服务器上的日期和时间
      o 对于2000.1和更高版本的Perforce客户,如果设置了modtime ,那么心得同步文件的修改日期(本地文件系统)为该文件被最后修改的时间标记
      o 如果设置了nomodtime ,那么修改日期为同步时的日期和时间,而不管Perforce客户端的版本

         有 +m (modtime) 文件类型修改符的文件
      o 对于99.2 和更早版本的 Perforce客户,+m 修改符被忽略,modtime 和nomodtime 操作如上面所述.
      o 对于 2000.1和更高版本的Perforce客户,新同步文件的修改日期(本地文件系统)是该文件提交到版本库时的时间标记,而忽略客户上对modtime 和 nomodtime 的设置. 
      
nomodtime
   (i.e. date and time of sync) for most files.
   Ignored for files with the +m file type modifier.

[no]rmdir
设置后, p4 sync 会删除在客户上的文件都被移走的空目录.
normdir
* 缺省情况下,任何用户都可以通过p4 client -c clientname命令编辑任意一个工作区的定义。可以通过设置锁住选项和p4 passwd 为拥有者创建一个密码来阻止这种情况发生。
* compress 选项可以通过减少在客户/服务器间低速连接上的数据总量来提高传输速度。在高速连结传输过程中,压缩处理的过程可能比传输还要费时间。通常情况下 compress 选项在T1连接速度以下时可以设置,其他情况都不要设置。
* LineEnd: 字段控制在客户工作区中的文本文件使用的line-ending 字符。

    
Note
he LineEnd: Perforce 2001.1的新选项. It renders the previous convention of specifying crlf or nocrlf in the Options: field obsolete. The behavior of the mutually-contradictory combination of LineEnd: win and Options: crlf is undefined.
The LineEnd: 选项接受下面五个中的一个值
Option          Meaning
local          客户使用本地模式(缺省)
unix          UNIX-style (and Mac OS X) 行结束 LF
mac             Macintosh pre-OS X: CR only
win             Windows-style: CR, LF.
share          共享模式: Line endings are LF with any CR/LF pairs translated to LF-only style before storage or syncing with the depot.

当你同步你的客户工作区时,行结束设置为LF. If you edit the file on a Windows machine, and your editor inserts CRs before each LF, the extra CRs do not appear in the archive file.

The most common use of the share option is for users of Windows workstations who mount their UNIX home directories as network drives; if you sync files from UNIX, but edit the files on a Windows machine, the share option eliminates problems caused by Windows-based editors that insert carriage returns in text files.
更多关于Perforce使用line-ending设置的详细信息可以从下面联接了解:
      http://www.perforce.com/perforce/technotes/note063.html

* 在缺省情况下,如果在客户工作区的一个目录室空的话(例如,因为在最后一次同步后,版本库中映射到该目录的文件被删除了), 一个p4 sync 操作仍然会完整保留该目录。如果你使用了rmdir 选项,那么p4 sync 命令会删除所有在客户工作区中的空目录。

如果 rmdir 选项激活了,那么 p4 sync 操作有时可能会移走你当前的工作目录。如果这种事情发生了,那么只要换到一个已存在的目录继续工作就可以了。

* 有modtime (+m) 类型的文件主要是用于想保留文件最初时间标记的开发员。在文件类型中使用+m 覆盖客户的modtime 或者nomodtime 的设置。关于 +m 修改符得跟多讨论可以阅读文件类型 部分
* 如果你使用多重或可变换的(AltRoots:字段)客户根,你可以通过p4 info 所提供信息里的Client root 部分了解那个客户根在生效。
* 为了在Windows上定义一个多驱动器的Perforce 客户,可以使用一个空的根(Root: of null), 并且在客户工作区试图内定义驱动器的字符。例如,下面客户定义了一个C: 驱动器上一个区域为空客户根并映射到 //depot/main/... ,而剩下的其他版本映射到D: 驱动器

   客户: eds_win
   所有者:   edk
   描述:
             Ed's Windows Workspace
   根: null
   选项:        nomodtime noclobber
   提交选项:   submitunchanged
   视图:
             //depot/main/...     "//eds_win/c:/Current Release/..."
             //depot/rel1.0/... //eds_win/d:/old/rel1.0/...
             //depot/rel2.0/... //eds_win/d:/old/rel2.0/...

在定义多驱动器工作区的时候使用驱动器符得小写字母

举例
p4 client
编辑或创建一个名字由P4CLIENT 变量或等同变量命名的客户工作区。

p4 client -t sue joe
创建或编辑客户工作区joe, 把sue作为缺省工作区,在里面打开有子段值和工作区选项的表单
p4 client -d release1
删除客户工作区release1

相关命令
列表显示系统已知的客户工作区             p4 clients
把从版本库中读文件到客户工作区             p4 sync
在客户工作区内打开要添加到版本库中的新文件 p4 add
在客户工作区中打开文件进行编辑             p4 edit
在客户工作区中打开文件进行删除             p4 delete
把在客户工作区内修改过的文件提交到版本库 p4 submit
==============================================================

Perforce(P4)服务器安装教程

面简单介绍一下Perforce(摘录自我在TLF发表的一篇帖子):

perforce是版本控制系统类软件的其中之一。可能搞CG得朋友对这类软件不是太熟悉,我就简单介绍一下吧。
一般搞电脑编程的朋友都知道这类 软件,开源社区里最出名的就是CVS和SVN。说白了这类软件的功能就是在一个程序员在一个团队环境下编写程序时,往往是一队人共同开发一个项目,而一个 项目实际化来看就是电脑上的一堆文件。每个人在任何时候都有可能修改这个项目里的任何文文件,如果没有一个很好的版本管理机制的话,就会出现文件被改动而 不知道是谁改动了的问题。除此以外,还会出现多人在同一时间修改统一文件的争抢现象。其他功能还有很多,大家不妨google一下。

CG领域,艺术家不像程序员修改的大都是txt文件(源代码),而是二进制文件,图像,视频,音频等等。可是也同样需要版本控制,不然上面的问题也同样会出现。

这 里可能有朋友会问如果个人制作CG项目,上面的事情可能就和自己无关了。其实很多时候在个人开发制作CG项目时,有时我觉得版本管理也是很需要和方便的。 大家都有制作photoshop或是在maya,max里制作东西是save as的习惯吧?起码我有。常常生成很多类似这样的文件,比如在maya里建模一个头像:
头像1_01.mb, 头像1_02.mb, …, 头像1_65.mb
之 所以保留那么多版本往往是因为自己在那个特定阶段完成了某样东西,而又不确定下面如何去进行,很可能在未来的什么时候回到之前的一个版本中。如果不 save as的话就失去了,因为毕竟undo的次数是有限的,而且每次保存之后以前的undo就没了。我想这个经历大家应该都有吧?
perforce 之类的软件就可以很好的完成这一操作。在perforce里面,同样文件不会被save as生成这么多,而在perforce客户端你看到的只是一个文件,而这个文件是由严格的版本号来控制的(revision),这样你可以指定 perforce把你的文件恢复到其中任意一个版本号中。你在每次更新的时候还要提供一定的描述,这样你就可以方便的“回溯”到你指定的那个版本号。不然 正常情况下如果你已经save as到了几十的时候,可能自己都忘了“头像1_15.mb”里到底自己做了什么了。

看完上面的介绍,不知道有没有对CG爱好者的你提起兴趣?如果有的话,就接着跟我进入下面的安装和使用教程吧!

首先Perforce的官方网页在www.perforce.com。网页上提供服务器和客户端的下载(都是免费下载的):

http://www.perforce.com/perforce/downloads/index.html

这里我着重介绍windows版。首先介绍服务器的安装:

下载installer后,安装和其他软件没有分别,一路next下去就搞定了。默认安装后会在C:\Program File\Perforce目录下。进入到C:\Program File\Perforce\Server目录下,你会看到两个exe文件:

p4d.exep4s.exe

两个文件没有任何区别(MD5都一样),都是用来启动perforce服务器的(perforce服务器没有GUI界面)。唯一不同的是p4d.exe作为一个普通的exe文件,可由普通用户激活并运行,p4s.exe是windows的service,可以作为serivce安装在windows下。这里我建议大家使用p4s,因为作为service可以,在windows启动后就被执行了,而p4d必须要用户登录后激活才行,这点不太方便因为windows服务器重启后默认是不自动登录的。

下面具体说说符合配置perforce服务器:

服务器是由一个叫p4.exe的程序来控制和配置的。默认路径在:C:\Program File\Perforce\p4.exe

在cmd下运行p4 help commands就可以看到所有的命令了。首先我们需要设置的是p4的环境变量。输入p4 set,可以得到当前设置好的变量。这里我们只需要设置两个变量

1. P4PORT - 服务器host名称(ip也可以)和端口(默认1666)。举例P4PORT=192.168.1.1:1666

2. P4ROOT - 这个是最终要的变量,定义你的文件(就是用户上传的文件)保存在服务器的什么路径里。如果你使用p4d.exe启动的,使用下面的命令:

p4 set P4ROOT=C:\perforce_root

如说使用p4s.exe的话:

p4 set -S perforce P4ROOT=C:\perforce_root (-s perforce就是用来指定你service名字的参数,默认在你service管理器里perforce服务的名字就叫perforce,如果你的名字不一样的话要在这里指定相应的名字)。

记得在设置完p4 set命令后重启perforce服务器。到开始->运行->输入“service.msc”就可以看到所有系统运行的service,找到perforce,关掉再重启就好了。

如果一切顺利你的perforce服务器就搞定了!这里要再说明一下perforce授权的问题。由于它是商业软件,在只有一个用户情况下才是免费的(个人使用足够了),不过网上的破解也很多,到电驴上能搜到很多,这里牵扯版权就不多做介绍了。

在熟悉掌握服务器安装后,我强烈建议大家熟悉p4.exe里的各种指令。官方的文档相当全面,另外p4的help也很方便使用。这对你以后配置和管理服务器都有莫大帮助。另外在客户短,p4命令也是作为命令行下使用的,功能异常强大!

 
=============================================================
 
Windows版本:
 
=============================================================

i. inux P4 installation

1. Download installation file from below

32bit : ftp://ftp.perforce.com/perforce/r10.1/bin.linux26x86/p4

i. Installation is required if not installed (http://www.activestate.com/activeperl/downloads)

ii. P4 Perl & P4 API Download via P4 FTP site

1. 32bit server:

A. ftp://ftp.perforce.com/perforce/r10.1/bin.linux26x86/p4api.tgz

ftp://ftp.perforce.com/perforce/r10.1/bin.tools/p4perl.tgz

Download Linux P4V from Perforce homepage (Make sure your OS type) 
http://www.perforce.com/perforce/downloads/index.html

i. You can download if from one of below systems

1. On Perforce SHARE depot: P4ClientApps.tar.gz download

On MOSS site: http://vdcss.sec.samsung.net

A. Linux CBSync script download

Download sync.pl file from VD MOSS site (http://vdcss.samsung.net)

阅读更多
想对作者说点什么?
相关热词

博主推荐

换一批

没有更多推荐了,返回首页