・龙智ALM方案      ・Perforce      ・Atlassian      ・JetBrains      ・IC-Manage

Perforce技术支持

    术语集

PERFORCE术语

其他SCM系统上的术语

备注

add check in 最初将文件放置到配置库,称为add(追加)。
extract part
annotate annotate 显示文件内的行和导入各行的版本号。功能上和CVS的annotate命令类似,通过附带选项,即可以显示被删除的行,也可以显示导入的版本和删除的版本。
branch codeline, project, stream 作为一个汇总管理可能的、关联的文件集合。在PERFORCE上做成分支的话,将保持反映来源和反映目标的文件(即最原始文件)的关系。
changelist changeset PERFORCE中,可以将关联多个文件的变更小组化成单一的不可分的任务。
client workspace project, view, sandbox, family + release + component + work area 是操作作为代码管理对象的文件本地副本的场所,计算机上的目录构造。这个Workspace可以包含一个以上的项目以及代码行。
depot repository, archive, VOB 代码以及关联的文件的主要保存场所。PERFORCE服务器管理一个以上的配置库,配置库经客户端/服务器的网络连接映射到客户端Workspace。不需要将服务器的文件系统搭在客户端计算机上。
edit check out (for edit) PERFORCE中,可以允许多个用户编辑相同的文件的作业状态,且之后变更不会被覆盖。
head revision tip revision, head 文件的最新版本。
integrate merge, branch 将选择的变更从一个代码行向其他代码行展开。
job work order Bug报告和改善要求等的作业要求。使用PERFORCE,可以将job关联至Changelist,记录job所需的作业。
change request
ECO
label baseline, tag 为用户指定的文件版本命名的清单。
merge merge 可以通过将两个冲突的文件版本内容整合为单一的文件,或者接受冲突文件中的一方,放弃另一方来解决文件冲突。
resolve uncheckout 放弃添加到客户端计算机上的文件的所有变更,将配置库(共享数据库)版本复制到客户端Workspace。
undo checkout
unlock revision or part
submit check in, put 变更客户端Workspace内的文件之后,将变更提交至配置库。
sync check out tip, refresh, extract part 将文件从配置库(共享数据库)复制到客户端Workspace。
get version


    常见问题

有关操作上的问题

问题1.请告知Perfore服务器对应的操作系统和服务器规格。

回答1.    Windows、Linux、Solaris、HP-UX中的任何一个操作系统都可以作为Perfore服务器。并且不一定要购买专用服务器,平时使用的电脑也可以作为Perforce的服务器。

问题2.把Perfore服务器换成其他电脑,需要怎样的步骤?

回答2.请告知用作Perfore服务器用的电脑的操作系统的种类、机器标示符、计算机名。Windows/Linux的情况下,机器标示符为MAC地址,Solaris的情况下为host ID,HP-UX的情况下,则为“uname –i”的结果。

问题3.服务器和客户端需要安装同一版本吗?

回答3.是的。客户端的版本必须和Perfore服务器的主要版本(最初的1位)相同,或者比服务器的主要版本低。请在升级客户端的版本之前,执行Perfore服务器的版本升级。次要版本(主要版本同样)的版本升级,没有这个限制。

问题4.文件的差分显示、合并能在GUI上执行吗?

回答.在Windows、Linux、MacOS上可以用GUI(P4V、P4Merge)执行。

问题5.有IDE(例如Visual C++)插件吗?

回答.Perforce支持以下常用IDE。
・Microsoft Visual Studio
・Microsoft Visual C++
・Microsoft Visual Basic
・Eclipse
・WebShpere Studio

问题6.同一个文件,多个用户能不能同时签出(即变为可修改状态)?

回答.可以,但是后签入(将修改提交到服务器)的用户,必须解决和之前签入用户的文件修改之间的冲突。
因为Perforce系统会通知用户“需要解决与其他用户的操作冲突”,所以用户修改操作可以同时进行,无需等待其他用户的修改是否结束。

问题7.同一个文件的多个用户同时签出功能可以设为排他的吗?

回答.可以。利用Perforce的文件类型功能,同一个文件可以按文件单位禁止同时签出。另外就算是设为可以同时签出,也可以通过文件锁定功能,将特定用户的签入操作设为优先。

问题8.2进制文件能否像文本文件一样有版本管理?

回答.可以。文本文件缺省使用差分管理,2进制文件缺省是压缩后再进行版本管理。

问题9.在Perforce的版本管理中,能使用RCS的关键字扩展($Id$、$Date$等)吗?

