我有一个包含一些敏感文件和目录的活动项目。我想聘请外部承包商来做一些简单的 UI 工作。但是,我不希望承包商有权访问某些目录和文件。我的项目在 Bitbucket 上反复无常。
清理项目并允许他提交更改的最佳方法是什么?我考虑过分叉到一个新的存储库,但我担心删除我不希望他访问的目录。
如何删除它们以使它们不会出现原始变更集?如何在不删除主存储库中的那些目录的情况下合并他的存储库?叉子是要走的路吗?
自然,存储库需要访问其整个历史记录,以便自检其完整性。我不知道有选择地隐藏部分存储库的方法(有ACL 扩展,但它仅用于写访问)。
在你的情况下,我会
-f
用于强制拉取不相关的存储库),并且对于步骤 3 到 5,您不必等到外部开发人员完成。重新调整他的存储库的中间状态也是可能的。
然而,这是一个理论上的想法......人们必须看看它在实践中的表现如何。
替代方案:如果您经常有外部承包商不应该看到您的代码的某些部分,我会附议@Anton 的评论以设置与权限相关的多个存储库。
有多种方法可以做到这一点:
无论如何,您都需要重组和拆分现有存储库,因此如果您有很多人在此项目上工作,这将造成严重破坏,他们都需要停止工作,同步他们的工作,销毁他们的本地克隆并在之后克隆新副本重组。
使用多个存储库的一种方法是执行以下操作:
hg convert
命令的第一个克隆,以摆脱承包商不应访问的所有点点滴滴hg convert
在另一个克隆上运行以摆脱第一个现在存在的所有内容。您现在拥有的是两个存储库:
从现在开始,每当承包商将工作推送到他的存储库时,您需要从中拉出并进入私有存储库,然后合并。
您的存储库将如下所示:
Contractor: ---97---98---99---100---102---103---104
M M
Private: ---91---92---93---94---95---96---101---105---106---107
/ /
/ /
---97---98---99---100---102---103---104
上面带有 M 的两个变更集是将承包商提供的代码合并到您的私有存储库中的合并变更集。
请注意,您也必须将代码提交到承包商存储库,以便在那里处理和修复代码中的错误,但您可以保留所有私有位。