Mercurial:如何在分支之间移动单个目录

Mercurial:如何在分支之间移动单个目录,mercurial,branch,swap,Mercurial,Branch,Swap,等一下,这次会很艰难的。我试图清理一个我只能描述为病态的Mercurial回购,而最简单的“修复”似乎是在两个分支之间交换一个目录。我不确定我是否能充分解释这种情况,但我会试一试 我们有一个从大量输入中生成原始源的工具。(数百个或数千个输入文件,输出文件的数量相似。)然后根据需要手动调整和优化此输出,然后再声明准备部署。该工具在提供配置文件等的目录中运行 比如: proj/.hg /input /output /config-env 现在,所发生的事情是一个分支被用于调

等一下,这次会很艰难的。我试图清理一个我只能描述为病态的Mercurial回购,而最简单的“修复”似乎是在两个分支之间交换一个目录。我不确定我是否能充分解释这种情况,但我会试一试

我们有一个从大量输入中生成原始源的工具。(数百个或数千个输入文件,输出文件的数量相似。)然后根据需要手动调整和优化此输出,然后再声明准备部署。该工具在提供配置文件等的目录中运行

比如:

proj/.hg
    /input
    /output
    /config-env
现在,所发生的事情是一个分支被用于调整,而不是(对我来说)共享mq方法的逻辑选择。(团队当时并不了解mq,他们大多接受过CVS培训,但值得赞扬的是,他们正在努力改进工作流程。)

这就是它变得糟糕的地方

命名分支是原始输出分支,默认分支是手动调整的分支

不断创建工具的输出,然后
hg update raw
,然后
hg merge
,尝试将工具优化与输出合并到原始分支,然后将其合并回“默认”分支,以合并优化和先前的手部补丁,使用合并失败列表作为需要进一步手动编辑的内容的拾取列表

也就是说,这两个分支之间有一个疯狂的循环,使得开发成为脆弱和错误的小噩梦。这正是我想要解决的问题。我想要的是默认分支是原始输出,一个新的“部署”分支包含手动补丁,从默认到部署,合并只以一种方式进行。在我看来,这仍然不是最优的,但在我能够说服权力机构相信mq是前进的方向之前,这是一个相当大的进步

但是。还有更多。随着时间的推移,config env和input目录发生了更改,但这两个分支之间的更改并没有保持干净和同步。对输入和配置环境的更改在默认分支上,但匹配的原始输出在原始分支上,过时的输入和配置环境实际上不属于原始分支。我曾询问过是否需要删除过时的文件,但有人认为我们需要保留它们。因此,我只想在两个分支之间交换输出目录

我考虑过类似于
hgconvert--branchmap swap.txt--filemap only-output.txt--datesort
的东西,但后来意识到在结果repo中只能得到输出目录。我可能可以将两个分支的输出目录剥离到它们自己的repo中,交换分支名称,然后将两个repo合并在一起(没有输出,交换分支的输出),但我想也许这里的人会有更好的主意

当然,我的目标是有一个带有mq补丁列表的分支来存储手工补丁,并且补丁列表是共享repo的一部分,但是babysteps是有序的


如果推到了紧要关头,我认为我们可以消除两个分支上输出目录的大部分历史记录,但我们确实需要在两个分支上保留某些标记的版本。

如果你建议最近的CSV难民甚至对mq虎视眈眈,那你就是在伤害他们。在现代工作流中根本不需要使用mq。我认为mq有合法的用途,但这并不是其中之一。虽然这不是我要问的问题,但你们能否提供一个替代mq的建议作为长期目标?因为这样做完全是病态的。