当前位置:网站首页>【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
边栏推荐
- 每日练习------实现双色球的彩票功能。规则:从36个红球中随机选择不重复的6个数,从15个篮球中随机选择1个组成一注彩票。可以选择买多注。
- ASEMI整流桥GBPC3510在直流有刷电机中的妙用
- Response to questions about the balanced beacon group of Hubei University of Arts and Sciences
- 我的创作纪念日
- Outlook 教程,如何在 Outlook 中使用颜色类别和提醒?
- 695. 岛屿的最大面积
- 最新版宝塔安装zip扩展,php -m 不显示的处理方法
- 同时导出多个excel,并且一个excel中包含多个sheet
- 4天Excel实战训练营,0.01元特惠仅三天,赠200套学习资料包
- Leetcode 29th day
猜你喜欢

Shell: one click deployment PXE

53. Maximum subarray maximum subarray sum

Shell编写规范和变量

Methods of SQL server backup database
![2022-07-27:小红拿到了一个长度为N的数组arr,她准备只进行一次修改, 可以将数组中任意一个数arr[i],修改为不大于P的正数(修改后的数必须和原数不同), 并使得所有数之和为X的倍数。](/img/24/fbf63272f83b932e0ee953f8d4db75.png)
2022-07-27:小红拿到了一个长度为N的数组arr,她准备只进行一次修改, 可以将数组中任意一个数arr[i],修改为不大于P的正数(修改后的数必须和原数不同), 并使得所有数之和为X的倍数。

每日练习------实现双色球的彩票功能。规则:从36个红球中随机选择不重复的6个数,从15个篮球中随机选择1个组成一注彩票。可以选择买多注。

Illustrated: detailed explanation of JVM memory layout

What are the fragments of MySQL

一篇文章掌握Postgresql中对于日期类数据的计算和处理

Shell: resource monitoring script and high load alarm
随机推荐
Unity简单实现对话功能
After reading MySQL database advanced practice (SQL xiaoxuzhu)
Shell编写规范和变量
沃尔沃:深入人心的“安全感” 究竟靠的是什么?
Qt:QMessageBox消息框、自定义信号和槽
GNU General Public License v2.0 GNU General Public License
20 soul chicken soup beautiful sentences, sentence by sentence warm heart!
Embedded database -- SQLite
Asemi rectifier bridge gbpc5010, gbpc5010 parameters, gbpc5010 size
Play WolframAlpha computing knowledge engine
Shell:资源监控脚本和高负载报警
如何卸载干净zabbix服务?(超详细)
203.移除链表元素
20220726汇承科技的蓝牙模块HC-05的AT命令测试
xctf攻防世界 Web高手进阶区 PHP2
Use of custom annotations
verticle-align行内元素垂直居中对齐
deepstream 检测结果截图
SSM integration (integrated configuration)
MSGAN用于多种图像合成的模式搜索生成对抗网络---解决模式崩塌问题