我们使用 git 作为小型开发团队的 VCS。我将我们服务器上的主存储库作为一个裸 git 存储库。
管理层和未参与项目的人员需要能够在不了解 git 的情况下查看代码和文档,因此我还在我们的服务器上保留了一个克隆以供浏览。为了使克隆保持最新,我安装了一个钩子,每当有人提交到裸存储库时,它都会更新克隆的主分支。
问题来了:一些笨蛋总是进入浏览克隆并开始修改代码,这导致主分支推送操作失败。我想找出一种方法来对这个克隆强制执行只读策略,或者找出另一种保持最新状态的方法。
我们使用 git 作为小型开发团队的 VCS。我将我们服务器上的主存储库作为一个裸 git 存储库。
管理层和未参与项目的人员需要能够在不了解 git 的情况下查看代码和文档,因此我还在我们的服务器上保留了一个克隆以供浏览。为了使克隆保持最新,我安装了一个钩子,每当有人提交到裸存储库时,它都会更新克隆的主分支。
问题来了:一些笨蛋总是进入浏览克隆并开始修改代码,这导致主分支推送操作失败。我想找出一种方法来对这个克隆强制执行只读策略,或者找出另一种保持最新状态的方法。
处理这些情况的最好方法是与有问题的傻瓜好好谈谈。
否则,最简单的方法是简单地使用操作系统的权限系统,这样文件对所有人都是只读的,除了从裸存储库更新它的脚本。
在从裸仓库中提取之前,您还可以重置 --hard和git clean -f 。
(哎呀,对不起,剧本把 2 周的工作抹去了吗????)
为什么不简单地通过gitweb、cgit或其他一些基于 HTTP 的存储库浏览界面提供访问权限?
没有办法使 git clone 只读。有两种解决方法可以达到类似的效果。
一种方法是更改文件和文件夹的权限,使它们为只读。
我能想到的另一种方法是在服务器上使用权限系统。
您可以使用gitolite允许使用存储库对特定用户/组进行读写或只读访问。
这里有其他git管理软件的列表:https ://git.wiki.kernel.org/index.php/Interfaces,_frontends,_and_tools#Access_control_.2F_Project_hosting