我在版本控制下使用了一些代码(使用mercurial),并希望分享其中一些代码,同时隐藏其他部分,我无法释放到公共领域(至少在此阶段)。
我希望保持公共代码的修订历史不变,更重要的是,能够在公共存储库和包含公共代码和私有代码的存储库之间进行推/拉变更。但是,不应该从公共存储库历史记录中恢复任何私人信息。
从我到目前为止所收集的信息来看,应该可以使用<{>} hg convert
和filemap
来提取公共内容并排除,尽管这会改变所有修订ID并排除两个存储库之间的任何交互。
为了完整性,我想我应该补充说,存储库最初是从cvs转换而来。
会对任何想法表示感激,
答案 0 :(得分:3)
这并不总是实用,但如果您的回购的公共部分可以被限制(或移动到)当前回购的子目录,那么您可以:
hg convert
)该子目录中的子目录然后您将管理两个回购:
答案 1 :(得分:0)
如果您可以使用subrepos,这可能是最好的方法,但使用convert
无需排除各个部分之间的互动。如果公共和私有内容完全不相交,请使用convert
将原始仓库拆分为两个完全不相交的子集(重新生成所有变更集ID),然后通过克隆一个来重新创建“超集”仓库并拉动另一个(使用--force
来克服hg对不相关的存储库的反对意见)。你最终会得到一个稍微不同寻常的回购,它有两个无父变换集和两个头。合并头部,你再次对公共和私人有统一的看法,公共回购的祖先有效地在自己的分支上。