在提交时显示警告对话框

时间:2014-06-03 16:19:48

标签: svn tortoisesvn

这是关于在Subversion提交上显示警告消息(最好是对话框)。

基本上我们想要的是在修补程序或其他版本中,当开发人员尝试提交任何更改时。

  1. 应显示一条警告消息,指出"当前正在进行修补程序,只应提交具有预批准的更改。你想继续吗?"这应该有" Ok"和"取消"的按钮。
  2. 如果开发人员点击"确定"按钮,应该提交更改。否则,应取消提交操作。
  3. 是否可以在Subversion提交上实现这样的挂钩?

    另外,我们如何在分支上设置一些标志,表明目前正在进行补丁?

3 个答案:

答案 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

通过此设置,只有bobtedcarolalice可以更新2.3分支。所有其他用户将收到由于修补而关闭分支的消息。

答案 2 :(得分:0)

如果你正在使用TortoiseSVN,那么你可以使用它的client-side hook scripts来完成这项任务。

在您的情况下,编写预提交钩子脚本。如果补丁正在进行中,您的脚本可能会以某种方式检查您设置的标志,然后才拒绝提交。 您不必在脚本中显示对话框,只需拒绝提交。然后TSVN会显示一个名为“re without without hooks”的按钮,这样你就可以绕过钩子脚本了。

Here's一个预提交客户端钩子脚本的例子,TSVN项目用它来检查每个源文件是否在头文件中有正确的cp-year。

相关问题