`hg cp` 有什么作用以及如何“撤消”它?

问题描述 投票:0回答:1

我在工作中使用了 Visual Studio Code (VSC),像往常一样,我查看了一个文件,例如

Foo.react.js

并使用另存为

Bar.react.js

以便以

Foo.react.js
为模板创建一个新的组件文件。

但是,当它到达 CI/CD (Jenkins) 并推送到生产服务器阶段时,文件

Bar.react.js
与自身发生了合并冲突,这很奇怪,因为为什么只有我创建和编辑的新文件会与它冲突本身?

与 hg 和 CI/CD 团队交谈,他们告诉我,当我们使用“另存为”时,VSC(在我公司)做了一个

hg cp
,并且它处理 Bar.react.js 以遵循 Foo.react.js 的历史.

所以可能有人也修改了 Foo.react.js,并且 Bar.react.js 中的某些行与其冲突。

我还被告知我可以使用

hg forget Bar.react.js
然后使用
hg add Bar.react.js
来解决问题。

所以问题是:

  1. hg cp
    到底做了什么?为什么它要使用旧文件来跟踪新文件的历史记录?

  2. 我是否真的只能对当前提交和推送执行

    hg forget Bar.react.js
    然后
    hg add Bar.react.js
    来解决问题?如果我没有使用
    hg forget
    hg add
    ,然后修复了合并冲突,现在所有文件最终都在存储库中,那么
    Foo.react.js
    将来还会与
    Bar.react.js
    发生冲突吗?

我认为对于(2),它们将来可能不会相互冲突的原因是,如果我在所有文件都在存储库中之后执行

hg forget
hg add
,那么 hg 会将其视为“没有改变”我什至无法承诺。如果我
hg forget
并提交,然后
hg add
再次提交,现在我想着陆并推送它,CI/CD 会说
hg forget
提交未通过 CI/CD 测试(缺少组件) ),所以我真的想知道我是否需要检查
hg forget
hg add
,因为似乎没有人这样做,因为没有人说过一旦文件现在都在存储库中,如何完成它。

所以就变成了:
现在所有文件都在仓库中了,我是否还需要先做

hg forget Bar.react.js
,然后
hg add Bar.react.js
,以便这两个文件将来不会互相冲突。如果我需要做
hg forget
hg add
,应该怎么做?

mercurial
1个回答
0
投票
  1. hg cp 到底做了什么?为什么它要使用旧文件来跟踪新文件的历史记录?

跟踪重命名文件的历史记录非常有用。

假设您在

button.jsx
上工作了很多年,然后它被重命名为
colorButton.jsx
如果没有跨重命名跟踪历史记录,则在查看 colorButton.jsx 的历史记录时,您只会看到自重命名以来的历史记录,因为它将被视为新文件。由于button.jsx不再位于工作目录中,因此可能也很难知道旧历史记录在哪里。

复制文件并不常见,但我想如果您确实想复制文件并维护共同的历史记录,那么它会很有用。

  1. 我真的只能通过 hg 忘记 Bar.react.js 然后在当前提交和推送中添加 Bar.react.js 来解决问题吗?

还可以通过以下方式断开两个文件之间的关联:

'hg 重命名--忘记 colorButton.jsx'

注:

人们可以通过键入来阅读此内容

hg help rename

hg help copy

© www.soinside.com 2019 - 2024. All rights reserved.