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


🔥点击进入【芯片设计验证】社区,查看更多精彩内容🔥


📢 声明

  • 🥭 作者主页:【MangoPapa的CSDN主页】。
  • ⚠️ 本文首发于CSDN,转载或引用请注明出处 https://mangopapa.blog.csdn.net/article/details/125939590
  • ⚠️ 本文为非盈利性质,目的为 个人学习记录知识分享。因个人能力受限,存在协议解读不正确的可能。若您参考本文进行产品设计或进行其他事项并造成了不良后果,本人不承担相关法律责任。
  • ⚠️ 若本文所采用图片或相关引用侵犯了您的合法权益,请联系我进行删除。
  • 😄 欢迎大家指出文章错误,欢迎同行与我交流 ~
  • 📧 邮箱:mangopapa@yeah.net

引言

本专栏记录一些个人常用的 命令组合脚本。脚本包括但不限于 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 所示。

▼ 表 1:p4 resolve 的 megre 相关参数
参数释义
-am谁跟 base 不一致接受谁的,若两人的均与 base 不一致,两人改动不冲突则自动 merge,两人改动冲突则忽略。
-as谁跟 base 不一致接受谁的,若两人的均与 base 不一致,不管冲不冲突均忽略。
-ay接受我方的改动。
-at接受他方的改动。

  大部分情况下,两人的改动是会冲突的,需要手动把我方改动与库里的他人改动 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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MangoPapa

请作者喝瓶可乐吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值