常见使用 p4 的方式就是使用Client 端,但是有的时候遇到这样的状况:
1. Client 端的操作方式的局限, 有些操作无法实现 (一般这样的状况不多)
2. 使用P4 和其他一些工具进行整合, 比如p4 整合自动部署
3. 使用代码的方式来使用p4, 比如使用Perl语言来与P4 进行交互
。。。。
以上的状况, 直接使用P4 Client 的话, 就没办法达成我们的要求了。这个时候自然就要使用到P4的命令行。
直接输入 p4 看看
回报 Port这样的变量没有。
想一下在使用P4 Client 的时候, 基本上会指定Server, Port 这样的信息, 在命令行的方式下,同样要指定,
设置环境变量就是方式之一:
可以直接在系统的环境变量中设置, 也可以直接在命名行下执行, 或是把以下命令写成一个批处理执行。
P4USER和P4PASSWD是分配的用户名和密码。
设置完成之后再运行 p4 看看
1. 到这里,有些不需要client workspace 的p4 命令就可以使用了,比如查看某个服务端文件改动记录的命令: filelog
使用字符集不匹配的问题:
可以通过设置 P4CHARSET 和 P4COMMANDCHARSET 来解决这个问题
我这里的设置是:
(像sync 命令, 把服务端的文件同步到本地)
和上面的设置方式类似:
你可能会想, 使用环境变量的方式, 多少还是有一点麻烦:
比如如果是代码方式,在不同的机器上运行需要在不同机器去设置环境变量;
workspace 如果发生更改的话; 修改也不方便。
是否可以直接在命令中指定这些需要的信息呢? 答案当然是可以的。
接下来要执行什么命令直接加在后面就可以了。
还是以filelog 为例的话, 完整的命令就是:
最常使用的命令就是 sync 命令了, 这个命名是把服务端的数据更新到本地workspace 中
可以更新一个文件, 也可以更新一类文件, 还可以更新目录下所有的文件
1) 更新单个文件:
3)更新目录下某种后缀名的文件
4)获取目录下版本号为 2 的某种后缀名的文件
这里获取的是第二个版本, 而以上没有加版本的状况获取的都是最新版本。
5) -f 参数, 强制获取
强制获取就是如果本地有改动的话, 强制使用服务端的文件替换本地文件。
这个和在Client 使用以下方式的效果是一样的:
获取指定版本号的工程:
获取最新版本:
p4 sync -f //engine/U3DTechDemo/UnityEditorToolProject/branches/H3DTech_4.6/...#head p4 sync //engine/U3DTechDemo/UnityEditorToolProject/branches/H3DTech_4.6/...#head 获取指定版本号的版本: p4 sync -f //engine/U3DTechDemo/UnityEditorToolProject/branches/H3DTech_4.6/...@140086 p4 sync //engine/U3DTechDemo/UnityEditorToolProject/branches/H3DTech_4.6/...@140086
#注意:只有本地不存在对应的工程目录时需要强得,存在工程时不需要强得
filelog 可以用来查看单个文件的Check in 记录。类似:
... #rev changechnum
action
on date by user@client (type) 'description'
changes 可以查看服务端某个目录下所有的更改记录