gpt4 book ai didi

mercurial - 在商业上,我如何对特定文件应用反向修补程序?

转载 作者:行者123 更新时间:2023-12-03 12:10:07 26 4
gpt4 key购买 nike

Mercurial: Merging one file between branches in one repo相关,我试图对单个文件执行回退操作,即使该文件是要回退的修订中的许多参与者之一。

HG是它的面向变更集的工具,它不想对文件进行操作。

我能找到的最接近的方法是使用hg导出创建差异,手动编辑差异,然后进行hg导入以相反的顺序修补文件。

..但是后来我遇到了这种令人讨厌的情况,http://hgbook.red-bean.com/read/finding-and-fixing-mistakes.html声称有hg patch的--reverse选项,而没有。

因此,我能想到的最接近的方法是生成一个如上所述的手工编辑补丁,然后使用 Vanilla 补丁-R来应用反向补丁。
hg backout命令在这里似乎很有用,但实际上是一个红色鲱 fish 。

有更好的方法,不是吗?

最佳答案

您可以仅使用-I(包括与给定模式匹配的名称)参数来进行单行退出:

hg backout --merge -I thefiletorevert -m 'message' OFFENDINGREVISIONID

示例脚本:
hg init testrepo
cd testrepo
echo -e "line1\n\nline3" > file1
echo -e "line1\n\nline3" > file2
hg commit -A -m 'changes to two files'
perl -pi -e 's/line1/line 1/' file1
perl -pi -e 's/line1/line 1/' file2
hg commit -m 'put spaces in line1'
perl -pi -e 's/line3/line 3/' file1
perl -pi -e 's/line3/line 3/' file2
hg commit -m 'put spaces in line3'
hg backout --merge -I file1 -m 'remove spaces from line1' 1

示例输出:
adding file1
adding file2
reverting file1
created new head
changeset 3:6d354f1ad4c5 backs out changeset 1:906bbeaca6a3
merging with changeset 3:6d354f1ad4c5
merging file1
0 files updated, 1 files merged, 0 files removed, 0 files unresolved
(branch merge, don't forget to commit)

结果文件内容:
file1:line1
file1:line 3
file2:line 1
file2:line 3

注意,在更改中间变更集回退后,file1缺少第一行的空间,详细日志显示回退中仅更改了一个文件:
$ hg log -v -r tip
changeset: 3:6d354f1ad4c5
tag: tip
parent: 1:906bbeaca6a3
user: Ry4an Brase <ry4an@mini>
date: Mon Sep 14 12:17:23 2009 -0500
files: file1
description:
remove spaces from line1

关于mercurial - 在商业上,我如何对特定文件应用反向修补程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1086222/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com