这是关于在Subversion提交上显示警告消息(最好是对话框)。
基本上我们想要的是在修补程序或其他版本中,当开发人员尝试提交任何更改时。
是否可以在Subversion提交上实现这样的挂钩?
另外,我们如何在分支上设置一些标志,表明目前正在进行补丁?
答案 0 :(得分:2)
是否可以在svn commit上实现这样的钩子?
没有。您可以在预提交挂钩中启用|禁用提交,但仅限于非交互模式
如何在分支上设置一些标志,表明目前正在进行补丁?
您可以在任何(常规)位置使用任何(常规)自定义属性(最佳位置,可能是 - branch-root),并在预提交挂钩中检查此属性的值。
第二个属性可能表示收到批准(明文属性是个坏主意,可能会很容易被利用,你必须有安全的方式/ PGP | S / MIME签名?/)
答案 1 :(得分:2)
您无法以交互方式处理提交。这是因为预提交挂钩在服务器而不是客户端上运行。您所能做的就是为提交提供竖起大拇指或竖起大拇指。也就是说,你允许它,或者你不允许它。您可以在预提交挂钩中将内容发送到STDERR,并将其发送到客户端,但前提是预提交挂钩未通过提交。
如果要在此修补期间控制提交,则需要预提交挂钩。 I have one非常灵活。您可以轻松更改权限以防止某些用户在这些时间内执行提交,并提供错误消息,说明您拒绝该提交的原因。
你可以在控制文件中使用这样的东西:
[group PATCH_USERS]
users = bob, ted, carol, alice
[file The 2.3 branch is currently closed due to patching. Branch will be open in 2 hours]
file = **/branch/2.3/**
access = read-only
users = @ALL
[file The 2.3 branch is currently closed due to patching. Branch will be open in 2 hours]
file = **/branch/2.3/**
access = read-write
users = @PATCH_USERS
通过此设置,只有bob
,ted
,carol
和alice
可以更新2.3分支。所有其他用户将收到由于修补而关闭分支的消息。
答案 2 :(得分:0)
如果你正在使用TortoiseSVN,那么你可以使用它的client-side hook scripts来完成这项任务。
在您的情况下,编写预提交钩子脚本。如果补丁正在进行中,您的脚本可能会以某种方式检查您设置的标志,然后才拒绝提交。 您不必在脚本中显示对话框,只需拒绝提交。然后TSVN会显示一个名为“re without without hooks”的按钮,这样你就可以绕过钩子脚本了。
Here's一个预提交客户端钩子脚本的例子,TSVN项目用它来检查每个源文件是否在头文件中有正确的cp-year。