当前位置:网站首页>【P4】解决本地文件修改与库文件间的冲突问题
【P4】解决本地文件修改与库文件间的冲突问题
2022-07-28 03:25:00 【MangoPapa】
声明:
- 🥭 作者主页:【MangoPapa的CSDN主页】。
- ️ 本文首发于CSDN,转载或引用请注明出处 https://mangopapa.blog.csdn.net/article/details/125939590。
- ️ 本文为非盈利性质,目的为 个人学习记录 及 知识分享。因个人能力受限,存在协议解读不正确的可能。若您参考本文进行产品设计或进行其他事项并造成了不良后果,本人不承担相关法律责任。
- ️ 若本文所采用图片或相关引用侵犯了您的合法权益,请联系我进行删除。
- 欢迎大家指出文章错误,欢迎同行与我交流 ~
- 邮箱:[email protected]
引言
本专栏记录一些个人常用的 命令组合 或 脚本。脚本包括但不限于 shell、python、perl。
本篇为《【P4】解决本地文件修改与库文件间的冲突问题》。
更多实用脚本 点击查看总目录。
需求提出
公司采用 perforce 进行 code 版本管理,同一团队在同一 branch 下工作。多人把 code check out 到本地,edit 后再 submit 上传库中。若 A 和 B 对同一文件 F 进行了 edit,A 先于 B 将 文件 F 上传,待 B 上传时,就会出现本地修改与库文件版本冲突的问题。
常用的方法是 p4 resolve 把个人改动与他人改动 merge 到一起。p4 resolve 的 merge 参数如表 1 所示。
| 参数 | 释义 |
|---|---|
| -am | 谁跟 base 不一致接受谁的,若两人的均与 base 不一致,两人改动不冲突则自动 merge,两人改动冲突则忽略。 |
| -as | 谁跟 base 不一致接受谁的,若两人的均与 base 不一致,不管冲不冲突均忽略。 |
| -ay | 接受我方的改动。 |
| -at | 接受他方的改动。 |
大部分情况下,两人的改动是会冲突的,需要手动把我方改动与库里的他人改动 merge 到一起。此时需要一系列操作来完成手动 merge。考虑到每次手动 merge 都是那么几个命令,干脆封装下得了。
脚本特性
- 生成原文件的本地备份,原文件名添加时间戳作为备份文件名。
- 原文件 revert 并 sync 到最新版本,与库版本对齐。
- resolve 完毕后,CL 仍与 resolve 前的 CL 相同。
- 需要 p4 diff 手动 merge。
脚本
脚本名为 m_resolve.sh,为方便使用请在 ~/.bashrc 里 alias 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
边栏推荐
- 如何使用JDBC操作数据库
- 贪心——55. 跳跃游戏
- Malloc, free, calloc, realloc dynamic memory development functions in dynamic memory management
- ASEMI整流桥GBPC3510在直流有刷电机中的妙用
- 响应式高端网站模板源码图库素材资源下载平台源码
- Prefix-Tuning: Optimizing Continuous Prompts for Generation
- Redis persistence mechanism
- MySQL stored procedures use cursors to synchronize data between two tables
- 12月份PMP考试首次采用新考纲,该怎么学?
- verticle-align行内元素垂直居中对齐
猜你喜欢

Unity backpack system

收藏|0 基础开源数据可视化平台 FlyFish 大屏开发指南

Redis memory recycling

⽇志分析⼯具(Splunk)

动态规划——62. 不同路径

How to solve the problem of win11 black desktop background?

20220726 at command test of Bluetooth module hc-05 of Huicheng Technology

Outlook 教程,如何在 Outlook 中使用颜色类别和提醒?

redis源码分析(谁说C语言就不能分析了?)

Unity简单实现对话功能
随机推荐
8000字讲透OBSA原理与应用实践
Unity背包系统
一篇文章掌握Postgresql中对于日期类数据的计算和处理
过亿资产地址被拉入黑名单?Tether地址冻结功能该怎么用?
贪心——55. 跳跃游戏
动态规划——416. 分割等和子集
Asemi rectifier bridge gbpc5010, gbpc5010 parameters, gbpc5010 size
玩一玩WolframAlpha计算知识引擎
我的创作纪念日
Acid characteristics of MySQL transactions and example analysis of concurrency problems
D2dengine edible tutorial (4) -- draw text
IronOCR for .NET 2022.8
Light year admin background management system template
什么是Tor?Tor浏览器更新有什么用?
ES6 从入门到精通 # 07:解构赋值
图文并茂:JVM 内存布局详解
ASEMI整流桥GBPC5010,GBPC5010参数,GBPC5010大小
tensorboard使用记录
TypeError: ufunc ‘bitwise_and‘ not supported for the input types, and the inputs could not be safely
A treasure simulates login and reduces the method of secondary verification