P4的映射原理:
映射有多中映射关系,有一对一的,有一对多的,有多对多的等。我门这里讲的映射关系就是一对一的映射关系。
如果服务器上有一个地址://depot/main/dataconnection/example。在本地机器上有这样一个目录:c:/dev/datacollection/example。我门可以通过P4可以让这两个目录建立起一一对应的关系。这样,P4上的目录// depot/main/dataconnection/example下的所有文件夹、文件和本地机器上的目录c:/dev/datacollection/example下的文件夹、文件建立起了一一对应的关系。
指定了服务器和本地的文件映射关系,
新建工程
1. 新建一个工程,输入工程名称。工程名称可以任意指定,只要符合P4的名字命名空间。如工程名称为.datacollection.cspost。
2. 指定本地机器上的目录。如:c:/dev/datacollection/cspost
3. 指定影射关系。一般情况下的映射关系如如下所示:
//depot/main/datacollection/clientServer/... //.datacollection.cspost/...
左边的表示服务器上的目录结构,右边表示的是你本地机器上的目录结构。在这个映射关系中.datacollection.cspost表示的是你本地机器的目录:c:/dev/datacollection/ cspost。也就是说,有.datacollection.cspost这个变量的是c:/dev/datacollection/ cspost。表示一个你本地机器的目录。通过这个,将服务器上的目录和本地机器的目录建立起了映射关系。这里需要注意的一点是:右边的表示本地机器上的目录结构的描述,必须要以// +你的工程名称开头,因为这个代表的就是你本地机器的目录:c:/dev/datacollection/cspost。
一般情况下,我门是通过一个已经存在的工程来创建我们的工程。我门称已经存在的工程为母工程,新创建的工程为子工程。为什么要从一个母工程来创建一个子工程。因为我们要用的东西� ��很多是从服务器上的同一个目录里得到,这样,我门只需要修改一下映射关系就可以得到我们的工程。
约定:我们公司的母工程名称都是以.开头的。子工程名称都是以自己的姓氏开头的。当你创建新的工程的时候,必须首先创建以.开头的工程。比如.datacollection.exam。然后根据这个工程来创建 子工程。比如:syc.datacollection.exam。我们一般不在母工程里做任何的操作:sync,open for edit,open for delete,add等。这些操作一般都是在一姓氏开头的子工程里进行的。
主要的工作区:
1. client view of depot
显示了服务器的目录结构, 这个和project spec文件有关系, spec指定了显示的那些文件。在这里, 你可以执行的操作包括: sync, submit, open for edit, open for delete, remove from client等操作.
2. local view of depot
显示了本地的目录结构, 这个和project spec也有关系。 操作同上。
3. perforce clients workspace
在这里显示了所有的工程名称,包括母工程(以.开头的工程)和子工程(以姓氏开头的工程)。而每个工程里又包含了不同的映射信息、创建者、创建者所在机器的主机名、创建的时间等。
4. pending perforce changelists
这里显示了你当前project正在修改的文件和其他开发者正在修改的文件, 当然, 你只需要关心你自己的project即可。当你执行: add files, open for edit, open for delete等操作时, 这些信息就会显示在changlist列表中, 并有不同的图标显示其状态。 如果你修改完成后, 执行submit就可更新文件; 也可以执行revert放弃。
5. pane windows
这是一个非常有用的窗口,我们称之为消息窗口, 最底下的那个窗口就是。 你的任何操作的信息都会出现在这里,包括success, warning, error等信息。 特别是当你执行某个操作失败后,这里的信息是至关重要的。 一般情况下, 都可以根据这里的信息来处理一些意外情况或者是不规范操作。
必须要掌握的操作
你当前工作的工程必须是你自己创建的、并且要在你创建的那台机器上才能执行以下的操作。
1. Switch
跳转到你当前要工作的那个工程。
2. sync( check out)
把源代码从服务器上同步到本地。通过SYNC操作你可以得到服务器上的不同版本,包括最新的或是以前的版本。执行sync to the head version是将服务器上的最新版本同步到本地机器上。执行sync to version lebel changelist or data是将你指定的那个版本同步到本地机器上。
3. Revert unchanged file
此操作是将open for edit状态的但是没有做任何修改的文件revert掉。也就是不把没有做任何修改的文件提交到p4上去。因为p4是不会真正删除或修改文件的。它会把你修改的或是删除的文件备份到另外一个目录,� �后版本号加一。这么说来,假如将没有作任何修改的文件提交上去的话,很容易造成在服务器上有无效的数据。
4. Diff file against depot
此操作主要是用来查看某个文件到底做了哪些修改:从中你可以看出你添加了什么,删除了什么。在这个工程中,我们建议你需要思考一个问题:你为什么要做这些修改?如果你作的修改是� ��有意义的,那么,我门建议不要将这个文件提交。
5. submit(check in)
在执行此操作之前,必须先执行Revert unchanged file和Diff file against depot操作。确保提交的数据是有效的,是作了有意义的修改的。在这里,我们提交的数据有:删除的数据,修改的数据,新添加的数据。
6. add files
添加一个文件, 这些信息会显示在pending perforce changelists的defualt这个接点下面,
7. open for delete
删除一个文件,这些信息会显示在pending perforce changelists的defualt这个接点下面。做这个操作之前,你必须清楚是否真的要删除这个文件。
8. open for edit
告诉服务器我要修改这个文件(实际是把本地文件的属性从只读变为可写, 但是千万不要手动去改文件信息, 服务器并不会知道你的手工修改, 会带来莫名其妙的问题),这些信息会显示在pending perforce changelists的defualt这个接点下面。
9. revert
放弃操作。就上不将在pending perforce changelists的defualt这个接点下处于修改的、添加的、删除的等状态下的文件不提交到服务器上去。在执行次操作之前,首先要思考,我是否是真到要REVERT。因为一旦你真的REVERT了,那么,你之� ��所做的修改、添加、删除等操作都是无用的。尤其是修改操作,因为很有可能将你一天甚至几天的劳动成果都被REVERT掉了,而且无法挽回。
10. remove from client
从客户端删除服务器上映射的文件, 这样子你就可以知道那些文件是你新加入的(理论上是安全的, 但是还是建议执行这个操作之前备份一下)。
11. 编辑影射关系
执行EDIT操作,然后编辑映射关系。这个时候,我门可以添加一条映射关系,以得到服务器上已经存在的资源。我们也可以删除一条影射关系,以去掉不需要的资源。我们一般将我们公司自己 开发的资源放在本地机器的shared目录下面。