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

Source control systems allowing partial branching

这本来是,但在发现我们的要求不被支持后,我正在寻找替代品。

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

我已经能够在 perforce/SourceDepot VCS 中实现相同的目标,但是我想看看我们还有哪些其他选择。

最大的优点是能够从 bitbucket 迁移历史记录。另一个很大的优势是一些(甚至是自定义的)用于浏览的 http 托管的能力 codes/history 可以与 JIRA 集成(就像 bitbucket/git 那样)。

这是我想要实现的示例:

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

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

编辑:

似乎可以通过结合两件事在 mercurial 中实现该场景 - convert extension plus the subrepos feature

转换部分需要遵循 filemap.txt:

include publicFolder

和以下转换命令:

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

下一步是从 Repo1 中删除 publicFolder 并最终在这两个回购协议之上创建精简子回购协议 shell(以如果需要,可以将它们视为一个存储库。

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

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

在此处查看多个软件仓库设置: http://answers.perforce.com/articles/KB/2437

您需要一个每个人都可以访问的 //public depot 和一个只有少数人可以访问的 //restricted depot。

然后根据权利,人们将能够创建一个工作区

//public/...
//restricted/...

或仅

//public/...

Another big plus would be ability of some (even custom) http hosting for browsing codes/history that would have some ability to integrate with JIRA (as bitbucket/git does).

Perforce 有某种名为 P4Web 的网络界面。我自己没有使用过它,从我简单看到的情况来看,它看起来有点过时并且很快 Google 告诉我它不再受支持。

另一方面,适用于任何 SCM 的肮脏解决方案是将库的二进制文件提交到 public 存储库。这样你就可以混淆源代码了。 (那在一定程度上还是可以拆解的)

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

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

或多或少是对 指定的 任务(分离和聚合)的显着和广为人知的迭代(你 来写,为什么这是错误的或者他们失败了)