暂时锁定git存储库

sch*_*ess 10 git

你知道是否有办法阻止提交到本地git存储库?在我的构建环境中,我正在通过它运行一些git命令,如果用户在构建期间进行提交,它会中断.

我想在构建正在进行时锁定存储库,然后在构建完成时解锁.

谢谢!

Tod*_*obs 5

长话短说

这不是与 Git 兼容的工作流程。如果您想要具有锁定功能的 SCM,请使用其他具有集中存储库模型的东西。一些支持可选锁的 SCM 包括SVNCVS和 RCS。

不要推送到非裸存储库

除非您使用配置为启用core.sharedRepository的共享存储库,否则您应该推送到裸存储库并运行任何持续集成或从非裸克隆构建系统。根据定义,任何共享存储库都可以由具有必要权限的任何人修改工作目录,因此如果您需要确保某些进程的生命周期内有稳定的工作目录,则不应使用共享存储库。

共享存储库模型当然有一些用例。然而,你的不是其中之一。

使用信号量滥用共享存储库

您当然可以设计自己的脚本来滥用共享存储库模型。例如,您可以使用信号量文件(例如由lockfile-progs包中的lockfile创建的信号量文件)或在包装器脚本中使用集群,该脚本会在启动某些长时间运行的构建过程之前关闭共享目录的写入或执行权限。这是大量的工作,但回报却很小,因为使用克隆可以用更少的工作获得相同的好处。不过,这在技术上可行的,所以我在这里提到它是为了完整。


Tzu*_*ong 5

查看 .git/hooks/pre-commit.sample。通过操作这个钩子,您应该能够禁用远程或本地 git 存储库上的提交操作。


SLa*_*aks 1

您应该克隆存储库并在分支中完成您的工作。
本地磁盘上的分叉可以使用符号链接来节省时间和空间。

Git 没有任何锁的概念。