回答.可以。在Perforce的文件类型功能里选择"RCS关键字扩展",在版本管理的文件里添加RCS关键字,这样在引用文件时可以按关键字来展开。具体的关键字信息,请参考官方命令行手册

问题10.除了单个文件之间的版本差分,能不能比较文件夹之间的版本差分(如:发行版1.00的文件夹和发行版1.20的文件夹相比,有什么文件发生了变更)?

回答.可以,对不同版本的文件夹进行比较,能显示有哪些文件被修改和其他详细的修改信息。此外还可以利用P4V的目录差分功能,以图表方式显示比较结果。

问题11.可以生成相关管理报表吗(比如发行列表、当前签出文件一览表、用户A的变更一览等)?

回答.可以。在提交修改时,会自动保存"修改人"、"修改时间"、"修改内容"、"修改位置"、"修改原因"等信息。此外,诸如相关工作流、修改、以及实际修改后的文件都保存有相关链接信息,可供互相参考,整理成报表。

问题12.能不能通过WEB方式访问服务器?

回答.可以,通过P4Web客户端,即可用WEB方式连接Perforce服务器。

问题13.Perforce是否提供标签功能?

回答.有。可以为版本化文件及文件组设置标签分类。

而且标签功能不直接对文件做I/O操作,所以即使是进行大数据量的标签操作也只需花费很少的时间。

问题14.为什么Perforce的运行速度很快?

回答.因为服务器/客户端之间的通信直接利用TCP/IP协议,再辅以精心设计的流消息协议,从而实现高效通信。

Perforce的通信不使用其他网络协议或文件系统(如NFS、Microsoft网络等),而是通过特定的TCP/IP端口直接连接。所以无需其他多余处理,即使在诸如WAN广域网上,也可以高效运行。

问题15.服务器端有变更时,能否自动通知其他用户?

回答.可以。利用Perforce的trigger触发器或者Daemon后台、提交时产生的变更可以用E-mail通知其他用户。另外,trigger(或Daemon)可以执行用户自定义的组合命令,能够实现"撤销并恢复源文件的修改和备注,然后通知某用户"等自定义流程。

问题16.能否设置当不满足某些条件时,无法提交修改?

回答.可以,利用Perforce的trigger触发器,在提交前检查相关条件,不满足的话可以自动终止提交。借此实现“只允许指定用户提交”、“没有和Job关联的修改无法提交”等特定提交流程。

问题17.单个job工作流能否和多个变更列表相关联?单个变更列表又能否和多个job工作流关联?

回答.两者均可。Job工作流是指“希望做哪些修改”,变更列表是指"已完成的修改",job工作流和变更列表可以实现多对多的关系。

问题18.job中的属性可以自定义吗?

回答.可以。除了系统默认属性,可以自由追加新的属性字段(缺陷类型、负责人、模块类型、项目编号等)。另外,可以指定这些追加的属性字段的缺省值,是否必选等设定。

问题19.是否支持异地并行开发?

回答.支持。一般来说,异地数据共享有“通过高速网络连接的中心式存储”和“多地复制数据库同步”两种方法。Perforce采用前一种方法。PERFORCE的文件存取不需要特定的网络文件系统(NFS等),数据流量也维持在最低限度。 即便是在WAN这样的广域网络环境里也可保持高性能,无须使用"异地复制数据库"之类的复杂环境。另外使用P4Proxy,还可以进一步提高网络性能。

问题20.可以针对不同的文件单独设定访问权限吗?

回答.可以。对于不同用户和不同文件,可以指定访问权限为“数据只读”,“数据可写”,“仓库(Depot)可访问”,“可执行admin命令”等。还可结合“*” 或“…”等通配符,实现文件级别的权限设置。

问题21.Perforce提供备份功能吗?

回答.Perforce提供CheckPoint(检查点)和Journal(日志)2种备份机制。更多详情,请参考网站相关技术手册或联系我们获得技术支持。

问题22.可以一次性将大量文件上传到服务器吗?

回答.可以。只需要把文件放在客户端的指定工作区内,然后通过一个简单的提交操作即可完成。

问题23.Perforce是否支持其他软件配置管理工具(版本管理工具)的数据迁移?

回答.支持,Perfroce可以导入诸如git,Subversion,CVS,VSS等版本管理工具的数据。

问题24.Perforce采用什么许可方式?

回答.Perforce按用户数量授权许可,用户信息均由Perforce服务器管理。

问题25.有关Perforce的安装方法。

回答.Perfroce服务器的安装或升级操作,请参考Perforce官网技术手册,或联系我们获取技术支持。

