两个 repo 的情况下(一个开源一个闭源)如何更简单的管理隐私文件?

2019-04-10 03:48:26 +08:00
 SharkIng

不知道有没有人这么做过,就是公司级别开源程序中,公司想同时维护一个 public repo 和一个 private repo:

那么在这种情况下如何更简单的维护这两个 repos 呢?

现在能想到的办法:

还有没有什么别的办法?

1311 次点击
所在节点    问与答
10 条回复
Trim21
2019-04-10 04:04:29 +08:00
submodule ?
msg7086
2019-04-10 04:08:43 +08:00
程序文件做成 submodule,然后 private 和 public 里存放必须的文件,然后引入 submodule。

其实也很麻烦的。建议还是不要把秘密放在 repo 中。
stcheng
2019-04-10 04:15:48 +08:00
提供一个思路,在 public 和 private 分别有两个一样的 repository,private 的 repo 下的其中几个 commit 是 secret files 和 internal features。每次 public 和 private 的 pull request 分开 review,internal 的所有 commit 都 rebase 在 public 的 commit 上。每次 public 有更新,internal 就做一个 rebase update 然后再 force push 到 internal 的 branch 上。
SharkIng
2019-04-10 05:30:06 +08:00
@Trim21
@msg7086 其实有考虑到 submodule 但是总体觉得可行,但的确麻烦,submodule 也不是这么用的 :P
不过实在不行的情况下可能会这么处理


@stcheng 这个思路我研究下,大体情况是我们不想有任何 force push 的情况,另外就是非必须情况下尽量不用 rebase
stcheng
2019-04-10 06:08:43 +08:00
一开始我也是考虑用 submodule 的,但是问题在于很多时候有超出 secret files 的 change,比如同一个文件 public 和 internal 会有区别,这样就无法使用 submodule 区分开来。我们现在在生产环境中这样做基本没有碰到太大的问题,相对来说 public 的 commit 更容易 maintain。
xiaket
2019-04-10 09:11:41 +08:00
即使是 private repo 也不应该用来放 secret.
SharkIng
2019-04-11 13:31:10 +08:00
@stcheng #5 对,是的,如果同一个文件需要不太一样的内容就没办法了。所以您现在是怎么处理 Public 和 Private 的?


@xiaket #6 也不完全是 secret,这个只是一个直观的说法。有很多情况下很多东西是不想开源的,但是又会备用到,不一定局限于密码和密钥,还有可能是部分内部的 method 或者配置文件等。
networm
2019-04-11 16:24:51 +08:00
可以考虑将密码、密钥、配置文件等放在构建流程里,这样仓库可以不用区分公开与私有。
stcheng
2019-04-12 02:37:35 +08:00
private 的 repository 像是一个 patching repository。大部分内容都在 public 开发和 review。但是需要专门对 private 的 repository 进行 rebase,没有 conflicts 的情况下再 force push,保证 private repository 的最顶端都是 up-to-date 的 patch commits sit on top of the current master of public branch。secrets file 基本上都是 Ansible secrets,不存在任何 repository 里面。private repository 存放无法开源的 feature 和 internal 的 system/lab environment setup。

因为一般来说大部分还是开源的,所以 maintain private repository 的 work load 不是特别重。
SharkIng
2019-04-12 11:47:47 +08:00
@stcheng #9 好的了解了,谢谢,我们试试

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/553559

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX