10

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

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

谢谢!

4

3 回答 3

3

TL;博士

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

不要推送到非裸存储库

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

共享存储库模型肯定有一些用例。但是,您的不是其中之一。

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

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

于 2013-08-12T18:28:09.280 回答
3

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

于 2017-09-13T17:08:43.187 回答
1

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

Git 没有任何锁的概念。

于 2013-08-12T16:42:24.933 回答