问题26.Perforce是否支持服务器的迁移?

回答.支持。根据不同的操作系统(OS)和行末编码格式(LF,CR/LF或者CR),迁移操作会有所区别。 更多详细信息,请参考Perforce官网技术手册,或联系我们获取技术支持。

有关安装和系统构成的问题

问题1. 输出的文档在变量名和函数名较长的情况下,只能显示27个字符。

回答1. 可以通过以下操作顺序做调整。

请将../imagix/user/sample.4Ddefaults 复制到 ../imagix/user/user.4Ddefaults

并修改user.4Ddefaults中的设定。

 

初期值如下。

 

# dcgIndentSpace(D3) 4 27 45 62 70 78 86 94 MAX

# dcgIndentSpace(D3a) 4 27 45 62 70 78 86 94 MAX

# dcgIndentSpace(D3b) 4 27 45 62 70 78 86 94 MAX

# dcgIndentSpace(D3bn) 4 27 45 53 61 69 77 MAX

# dcgIndentSpace(D3n) 4 27 45 53 61 69 77 MAX

 

去掉开头的“#”,增加到15个字符的情况下,如下操作。 (第2位以后,全部加15)

 

dcgIndentSpace(D3) 4 42 60 77 85 93 101 119 MAX

 

dcgIndentSpace(D3a) 4 42 60 77 85 93 101 119 MAX

dcgIndentSpace(D3b) 4 42 60 77 85 93 101 119 MAX

dcgIndentSpace(D3bn) 4 42 60 68 76 84 92 MAX

dcgIndentSpace(D3n) 4 42 60 68 76 84 92 MAX

字符位数,请根据需要适当调整。

由于设定是在启动时读入的,所以每次修改都必须重启Imagix。

问题2. FlowChecks报告的变量名和函数名被中途切掉,无法显示整体名称。

回答2. user.4Ddefault的最后,请追加以下行。

剖析C代码的情况下(Ver 5.x) :

     

        uigLayout(rpt.symbol_width.c) XX

剖析C代码的情况下(Ver 6.x以后) :

    

        uigLayout(rpt.symbol_width.noclass) XX

剖析C++代码的情况下(Ver 5.x) :

    

        uigLayout(rpt.symbol_width.cpp) XX

剖析C++代码的情况下(Ver 6.x以后) :

     

        uigLayout(rpt.symbol_width.class) XX

XX表示指定字符位数。请指定函数名和变量名显示时需要的字符位数。

问题3. 想要启动Imagix时,显示以下信息,无法启动。
>[All licenses on (IP Address) are currently used. XXX on YYY]

回答3. 表示名为XXX的用户正在使用名为YYY的计算机。

一旦终止在YYY上的使用,则在客户端上也可以使用。

和有没有在YYY上使用无关,当在客户端无法使用的情况下,尝试在YYY上再次执行Imagix,不做任何操作就立即终止。序列号则被开放。

"没有开放的情况下,请确认是否序列号错误而没有CheckOut。被CheckOut的情况下,使用中的机器的Help→Licnese菜单中会显示Check-in Free Floating License。那时,请选择菜单,将被CheckOut的序列号开放。"

问题4. 不知道该使用哪个编译器定义文件。

回答4. 在C:\Program Files\Imagix\user\cc_cfg下面的xxxx_cross.inc支持的交叉编译器。请选择符合您使用的编译器。

若使用中的交叉编译器不在列表中,请选择“generic_cross”(普通交叉编译器用)。

问题5. 剖析时显示错误。

回答5. 有关[Project]→[Data Sources]→[Source Files],请确认以下事项。

除代码文件的文件夹信息以外,请为PP Flags指定编译时指定的-D和-I选项。可以改善包含头文件的错误。

对于Comp/Trgt,您使用中的交叉编译器在列表里找不到的时候,使用generic_cross即可。

问题6. 用试用版输出报告的时候,函数名等每隔5个字符就变为“_”,显示成乱码。

回答6. 该现象是使用试用版序列号的限制事项。

虽然各种报告通过Imagix毫无问题地显示在画面上,但是txt和csv输出时,字符会一定间隔地转换成‘_’。

还有,除此以外的功能和所有的产品版做相同的运作。

问题7. 要做成大规模项目的情况下,解剖非常花时间。对解剖代码项目的规模有限制吗?另外,可以加快解剖速度吗?

回答7.

虽然没有物理上的限制,但是规模较大的话,会有画面切换时比较花时间、流程检查报告无法执行的情况发生。


