提交嵌套的.hg文件夹

时间:2014-01-28 14:57:31

标签: version-control mercurial

忘掉你认为有关子存储库,子模块以及不存在的所有内容。我的问题很简单。

我有两个存储库,repoOne和repoTwo

repoTwo的内容只有一个文件: DefaultConfig.txt

repoOne的内容是:

+ repoOne
      + folderA
           +folderB 
                  +repoTwo
                       +.hg
                       +DefaultConfig.txt

好的,现在我只对 repoOne 中的 DefaultConfig.txt 进行更改。我还在它旁边添加了一个兄弟文件,只是为了好玩。

我希望这些更改仅针对 repoOne 提交。

也就是说,repoTwo不应该知道这些变化,但是如果它选择从repoTwo中提取hg,我希望repoOne继续获取更新。如果我选择这样做,它也可以从该文件夹内部提交。

为什么这不可能?为什么mercurial拒绝提交.hg文件?否则它会如此精彩!还有什么其他版本控制系统会从头开始支持这样的事情?

GIT也受到这个确切问题的困扰! Whyyyyy!?

1 个答案:

答案 0 :(得分:1)

我不完全确定我理解你要做的是什么,但在我看来,你只需要在命令行中指定存储库根目录,这几乎可以为所有{{{ 1}}命令:

hg

但是,我会反对你所描述的结构,因为它很容易混淆,除非你决定选择SubRepositories,这被认为是最后的特征。


更新:玩过它后,实际上并不起作用,因为它报告该文件是嵌套的回购邮件。

将文件添加到父级后,尝试将文件添加到嵌套存储库中,导致它从父存储库中标记为“已删除”。

一种可能的解决方案是将有问题的文件放在一个嵌套的存储库中,并克隆到另一个嵌套的存储库中:

cd repoTwo
hg -R ../../.. add DefaultConfig.txt
hg -R ../../.. commit -m "Whyyyyy would I do this!?"

这样的事情意味着您可能有+ parentRepo + .hg + nestedOne + .hg + DefaultConfig.txt + nestedTwo : cloned from nestedOne + .hg + DefaultConfig.txt 的两个版本,如果您对其中一个进行了更改,则可以通过DefaultConfig.txt和{{1}将其传递给另一个版本}。我不确定这是不是你想要的,但它是我能得到的最接近的,而且它很乱。

要回答你的问题“为什么这不可能?”,我可以想到几个原因,但主要的一个IMO是,如果你需要类似于你所要求的东西,那么可能存在一个问题你的工作流程会导致混乱。