当前位置: 首页 > news >正文

[SCM]源码管理 - perforce高级操作

[SCM]源码管理 - perforce高级操作

https://www.cnblogs.com/itech/archive/2011/08/09/2131928.html

以下的操作基于P4V。

 

1 p4 refresh all

某些情况下某些修改不能实时地在p4v中跟新,此时可以使用p4v refresh all。

还可以在任意的item上右键中找到refresh相关的操作。例如本地目录下删除或增加文件,在p4v中不能的及时反映,这个时候可以在 workspace中的目录中右键中点击refresh相关选项。当然其他的changelist,client,depot等也都有相应的 refreash。

操作: view->refreash all

 

2 p4 rollback

用来将已经提交的修改撤销,或者恢复到某个之前的changelist。

如果是没有提交的修改(即在本地的pending changelist),使用revert unchanged files或revert files。

操作:例如如下将//depot/projectB恢复到version(changelist)14,在//depot/projectB上右键然后点击rollback,在rollback的dialog上设置changelist为14,然后直接submit。

 

3 p4 shelve

shelve是p4 2009后的新功能。需要p4 server和p4 client同时支持。

shelve操作用来临时存储正在进行的工作到perforce server,但是没有submit一个changelist。
shelve的用处:
当你在一些文件上同时进行多个开发任务(例如必须先处理优先级更高的工作,或必须在提交前到其他的平台测试)。
或者用来在提交前developers间的code review。

 

p4 shelve 相当于将你的修改零时的挂载到p4 server的架子上。
p4 unshelve相当于将修改从p4 server的架子上覆盖到本地的workspace,且加到pending changelist。

 

操作:

1)BBB用户要shelve文件//depot/projectB/file2.txt, 在文件//depot/projectB/file2.txt上右键然后点击shelve。如下图:

2) BBB用户shelve文件//depot/projectB/file2.txt后如下图:

3) 使用另一个用户AAA登录后如下,AAA不一定使用与BBB相同的workspace(client)。如下图:

4) 在AAA用户下切换到BBB用户下查看BBB用户的shelve,此时可以使用diff against 或者直接打开文件来review BBB用户的修改,相当于是code review。

或者使用unshelve来将BBB用户的修改应用到AAA用户的workspace,且加到AAA的pending changelist中。

5)在AAA用户登录后切换到BBB用户时,使用unshelve过程操作如下:

6)可以看到AAA用户对BBB的shelve进行unshelve后,BBB的修改被加到AAA的default changelist中,如下:

 

 

4 p4 lock/unlock

对本地pending changelist中的文件进行lock,从而达到当自己checkout修改某些文件时不允许其他的人修改相同的文件,直到自己unlock或submit后别人才可以修改。

我们知道p4是基于merge机制的源码管理,p4 lock命令相当于以前的基于lock机制的源码管理工具。

操作:在某个pending changelist或某些被checkout的文件上右键中选择lock或unlock。

 

5 p4 rename/move

直接修改perforce server上某个文件的名字或将文件移动目录。相当于自己使用delete+add+submit的操作。

 

6 查看指定的changelist,操作为ctrl+G

 

完!

 

 

 

 

 

 

 

相关文章:

  • C#Lock机制
  • AssetBundle中的一个坑-DeterministicAssetBundle与文件名
  • Unity Asset Bundle 的BuildAssetBundleOptions
  • daaoling / daaoling.github.io
  • 一个灵活的AssetBundle打包工具
  • BuildPipeline.BuildAssetBundleExplicitAssetNames
  • Unity5.x shader打包AssetBundle总结
  • Unity 加载AssetBundle
  • Unity开发(三) AssetBundle同步异步引用计数资源加载管理器
  • Unity脚本运行时更新带来了什么?
  • UE4 补丁更新(基于Http)
  • UE4 Pak加载
  • Unity3D Shader加载时机和预编译
  • ShaderVariantCollection解决shader_feature丢失
  • 一次UNITY闪退问题的定位心得
  • 【108天】Java——《Head First Java》笔记(第1-4章)
  • 【刷算法】从上往下打印二叉树
  • Django 博客开发教程 8 - 博客文章详情页
  • electron原来这么简单----打包你的react、VUE桌面应用程序
  • JavaScript创建对象的四种方式
  • jquery ajax学习笔记
  • js如何打印object对象
  • Python中eval与exec的使用及区别
  • vue:响应原理
  • 警报:线上事故之CountDownLatch的威力
  • 前端自动化解决方案
  • 实现简单的正则表达式引擎
  • 使用 Node.js 的 nodemailer 模块发送邮件(支持 QQ、163 等、支持附件)
  • 小程序上传图片到七牛云(支持多张上传,预览,删除)
  • 一些css基础学习笔记
  • 在Unity中实现一个简单的消息管理器
  • 小白应该如何快速入门阿里云服务器,新手使用ECS的方法 ...
  • (11)MSP430F5529 定时器B
  • (DenseNet)Densely Connected Convolutional Networks--Gao Huang
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (附源码)springboot猪场管理系统 毕业设计 160901
  • (附源码)ssm航空客运订票系统 毕业设计 141612
  • (附源码)基于SpringBoot和Vue的厨到家服务平台的设计与实现 毕业设计 063133
  • (强烈推荐)移动端音视频从零到上手(上)
  • **python多态
  • .axf 转化 .bin文件 的方法
  • .NET Micro Framework 4.2 beta 源码探析
  • .net 中viewstate的原理和使用
  • .NET 自定义中间件 判断是否存在 AllowAnonymousAttribute 特性 来判断是否需要身份验证
  • .NET开源项目介绍及资源推荐:数据持久层 (微软MVP写作)
  • .NET正则基础之——正则委托
  • .skip() 和 .only() 的使用
  • ?php echo $logosrc[0];?,如何在一行中显示logo和标题?
  • @Bean有哪些属性
  • @ModelAttribute注解使用
  • [20190113]四校联考
  • [202209]mysql8.0 双主集群搭建 亲测可用
  • [23] 4K4D: Real-Time 4D View Synthesis at 4K Resolution
  • [android] 切换界面的通用处理
  • [AndroidStudio]_[初级]_[修改虚拟设备镜像文件的存放位置]