[SCM]源码管理 - perforce的superuser的任务

perforce superuser任务

1)server security levels
perforce支持的security level为0,1,2,3。可以通过命令p4 configure set security=seclevel来设置。

level0:不需要密码。
level1:所有的用户都必须有密码,且对于旧的客户端仍然可以使用弱密码。
level2:所有的用户都必须使用强密码。
level3:必须使用基于ticket的认证方式。

2)user authentication(用户认证)
perforce支持两种用户认证方式:基于password和基于ticket。

password的认证方式是无状态的。在password被正确的设置后,用户可以无限制的访问.基于password的认证方式可以在server security level 0,1,2下工作。
ticket的认证方式是基于时间限制的tickets的。客户端存储tickets在p4tickets环境变量指定的文件中。如果没有p4tickets环境变量,默认地windows上存储在%USERPROFILE%\p4tickets.txt,Unix上存储在$HOME/.p4tickets。ticket是有时间期限的,默认地ticket是在12小时内可用。可以通过设置group的timeout参数来间接的设置user的tickets的时间期限。且user的ticket的时间期限等于user所在的groups中的时间期限最大的group的时间期限设置。基于ticket的认证方式需要工作在server security level3下。

使用p4 login -a来创建机器无关的ticket,从多台机器上logout需要使用p4 logout -a 。使用p4 login -s来查看当前的ticket的状态。显示所有的tickets使用命令p4 tickets。

3)控制client的最小版本
p4 configure set minClient=2010.2
p4 configure set minClientMessage="Please upgrade to 2010.2 or higher"

4)阻止p4用户的自动创建
默认地当用户激活任何的客户端命令来跟新depot或p4 database的时候,user将会被自动地创建。但是可以设置dm.user.noautocreate来禁止用户的自动创建。
例如如下的命令来禁止user被自动地创建。
p4 configure set dm.user.noautocreate=2

dm.user.noautocreate还可以被设置为0和1,0表示user被自动地创建,1表示user可以显式地调用p4 user来创建自己的账号。

5)license文件的修改,license是一个txt文件被存储在p4server root目录下。一般地当license文件修改后需要restart p4server来使新的license文件起作用。

6)p4 obliterate彻底的删除p4server上的文件
某些时候错误地将包含私密信息的文件提交到p4server,或者某些文件被错误地提交到了不正确的路径,这些情况要求不仅要将文件从depot上删除,而且还要删除此文件相关的所有的历史记录。p4 obliterate就是用来将文件和历史记录彻底删除的命令。
例如使用p4 obliterate -y filename来彻底删除filename文件。
p4 obliterate还可以只彻底删除某文件的某些版本,例如p4 obliterate -y file#5用来彻底删除file的版本5的记录。

7)修改提交的changelist的信息
只有superuser才可以使用p4 change -f来修改和删除某些changelist。例如
p4 change -f 123
p4 change -d -f 124

 

8)p4 monitor来监视p4server的状态
首先需要打开monitor开关,使用命令p4 counter -f monitor 1,且在设置后需要重启p4server。

使用p4 monitor show -a -e -l 来显示所有正在运行的p4server的进程。-a用来显示命令的参数, -e用来显示执行当前命令的用户的设置,例如user,workspace,ip-adress,-l用来显示长字符串,禁止对字符串的截断。

p4 monitor terminate pid 用来结束某个p4server的进程。

也可以在p4admin.exe的GUI工具中执行p4 monitor的操作。

 

9)使用多个depots
可以使用命令p4 depot depotname来创建depot。depot的类型有local,remote和spec。

local就是一般的depot,每个p4server默认地包含了一个名字为depot的depot,admin可以为不同的产品增加新的local depot。

remote的depot,remote的depot其实只是对远程的p4server的代码的一个引用,代码是存储在远程的p4server的。当用户访问时remote类型的depot时,后台p4server将与remote的p4server通信,对于用户看起来跟访问本地的depot没有啥区别。remote的depot一般用来在不同的部门或组织共享源代码。

spec类型的depot,是每一p4server只包含一个的特殊的depot,用来记录p4server本身的修改历史,例如spec下包含了branch,change,user,group等的历史记录。

10)remote depot的使用
通常地如果位于不同的p4server的产品之间需要代码的引用,则需要使用remote depot来在一个p4server创建对另一个p4server的一个引用。例如有一个基础的component SDK位于某个p4server,位于其他的p4server的产品都需要引用此component SDK,此时有两种方法:1)产品的开发人员自己访问component SDK的p4server去获取component SDK;2)在产品所在的p4server建立对component SDK的remote depot,相当于在产品所在的p4server增加了对componentSDK的一个访问接口,且后台的p4server与远程的component SDK所在的p4server的交互被自动地完成了。 很显然方法2)对开发人员来说更简单。

例如如下的remote depot, 表示//from-pine 是对远程的pine:1818上的//depot/outbound/...的引用。

Depot: from-pine
Type: remote
Address: pine:1818
Map: //depot/outbound/...
 

在p4server的后台使用虚拟的账号remote来实现remote depot与远程p4server的交互。 且此remote账号对远程的p4server只有读权限。如果一个p4server没有remote depot与之关联,则建议去除remote的账号的权限:

list user remote * -//...
 

可以将所有产品公用的第三方的component放到一个p4server,然后其他的产品所在的p4server都建立一个remote depot来引用第三方的component, 从而实现对所有的第三方component的统一存储管理,节约空间,易于维护和跟新。

 

完!

posted @ 2011-08-16 15:33  iTech  阅读(1889)  评论(0编辑  收藏  举报