perforce使⽤教程(zz)
P4递交建议流程:
1. p4 sync
2. 覆盖或者改动local⽂件
3. p4 delete or 直接delete 废弃的⽂件
4. p4 add: 增加新⽂件到depot
5. p4 diff -:查看编辑过的⽂件
6. p4 diff - | 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 revert -a (file 可选): revert所有打开的已经存在的⽂件
p4 revert //...Revert every file you have open, in every one of your pending changelists, to its pre-opened state.
p4 revert -c default //...Revert every file open in the default changelist to its pre-opened state.
狗的六合
p4 revert -n *.txt Preview a reversion of all open .txt files in the current directory, but don't actually perform the revert.
p4 revert -c 31 *.txt Revert all .txt files in the current directory that were open in changelist 31.
p4 revert -a Revert all unchanged files. This command is often ud before submitting a changelist.
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项
-t clientname
拷贝客户⼯作区 clientname 的视图和客户选项到该⼯作区的视图和选项字段中去(i.e, 使⽤ clientname's 视图作为⼀个模版)
-d client name 删除这个client
2、p4 sync #从perforce 下载⽂件
p4 sync Copy the latest revision of all files from the depot to the client workspace, as mapped through the client view.
If the file is already open in the client workspace, or if the latest revision of the file exists in the client
workspace, it is not copied.
p4 sync file.c#4Copy the fourth revision of file.c to the client workspace, with the same exceptions as in the example above.
p4 sync
//depot/proj1/...@21Copy all the files under the //depot/proj1 directory from the depot to the client workspace, as mapped through the client view.
奥思维Don't copy the latest revision; u the revision of the file in the depot after changelist 21 was submitted.
p4 sync @labelname If labelname is a label created with , and populated with , bring the workspace into sync with the files and
雪的谚语有哪些
p4 sync @labelname If labelname is a label created with , and populated with , bring the workspace into sync with the files and revision levels specified in labelname.
Files listed in labelname, but not in the workspace view, are not copied into the workspace.
Files not listed in labelname are deleted from the workspace. (That is, @labelname is assumed to apply to all
revisions up to, and including, the revisions specified in labelname. This includes the nonexistent revision of
the unlisted files.)
p4 sync
@labelname,@labelname Bring the workspace into sync with a label as with p4 sync @labelname, but prerve unlabeled files in the workspace.
(The revision range @labelname,@labelname applies only to the revisions specified in the label name itlf, and excludes the nonexistent revision of the unlisted files.)
p4 sync @2001/06/24Bring the workspace into sync with the depot as of midnight, June 24, 2001. (That is, include all changes made during June 23.)
p4 sync
Sync a filename containing a Perforce wildcard by using the ASCII expression of the character's hexadecimal value. In this ca, the file in the client workspace is
For details, e .
p4 sync file.c#none Sync to the nonexistent revision of file.c; the file is deleted from the workspace.
p4 sync ...#none Sync to the nonexistent revision of all files; all files in the workspace (that are under Perforce control) are removed.
p4 sync ...
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
如果想看某个changlist影响的⽂件,使⽤p4 describe changelist_number(changelist的number)
22: p4 reopen 如果已经创建了⼀个changelist,但是现在⼜打开了⼀个⽂件想加⼊到这个还没有checkin的changelist中,使⽤这个命令。 for example:
p4 reopen -c changelist //...
-
c changelist# file Move all open files matching file pattern file to pending changelist changelist#. To move a file to the default changelist, u default as the changelist number
-c changelist# file Move all open files matching file pattern file to pending changelist changelist#. To move a file to the default changelist, u default as the changelist number.
-t file When submitted, store file as type filetype. All subquent revisions will be of that file type until the type is changed again.
See the ction for a list of file types.
See the ction.
-c changelist# file Move all open files matching file pattern file to pending changelist changelist#. To move a file to the default changelist, u default as the changelist number.
-t file When submitted, store file as type filetype. All subquent revisions will be of that file type until the type is changed again.
See the ction for a list of file types.
See the ction.
See the ction.
查看workspace sync到的changelist
perforce的workspace其实是⼀些特定版本的⽂件的结合,相⽐只将workspace对应到某个特定的changelist,此⽅法更灵活。changelist和⽂件间的关系为:每个changelist其实是某些特定版本⽂件的集合,但是并不是所有的版本的⽂件结合都对应到⼀个 changelist。perforce允许⽤户将workspace同步到⽂件的某些特定版本,不⼀定对应⼀个chagnelist。
使⽤如下三步来确定workspace的最新状态
p4 changes 命令可以查看workspace中⽂件集合所对应的最⾼chagnelist:
p4 changes -m1 //...#have
可以使⽤如下命令查看workspace中是否所有的⽂件都被sync到了最⾼changelist:
p4 sync -n @<changelist retuned by p4 changes>
如果以上命令显⽰所有的⽂件都已经是updated,则表⽰workspace当前被sync到了最⾼changelist。
22、 p4 sync @10931 #sync file @changelist
芭蕉绿23、 p4 sync #only sync
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(编辑/f)
才干的近义词Default Gateway 192.168.0.1
2. 安装及配置 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/figfile
fi
d. 测试环境配置是否成功
命令 p4 info ,如果显⽰了连接信息,则 OK ,否则会提⽰连接不上
需要注意p4config ⽂件,有时候⼀个⽤户会在⾃⼰的home⽬录下建⽴多个client,如果在⼀个⽬录下有多个⼦⽬录,每⼀个⼦⽬录都是⼀个新的client,那么每⼀个client都应该提供⼀个p4config⽂件;电脑开机密码怎么解除
如果只是提供⼀个p4config⽂件,那么那个p4config⽂件中指定的p4 client作为当前client,⽽⽆法使⽤另外⼀个client。
//创建相同client配置的另外⼀个client,可以使⽤前⼀个client作为template,这样client⽂件可以⾃动修改
钢铁是怎样练成的p4 client -t template_client new_client
画蛇添足出自
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 的使⽤命令,⽂档如下:
*************************************************************************************************************************
快速上⼿perforce
[连接之后的配置]
之前的所有设置都是保存在环境变量,配置⽂件或者注册表⾥⾯的,这仅仅定义了⼀个客户端的⾏为,很⼤⼀部分事情例如追踪⽤户的修改、打开、提交的⽂件之类都是由服务器记录下来的,所以现在我们需要通过⼀些命令来配置⼀下服务器那头的⽤户信息。
$p4 ur
这个命令的结果是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/ //test-client/
这样就排除了⼀个⽂件。在这个过程中要留意出现冲突,如下:
//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⾥⾯⽂件和服务器上的最新版本同步,使⽤命令: