具有不同文件权限的git clone

标签 git version-control mercurial sparse-checkout

在我们的服务器上,三个(实际上:数千个)文本文件存储在一个裸 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/

相关文章:

mercurial - 如何修复 "AttributeError: ' 模块“对象没有属性 'set_binary'”?

mercurial - 不小心只 rebase 了我的一个变更集

GitLab:有没有办法保护分支不受命令行影响?

android - 设置 phonegap 多平台项目存储库的最佳方式

github - 如何防止推送到 Github 中的私有(private)存储库

performance - 乌龟 Mercurial 慢

linux - 将 Git Push 保存到输出文件

git-archive 与 cp

sql-server - Team Foundation Server - Sql Server 版本管理

java - 从存储库同步中删除/bin文件夹