77

我们是一个由 60 多名开发人员组成的团队,致力于同一产品,并且正在从 SVN 迁移到 Git 和 GitHub。我们在 SVN 中有一个进程,其中单个文件被锁定,每当开发人员想要提交代码时,他需要由文件所有者解锁它。我们三个人是总共 150 多个文件的所有者。解锁之前是代码审查。

在 Github 中,我们计划使用 Fork-Clone 模型 - 一组开发人员正在处理的每个项目都会进行一次 fork,每个开发人员将进行一次 fork 的克隆,编写代码并提交到 origin,领导功能将向上游发出拉取请求。

虽然这看起来很好,但问题是当一个大项目交付时,它会带来许多需要审查的更改,因此增加了文件所有者的负担。此外,这可能发生在后期的开发周期中,因此项目可能会受到威胁。

我们认为可能有效的一种方法是在 git push 到原点(fork)时使用钩子。可以有一个最终审查 git pull 到上游。

但是,我们找不到任何 github 扩展或相同的推送挂钩。有没有一种快速的方法(阅读,现有的扩展)可以用 Github 做到这一点,还是我们应该使用与 git 相同的钩子?

4

7 回答 7

96

没有机会,如果文件不可合并并且您需要锁定它,请使用集中式解决方案而不是 GIT,即 SVN 或 ClearCase。

于 2015-12-18T09:58:30.357 回答
41

如果您正在使用git LFS(一些 git 托管服务提供商支持,例如 GitHub),您可以使用File Locking

通过编辑文件将文件类型标记为可锁定.gitattributes

*.docx lockable
# Make MS Word files lockable

并将其锁定:

$ git lfs lock example.docx

您可以git lfs unlock example.docx通过添加来解锁您和其他人的文件--force

于 2018-02-21T12:30:56.977 回答
5

这个有可能。git-lfs 2.0 引入了锁定文件的功能:请参阅以下链接:https ://github.com/git-lfs/git-lfs/wiki/File-Locking 。从 TFS 2017.2 开始提供对此功能的支持:https ://docs.microsoft.com/en-us/vsts/release-notes/ 。

于 2019-04-23T12:42:56.747 回答
3

不完全是锁定,但 Github 引入了一个名为“代码所有者”的概念。允许您将部分代码库限制为仅在代码所有者审查后允许提交

于 2018-07-09T06:07:58.040 回答
3

您可以使用 LFS 并且可以锁定单个文件,或者将文件添加到 .gitattributes 文件中,

https://github.com/git-lfs/git-lfs/wiki/File-Locking

于 2020-05-10T17:00:52.020 回答
2

Git 不提供任何锁定功能,因为它是分散的。但是,如果您将代码托管在GitLab Enterprise Edition Premium上,则可以使用 Web 界面锁定单个文件或文件夹,从而完全实现您想要做的事情。

如果您不想在其他人的服务器(他们的网站)上托管您的项目,您也可以下载 GitLab 并将其托管在您自己的网络服务器上。

于 2017-05-12T22:07:37.130 回答
-27

这个用例是 Git 比 SVN 好得多的原因之一 --> rebase!如果您遵循良好的 git 工作流程,您可以在提交拉取请求之前从上游进行 rebase。您无需担心文件锁定和踩踏其他人的提交和合并冲突等...... rebase 将您的工作放在一边,应用远程提交,然后将您的工作应用到上面。

我认为这只是需要重新考虑您的流程并依靠 git 的优势而不是强制在 git 之上安装 Subversion 工作流程。您的“分叉克隆”模型可能还需要另一种外观。大多数情况下,每个开发人员都有自己的分支,如果需要,您可以通过远程在团队之间共享存储库。但是共享同一来源的贡献者会养成一些坏习惯。

Gitflow是一个非常流行的 git 工作流程,Github 自己也有一些不错的技巧并分享他们的工作流程

于 2013-02-13T22:10:08.010 回答