使用Perforce 命令 与常用命令行

前言

常见使用 p4 的方式就是使用Client 端,但是有的时候遇到这样的状况:

1. Client 端的操作方式的局限, 有些操作无法实现 (一般这样的状况不多)

2. 使用P4 和其他一些工具进行整合, 比如p4 整合自动部署

3. 使用代码的方式来使用p4, 比如使用Perl语言来与P4 进行交互

。。。。

以上的状况, 直接使用P4 Client 的话, 就没办法达成我们的要求了。这个时候自然就要使用到P4的命令行。


关于环境变量设置

Perforce的环境变量配置

下载安装完P4 之后, 就可以在Command 下使用P4了。

直接输入  p4 看看

回报 Port这样的变量没有。

想一下在使用P4 Client 的时候, 基本上会指定Server, Port 这样的信息, 在命令行的方式下,同样要指定, 

设置环境变量就是方式之一:

可以直接在系统的环境变量中设置, 也可以直接在命名行下执行, 或是把以下命令写成一个批处理执行。

[html]  view plain  copy
 
  1. set P4PORT=IP:port  
  2. set P4USER=  
  3. set P4PASSWD =   

IP:port 是对应的p4 server 的服务器Ip和端口。

P4USER和P4PASSWD是分配的用户名和密码。

设置完成之后再运行 p4 看看


1. 到这里,有些不需要client  workspace 的p4 命令就可以使用了,比如查看某个服务端文件改动记录的命令: filelog

[html]  view plain  copy
 
  1. p4 filelog //serverpath/filename  

这个时候, 有可能会出现:

使用字符集不匹配的问题:

可以通过设置  P4CHARSET 和  P4COMMANDCHARSET 来解决这个问题

我这里的设置是:

[html]  view plain  copy
 
  1. set P4CHARSET=utf16  
  2. set P4COMMANDCHARSET=utf8  

2. 需要client  workspace 的p4 命令 就需要设置 P4CLIENT 的环境变量了, 

(像sync 命令, 把服务端的文件同步到本地)

和上面的设置方式类似:

[html]  view plain  copy
 
  1. P4CLIENT=Workspace_name  


不需要环境变量的方式

你可能会想, 使用环境变量的方式, 多少还是有一点麻烦:

比如如果是代码方式,在不同的机器上运行需要在不同机器去设置环境变量;

workspace 如果发生更改的话; 修改也不方便。

是否可以直接在命令中指定这些需要的信息呢? 答案当然是可以的。

[html]  view plain  copy
 
  1. p4 -C utf8 -p IP:port -u user -p password -c workspace_name  

这条命名就代替了上面环境变量设置的方式。

接下来要执行什么命令直接加在后面就可以了。

还是以filelog 为例的话, 完整的命令就是:

[html]  view plain  copy
 
  1. p4 -C utf8 -p IP:port -u user -p password -c workspace_name filelog //serverpath/filename  

是不是方便很多了^^


常用命令 - sync


最常使用的命令就是 sync 命令了, 这个命名是把服务端的数据更新到本地workspace 中

可以更新一个文件, 也可以更新一类文件, 还可以更新目录下所有的文件

1) 更新单个文件:

[html]  view plain  copy
 
  1. p4 -C utf8 -p IP:port -u user -p password -c workspace_name sync //serverpath/filename.txt  

2) 更新目录下所有文件

[html]  view plain  copy
 
  1. p4 -C utf8 -p IP:port -u user -p password -c workspace_name sync //serverpath/...  

3)更新目录下某种后缀名的文件

[html]  view plain  copy
 
  1. p4 -C utf8 -p IP:port -u user -p password -c workspace_name sync //serverpath/*.txt  

4)获取目录下版本号为 2 的某种后缀名的文件

[html]  view plain  copy
 
  1. p4 -C utf8 -p IP:port -u user -p password -c workspace_name sync //serverpath/*.txt#2  

这种用法在代码开发时会比较有用。 比如目录下文件太多, 只想取版本号大于等于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

filelog 可以用来查看单个文件的Check in 记录。类似:

[html]  view plain  copy
 
  1. p4 -C utf8 -p IP:port -u user -p password  filelog //serverpath/filename.txt  

执行后打印的信息的格式是:

... #rev change chnum action on date by user@client (type) 'description'


常用命令 - changes

changes 可以查看服务端某个目录下所有的更改记录

[html]  view plain  copy
 
  1. p4 -C utf8 -p IP:port -u user -p password changes //serverpath/...  

你可能感兴趣的:(Jenkins)