Linux p4 command line

环境变量:
export P4PASSWD=abcdefg
export P4CLIENT=dyoldfish.com    //这个可以不设
export P4USER=dyoldfish
export P4PORT=192.168.1.198:1666

命令:
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 @dyoldfish_label #同步标签dyoldfish_label中的所有文件
8、p4 files @dyoldfish_label #查看标签dyoldfish_label所包含的文件列表
9、p4 revert     #回复所有打开的文件
10、p4 revert -n ... #回复所有打开却没提交的文件
11、p4 branch dyoldfish_brach   #新建分支
12、p4 integrate -b   dyoldfish_brach   #合并分支dyoldfish_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 dyoldfish_label   #新建标签 dyoldfish_label,编辑标签
20、p4 tag -l dyoldfish_label ... #把当前目录下面的所有文件添加到标签 dyoldfish_label
21、p4 changes ...   #当前目录的changelist
22、 p4 sync @10931     #sync file @changelist
23、 p4 sync ...@10929   #only sync localfile@changelist
24、p4 help revisions    #查看关于文件范围的帮助

export好变量之后,然后用1进行配置,就可以用p4 sync进行代码下载了 如p4 sync //depot/proj1/...@21

./p4 sync //XMS/SS7_Mainline/HMCallAnalyzer/java/com/empirix/hm/realtime/commandbar/...(目录)

./p4 sync //XMS/SS7_Mainline/HMCallAnalyzer/java/com/empirix/hm/realtime/commandbar(文件)

如果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 就可以

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值