首先,从项目的分配开始介绍。

根据项目的分配,由1个项目管理的对象数量减少,下载的对象也会减少。

项目由于是伦理性地整合,因为可以不用再次剖析就整合,根据需要,可以选择想看的项目进行下载。


通常,想看应用程序整体的情况不太多见。因此,在子系统和目录单位做成项目,根据需要,连接项目,做成应用程序整体的超级项目来使用。

连接子系统做成超级项目,从File→Command执行以下命令。

imagix-project 超级项目 项目1 项目2....

例)imagix-project c:/temp/super.4D c:/temp/proj1.4D c:/temp/proj2.4D ....


其次是有关数据量的削减。

主要是关联头文件内的对象的操作。浏览大规模代码的时候,也有不需要系统的头文件和lib的头文件等的情况发生。

通过不将这其中包含的对象的数据输出到结果文件的方法,可以削减数据量,达到性能优化。 使用这个时,在编译器的设定文件和Add Data Source对话框的PP Flag指定头文件的路径时,取代“_S”要指定“_I”。

问题8. 执行剖析之后,一显示代码,文件编辑器左侧会显示红色。这是什么意思?

回答8. Imagix即使发生剖析错误,也会根据恢复功能,跳过剖析可能之前的位置,再次剖析。

左侧显示红色的地方,表示解析时发生解析错误,跳过那块的意思。

请调整为不显示错误。

问题9. 代码显示时,能否使用外部编辑器?

回答9. 由于使用的编辑器的路径名和跳行的原因,必须将命令行对象登陆到以下文件。

C:\Program Files\Imagix\user\user_ed.tcl

下面介绍将已定义的notepad的入口另写到秀丸编辑器的方法。

根据文件名“$ file”、行号“$line_num”传给编辑器。有关使用的编辑器的命令行选项,请查阅编辑器的帮助文档。指定编辑器路径名时,请使用“/(斜杠)”代替“\”。另外,路径名包含空白文字的时候,需要在路径名外加上双引号(“”)。

<修改前>

36 set notepad notepad.exe

(中间省略)

