在我们的服务器上,三个(实际上:数千个)文本文件存储在一个裸 git 存储库中:A.txt、B.txt、C.txt。
- 用户“admin”应该查看/编辑它们。
- 用户“Foo”应该查看/编辑“A.txt”和“B.txt”,但不允许他查看“C.txt”的内容。
- 只应允许用户“guest”查看/编辑“A.txt”。
所有三个用户都应该能够使用他们的文件克隆 git 存储库 允许编辑。
有没有可能用 git(...或 mercurial)做这个?
想法:我可以使用稀疏 checkout 来克隆两个裸 git 存储库吗 git 为用户“Foo”和“guest”提供的功能只包括他们的文件 可以看吗?
还有其他(更快)的想法吗?
最佳答案
你应该:
- 拥有三个分支
- 访客(只有
A.txt
文件) - 用户(带有 A 和 B.txt 文件)
- 管理员(包括所有文件)
- 访客(只有
这意味着频繁 merge 以更新不同的分支并传播不同的修改。
加上 gitolite ,您可以控制谁可以 pull/推什么(在分支级别),这意味着:
- 访客只能 pull
guest
分支。 - foo 用户只能 pull
guest
分支和users
分支,同时能够推送users
分支(或两个分支,如果您希望用户更新guest
分支的内容)。 - 管理员可以 pull/pull 所有分支。
关于具有不同文件权限的git clone,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3513519/