mercurial - 如何使用 Mercurial Queues 重命名文件?

标签 mercurial mq mercurial-queue

Mercurial Queues 是关于补丁的,而补丁对文件重命名一无所知。这是 Mercurial Queues 不支持文件重命名的原因,还是我在重命名文件时做错了什么?我在一个补丁队列上工作过,只修改了一个名为 foo 的文件。 .现在我回到补丁 4 并通过 hg mv 重命名文件:

hg qpop 4     # Unapply all patches until patch 4.
hg mv foo bar # Rename file and led Mercuial know about it.
hg qrefresh   # Should apply changes to unapplied patch 4.
hg qpush -a   # Should apply all unapplied patches.

我收到以下错误:
unable to find 'foo' for patching
1 out of 1 hunks FAILED -- saving rejects to file foo.rej
patch failed, unable to continue (try -v)
patch failed, rejects left in working dir
errors during apply, please fix and refresh 5.diff

那么我应该如何使用 Mercurial Queues 处理文件重命名呢? Mercurial 提交处理文件重命名是有原因的(如果没有,它会丢失有关重命名后文件编辑的整个历史记录)。

更新

刚刚注意到 hg histedit折叠变更集和 hg collapse也丢失了文件重命名的信息,文件显示为新文件而不是重命名的文件,我想这也是出于同样的原因。似乎在不丢失该信息的情况下,在 Mercurial 中无法折叠私有(private)变更集?

更新 2

使用 hg rebase 可以发现在不丢失重命名信息的情况下折叠私有(private)变更集及其--collapse选项,例如hg rebase -s 5 -d 4 --collapse .其他命令应该保留重命名信息的问题仍然悬而未决,但使用 hg rebase命令至少有一种方法可以达到预期的效果。

最佳答案

Is this the reason why Mercurial Queues don't support file renames,



不。

or am I doing something wrong renaming the file?



不。

是的,链中的补丁将有 麻烦,如果他们准备好了foo文件,但稍后将是 bar ,但由于不同的原因:补丁是独立的,每个补丁都不知道其他补丁的变化 - 它们与上下文一起工作,而不是单独补丁中的操作序列。您已正确重命名,但此变更集 使以后的变更集无效 , 准备于 旧内容

关于mercurial - 如何使用 Mercurial Queues 重命名文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13804608/

相关文章:

variables - 如何配置 Mercurial 以使用 mercurial.ini 中的环境变量

svn - 你有没有从颠覆转变为善变?值得付出努力吗?

redis - ServiceStack 消息 API : Can it make a broadcast?

Mercurial 补丁队列用例

Mercurial:在没有公共(public)阶段的情况下从远程存储库中提取更改(非发布服务器, "abort: can' t rebase 不可变变更集”)

mercurial - 如何从特定 Mercurial 克隆中删除某些变更集?

mercurial - 命令行调用 hg histedit 来编辑最后一次提交?

java - JMS/WMQ 可以同步消息传递吗?

java - Websphere 7 SIB 队列 : how to access queue depth from Java?

Mercurial 队列 - 导出补丁