使用 C# 的 Git 服务器端挂钩

使用 C# 的 Git 服务器端挂钩

使用 subversion 和 VisualSVN,我能够使用 c# 将 .net 二进制文件作为钩子并构建程序集。您只需将一个名为 Post-Commit.exe 的文件放入钩子文件夹中即可。

我猜测是因为 git 是通过 cygwin 运行的,而且基本上是通过 linux 类型的 vm 运行,所以它必须是一个可以在 linux 上运行的可执行文件?

我选择 c# 和 .net 二进制文件的原因是这是我使用的主要编码语言,并且它可以更轻松、更快速地完成我想要做的事情。

实际上,Subversion 所做的是,在有人向存储库提交内容后,它会检查存储库的主干文件夹是否已更新,如果已更新,则转而检出存储库的副本(如果已检出,则更新)。然后,它会运行一个在网络上找到的免费程序,名为 ftpsync,该程序将存储库与 Web 服务器同步。(实际上,它只检出了视图文件夹,而不是代码文件,它们是 mvc.net 站点)我不确定我是否可以切换到 git,因为它看起来不像 Subversion 那样成熟,至少在 Windows 平台上是这样。我看过 GitSharp,但那似乎需要做很多工作,而且真的不是生产代码。

这是一个想法,因为我不需要让人们访问网络服务器来让他们进行更新,我所要做的就是让他们访问 Subversion 项目的主干文件夹,它还迫使开发人员使用版本控制系统,而不是绕过它并直接更新网络服务器。

感谢您的帮助或指导

另外,正如其他人所指出的,ftpsync 是一个 Windows 可执行文件,它作为单独的线程从 .net 二进制文件运行,这样您就可以从对 subversion 的提交中获得响应,而无需等待 ftpsync 程序完成,因为有时它可能需要一段时间。

答案1

为什么不在您的网络服务器上进行结帐,将您的中央服务器设置为原点/主服务器,然后git pull通过 cron/scheduled 任务执行?

显然,您应该在原点上使用仅具有只读访问权限的用户,并将您的网络服务器配置为.git以某种方式拒绝对目录的访问(htaccess 或通过文件权限)。

相关内容