忘掉你认为有关子存储库,子模块以及不存在的所有内容。我的问题很简单。
我有两个存储库,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!?
答案 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是,如果你需要类似于你所要求的东西,那么可能存在一个问题你的工作流程会导致混乱。