初始化工作心理建设:
英文界面文字路径/地址难找但固定的界面位置搞这么多事情主要为了解决多人合作的问题1. 申请账号 安装客户端选择编码,勾选 “Use this encoding”:UTF-8
2. 拉取项目浏览 Depot服务器上的东西,注意地址 “//WS-TG/studyp4/mainline”其中的 //WS-TG 一般代表大的项目名字
浏览 Workspace本地的东西
建立 Workspace不要直接操作 Depot,应该永远使用 Workspace 来工作
三个参数:
Workspace name:你的工作区的名字,代表了你的本地工作目录Workspace root:你的工作区的本地目录Stream:服务器上的目录,一个 Depot 里面会有很多 Stream输入 Depot 名字(WS-TG)查找 Stream:
3. 总结第一层目录叫 Depot,图标是圆柱体第二、三层目录叫 Stream,图标是带波浪的文件夹更深入的目录就是文件目录Workspace 对应于 Stream 或以下目录基本操作Perforce4基础说明
新建、删除目录文件新建空目录无法新建,至少要有一个文件
删除本地文件的恢复并不会影响版本库
可以恢复本地文件
这步操作在菜单里面,需要勾选一个“Force Operation”的框
删除文件库文件选中要删除的文件,点“Delete”按钮。可以多次选中多次点“Delete”
点了之后本地文件立刻消失了
点击“Submit”完成真正的删除
错误点击了“Delete”按钮,想撤销未“Submit”的删除操作
新建文件撤销流程拷贝了一大堆不需要的文件到工作区,还在顶层目录点了 Add 按钮,如何撤销?
然后全部删除本地文件,从服务器上通过“Get Revision”恢复
新建文件冲突如果没有先 Refresh/Get lastest,但是其他人新建了同名的文件会怎样?
你添加的文件点了“Add”按钮会没有任何显示
看起来这个新加的文件没有被纳入管理
如果这个新文件和别人已经新建的是一样的,只要点一下“Get Latest”按钮就发现已经存在于库中了
如果这个新文件和别人新建的内容不同,只是名字一样,点 “Get Lastest”按钮会弹出提示
如果选 Continue 就会直接覆盖掉本地的文件,自己的文件内容会丢失!
删除文件冲突文件已经被另外一个用户删除,可以通过“Refresh”按钮发现(P4V 软件也会自动刷新)
点击“Get Latest”文件就立刻从本地目录消失了
修改文件直接修改直接修改文件会发现无法保存
Check out然后就可以保存了
Submit其他人可以在 P4V 中看到你修改过文件的状态,需要“Get Latest”来更新你的修改
Resolve如果没有先 Refresh/Get lastest
Checkout 的时候就会提示:
如果还是不先 GetLatest
Submit 是无法直接进行的
只能先 Get Lastest,会有红色问号图标
然后想办法解决这个冲突
最下面有三个按钮,含义是:
Accept Source:使用已经在库里面的版本(别人提交的内容,会丢失本地修改的内容)Accept Target:使用我要提交的版本(我修改的内容会覆盖别人的内容)Accept Merged:双方的内容合并起来Run Merge Tool:运行一个合并的工具图片文件默认没有“合并的工具”,也没法“Accept Merged”
如果点了 Accept Target,就可以继续提交了
其他人就可以通过 Get Latest 来更新了
Checkout 冲突同一个文件别人已经 Check out
自己在 Refresh 之后会有一个绿色的图标
可以看到是谁 Checkout 了这个文件
继续点 Checkout,修改文件
还是可以提交的,但是别人看就会这样:
也可以保存文件
直接提交,Submit 按钮不可用
点击 Get Latest 之后,出现冲突的图标
需要走 Resolve 冲突解决流程,如果选择 Accept Source,会变成库中的文件内容
看起来 Checkout 只是一个提示作用,并不能阻挡同步修改
Lock/Unlock先 checkout 一个文件,如果不 checkout 将没有 Lock 选项
再选择 Lock
其他人看见,无法 Submit 任何修改
如果加锁方解锁,或者 Submit,其他人就可以提交了
如果有人加锁了/ checkout 了,但一直不提交/不解锁怎么办?
项目管理员通过命令行可以强行解锁
代码语言:javascript代码运行次数:0运行复制p4 unlock -f
如果 checkout 了一直不提交也很烦,管理员也可以代他 revert (撤销)
代码语言:javascript代码运行次数:0运行复制p4 -c theirclient -H theirhost -u theiruser revert foo.txt
Stream 操作为了同时并行进行多个版本
显示 Stream Graph(分支关系)打开 Stream Graph 视图
选择 Depot勾选 Stream点击 ApplySwitch Stream(切换分支)需要先选定一个 Workspace
新建 Workspace 的时候曾选择过 Stream
“小电视”图标表示你当前的 Workspace 所在的 Stream(分支)
拖动 “小电视” 就可以切换分支
会询问你是否要更新文件
Merge/Copy Stream(合并分支)Stream 合并的规则
Merge(Down)向下合并Copy(Up)向上合并先下后上绿色箭头表示现在可以向这个方向合并。
切换工作区到 studyp4_mainline 这个 Stream右键选择“Copy Files to ...”文件列表中可以发现新的文件了:
选择 Submit 提交这次 Copy Stream 的操作
Stream 图灰色箭头表示没有文件差异了
如果别人先修改过“上游 Stream”,也就是 mianline 的话,要怎么合并?
点击 Depot 页签里面的相关目录,点 Get Lastest 按钮,会发现 Stream Graph 窗口有红绿两个箭头。
绿色表示可以操作红色表示不可操作“先下后上”
选择右键菜单中的 “Merge/Integrate Files to 'xxxx' ...”
会发现当前工作区有一次修改需要确认:
这个 111.png 是被其他人修改过的,需要你通过 Resolve 确认是否接受别人的修改。这里可能出现都修改了同一个文件的冲突。
点击 Accept Source 就接受这次合并
然后在 development Stream 上 Submit 这次 Merge/Intergrate 的修改
这时的分支图 Steam Graph 情况:
红色箭头消失了,可以继续工作,或者通过 Copy 命令向 mianline Stream 去合并工作内容(如上文)
更多功能撤销功能撤销并未 Submit 的文件修改:使用 Revert 按钮撤销已经 Submit 的文件修改/删除/增加:进入 Submited 窗口(View),选择某一次修改(Change),然后选择 Get this reversion 右键菜单,然后重新 Submit 修改到 Depot 中不想挨个文件 Checkout就算文件没做任何修改,只要 Checkout 了,就能 Submit,文件的版本号也会增加
对整个目录选择 Checkout防止提交一堆“空”修改,提交前选择右键菜单“Revert Unchanged Files”其他P4 支持两种分支管理模式,一种是“基础类型”,一种是 Stream,前者约束较少(类似 SVN);后者有比较严格的约束(类似 git flow)。改名/移动操作请使用右键菜单的 Rename/Move 功能Workspace 工作区可以组合多个目录,不一定要到 Stream 顶级目录可以用 Shelve 暂存文件到服务器,但不 SubmitStream 有四种类型:Release > Mainline > Development > Task, VirtualP4V 自带了一个图片的 diff 工具,但不能修改可以打标签 BookmarkWindows 文件浏览器插件安装:安装 P4 文件管理器插件需要修改多个文件但是“只读”属性是一个障碍,解决方法:设置 all warite,然后 reconile