允许部分分支的源控制系统

时间:2015-11-04 08:23:42

标签: git version-control branch perforce dvcs

这最初是a question targeting git/bitbucket,但在找不到我们的要求后,我正在寻找替代方案。

我们有一个主代码库,其中包含一些“机密”库。我们需要一种方法来创建分支或分支用于调查目的(对于非现场工作人员),不包含所选的机密文件,但对于所有其他文件,仍然可以推送,拉动,查看整个历史记录。

我已经能够在perforce / SourceDepot VCS中实现相同的功能,但我希望看到我们的其他选择。

Big plus是一种从bitbucket迁移历史记录的能力。另一个重要的优点是一些(甚至是自定义的)http主机能够浏览代码/历史记录,这些代码/历史记录可以与JIRA集成(如bitbucket / git那样)。

以下是我想要实现的一个例子:

Repo1(main):
 |-publicFolder
    |-file1
    |-file2
 |-privateFolder
    |-fileA
    |-fileB

Repo2(investigation):
 |-publicFolder
    |-file1
    |-file2

修改

看来这种情况可以通过组合两件事来实现 - convert extension加上子事件功能suggested by Lazy Badger

转换部分需要跟随filemap.txt:

include publicFolder

并跟随转换命令:

hg convert --filemap filemap.txt path/to/local/Repo1 path/to/local/Repo2

下一步是从 Repo1 中删除 publicFolder ,最后在这两个repos上方创建精简子shell(如果需要,可以将它们视为单个存储库)

2 个答案:

答案 0 :(得分:2)

  • SVN外部
  • Git中的子模块
  • Mercurial中的子目录

指定的任务(分离和聚合)的或多或少值得注意和众所周知的迭代(你写,为什么它错了或者它们失败了)

答案 1 :(得分:1)

Perforce允许拥有一个工作区,即工作副本,配置来自多个软件仓库的文件。

然后,您可以对不同的软件仓库[0]拥有不同的访问权限。

请参阅此处的多个软件仓库设置: http://answers.perforce.com/articles/KB/2437

当少数人有权访问时,您需要一个//所有人都可以访问的公共软件仓库和一个受限制的软件仓库。

然后,根据权利,人们可以使用

创建工作区
//public/...
//restricted/...

或仅

//public/...
  

另一个重要的优点是某些(甚至是自定义的)http主机能够浏览代码/历史记录,这些代码/历史记录具有与JIRA集成的某些功能(如bitbucket / git所做)。

Perforce有一种名为P4Web的Web界面。我自己没有使用它,从我看到的内容看起来有点过时,谷歌快速告诉我它不再受支持。

另一方面,适用于任何SCM的脏解决方案是将库的二进制文件提交到公共存储库。这样你就可以对源代码进行模糊处理。 (这仍然可以在一定程度上被拆解)。

[0] Perforce仓库或多或少等同于其他SCM中的存储库。