87 } elseif {[ string equal notepad $editor_name]} {

88 exec "C:\Program Files\K2Editor\K2Editor.exe" $file /j$line_num &

89 return


<修改后>

36 set hidemaru "C:/Program Files/Hidemaru/Hidemaru.exe"

(中间省略)

87 } elseif {[ string equal hidemaru $editor_name]} {

88 exec $hidemaru /j$line_num $file &

89 return


文件修改结束后,请重启Imagix4D。选择[Tools]→[Options]→[Editor]面板。接着,请选择“Other”,在输入栏输入“hidemaru”。

问题10. 如何显示未使用函数、未使用变量?

回答10. 通过选择[Reports]→[Variable Flow Checks]→[Unused Variables],可以输出未使用的变量。

另外,使用标准值工具可以确认未使用的函数、未使用的变量。

<未使用的函数>

选择[Reports]→[Metrics]→[Function Metrics]。

选择[Data]→[Insert]→[Fun In]。

Fun In调用函数的数量为“0”,可以从解析结果得知,代码里没有主调函数。

<未使用的变量>

选择[Reports]→[Metrics]→[Variable Metrics]。

Functions Using为“0”则表明是从方法代入和没有参照的变量。

问题11. 如何显示只写变量、只读变量?

回答11. 首先,选择[Reports]→[Variable Flow Checks]→[Unused Variables]。

从[Display]菜单,请选择[Show Read Only Variables] 或[Show Set Only Variables]。

问题12. 如何显示从多个任务中写入的变量?

回答12. 请选择[Reports]→[Task Flow Checks]→[Variables Set in Multiple Tasks]。 在[Display]菜单,可以选择表示事项。

问题13. 在File Diagram模式的Graph窗口,显示在头部的各符号“+”、“-”、“*”、“=”等记号是什么意思?

回答13. 用于表示的记号含义如下。

 

* -- global

   

= -- static

   

. -- local

   

+ -- public

   

- -- private

   

# -- protected

问题14. 请告知代码的数法。
不清楚Lines of Source Code 和 Number of Statements的不同之处等。

回答14. 以下是代码样本的数法。

A Lines in File (File) 14

B Lines of Source Code (File) 10

C Number of Statements (File) 8

D Lines in Function (Function) 13

E Statements in Function (Function) 9

 

A B C D E  
1 1 - 1 1: int
2 2 2 1 2 2: XXX_YYYY_GetData(void)
3 3 - 2 3 3: {
4 4 3 3 4 4: YYYY_RETURN ercd;
5 5 4 4 5 5 int data;
6 - 5 - 6:00
7 - 6 - 7: /* comment */
8 6 5 7 6 8: ercd = YYYY_get_data(&data);
9 7 6 8 - 9: #ifdef ENA_ASSERT
10 - 9 - 10: XXX_ASSERT(ercd == 0);
11 - 10 - 11: #endif
12 8 7 11 7 12: XXX_DEBUG(1, (" [XXX] data = %d\n", data));
13 9 8 12 8 13: return data;
14 10 - 13 9 14: }

A是一般的文件行数。B是在A的基础上减去注释和空行的行数。C是在B的基础上只删除括号({}()[])的行数。

问题15. 在“Variable Flow Between Tasks”报告上,输出的是Fn,这个n代替的数字是什么意思?

回答15. F代表反馈环,1个任务安装(S),其他任务读取(R)的意思。

xx只是单纯追加的序号,表示和相同号码有关联。

例如以下形式。

 

Task1 Task2 Task3
var1 S F1 R F1

表示var1 在 Task1上被S(安装),在Task2被R(读取)。

 

  Task1 Task2 Task3
var2   S,R F2 R F2

表示vat2 在Task2上被S(安装),在Task2 和Task3上被R(读取)。

 

  Task1 Task2 Task3
var3 S F1.. R F1 R F2

表示var3 在 Task1上被S(安装),在Task2 和 Task3上被R(读取)。

此处,显示Fn的情况下,表示除了使用相同的对象的任务本身之外,还有1个任务。显示Fn..的情况下,表示除了本身之外还关系到2个以上的任务。

问题16. 执行剖析之后,[Tools]→[Calucration Tree]变为灰色了,不能选择。

回答16. 请选择[Project]→[Data Sources]。

请选择使用中的数据代码,选择Option面板。

问题17:正常运用Perforce的最低硬件配置要求是什么?

就CPU和内存来说,相比起CPU速度,内存容量对性能影响更大。例如,只要有150M的内存空间,即可完成对1000个文件的操作,而无需系统另作内存分页请求。

对于服务器的磁盘容量,则要从数据库、文件和归档来分开考虑。 数据库的大致估算值是,每1文件1用户约0.5KB。 假设50用户10000文件,则大约需要250KB。 这个数值会随着文件版本的修改次数而同比增长。 服务器的文件·归档的大小除了视其原始文件的大小而异,也受其版本修改次数的影响。 对于没有差分管理的二进制文件,其容量计算方式=“修改后的版本大小(即压缩后的文件大小)×修改次数”。

问题18:中文版Perforce支持哪些平台?

中文版Perforce支持的平台,请参考官方Realse Note。

问题19:Perforce在设计上可适应多大规模的开发?

作为一款软件配置管理工具,PERFORCE兼具完善强大的功能与简洁高效的易用性。无论是几个人的小团队开发到几千人的大规模项目,Perforce都可以胜任。

问题20:Perforce的服务器/客户端环境,能否在不同的网段间(通过路由器的环境)搭建?

Perforce的服务器/客户端之间的通信,是通过TCP/IP直接连接的。不需要特别的通信协议或者文件系统,只要是具备ping应答的网络,都可以使用Perforce。
另外,在速度较慢的网络环境里,可以使用P4Proxy来改善提高性能。

问题21:通过防火墙能不能接到服务器?

可以,在经由防火墙从PERFORCE客户端连接PERFORCE服务器时,通过ssh通信方式,把来自不受信赖的外部网络连接,处理成像是通过防火墙(受信赖)的网络连接。
更多详细信息,请参考系统管理员手册里的相关内容。

问题22:支持DHCP环境吗?

Perforce客户端支持DHCP。
PERFORCE服务器不支持DHCP。 PERFORCE的许可是根据服务器的IP地址生成的。 如果服务器的IP地址发生变化,PERFORCE将无法正常工作。 所以请为Perforce服务器设定固定的IP地址。

其他问题

问题1:是否提供Perforce的培训课程?

回答.    我们提供基础用户培训(分初中高三级)以及管理员培训(基础,高级)。其他更多详情,请参见公司网站相关介绍。

问题2.P4DTG(the Perforce Defect Tracking Gateway )是什么产品?

回答.   P4DTG是将Perforce与其他第三方缺陷跟踪(BUG管理)产品进行整合的中间接口。Perforce支持HP Quality Center, Atlassian JIRA, Redmine, 以及Bugzilla等主流缺陷跟踪工具。