【P4】解决本地文件修改与库文件间的冲突问题

简介: 【P4】解决本地文件修改与库文件间的冲突问题

需求提出


公司采用 perforce 进行 code 版本管理,同一团队在同一 branch 下工作。多人把 code check out 到本地,edit 后再 submit 上传库中。若 A 和 B 对同一文件 F 进行了 edit,A 先于 B 将 文件 F 上传,待 B 上传时,就会出现本地修改与库文件版本冲突的问题。


 常用的方法是 p4 resolve 把个人改动与他人改动 merge 到一起。p4 resolve 的 merge 参数如表 1 所示。


▼ 表 1:p4 resolve 的 megre 相关参数  


image.png 大部分情况下,两人的改动是会冲突的,需要手动把我方改动与库里的他人改动 merge 到一起。此时需要一系列操作来完成手动 merge。考虑到每次手动 merge 都是那么几个命令,干脆封装下得了。



脚本特性


  • 生成原文件的本地备份,原文件名添加时间戳作为备份文件名。


  • 原文件 revert 并 sync 到最新版本,与库版本对齐。


  • resolve 完毕后,CL 仍与 resolve 前的 CL 相同。


  • 需要 p4 diff 手动 merge。




脚本


  脚本名为 m_resolve.sh,为方便使用请在 ~/.bashrcalias m_resolve 'sh ~/script/m_resolve.sh'

#! /usr/bin/sh
# File Name: m_resolve.sh
# Usage      : sh m_resolve.sh conflicted_file
timestamp=$(data +%Y%m%d%H%M%S)
ori_file=$1
bak_file=.$ori_file.$timestamp
# get CL
CL=`p4 opened $ori_file`
CL=`echo ${CL#*\edit change}`  # keep right
CL=`echo ${CL%% *}`                # keep left
#
cp $ori_file $bak_file
p4 revert $ori_file
p4 sync $ori_file
p4 edit $ori_file
cp $bak_file $ori_file
p4 reopen -c $CL $ori_file
p4 diff $ori_file




目录
相关文章
|
6月前
如何从多个文件夹内转移全部文件(忽略文件夹的结构)(进行复制)(再打包)
该文介绍了一个工具的使用方法,用于忽略文件夹结构并合并所有图片。首先,提供了两个下载链接:百度网盘(提取码:qwu2)和蓝奏云(提取码:2r1z)。接着,展示了文件夹内的嵌套结构,包含多层文件夹和兔兔图片。通过打开工具,选择文件批量复制功能,勾选“忽略文件夹结构”和“不存在自动创建”,然后将目标文件夹“1”添加到来源路径。点击开始复制,并在需要时选择打包和删除原文件,最终会得到一个包含所有图片的压缩包。
|
6月前
|
定位技术 Python
Python依据某一文件夹中大量文件的名称复制另一文件夹中的同名文件
Python依据某一文件夹中大量文件的名称复制另一文件夹中的同名文件
|
搜索推荐
更改目录
写完了一篇文章,进行对标题实现一个自动更改的目的,通过word对文章标题实现一个自动更改目录的功能,在更改的过程中遇到了出现了很多不明白的地方的,也是让自己陷入了两难的境界。
54 0
目录的操作
目录的操作
100 0
|
存储 JSON 安全
electron如何自定义目录,修改文件名保存下载的网络文件
很多同学觉得用localstorage可以代替vuex, 对于不变的数据确实可以,但是当两个组件共用一个数据源(对象或数组)时,如果其中一个组件改变了该数据源,希望另一个组件响应该变化时,localstorage无法做到,原因就是区别1。
electron如何自定义目录,修改文件名保存下载的网络文件
|
Shell Linux 开发工具
厉害了!知道这样重命名文件都是大神级别!
厉害了!知道这样重命名文件都是大神级别!
140 0
厉害了!知道这样重命名文件都是大神级别!
VBS实现批量重命名文件并且操作前备份原有文件
'=========================================================================='' VBScript Source File -- Created with SAPIEN Technologies PrimalScript 4.
931 0