我们可以使用svn钩子更改默认的svn提交模板吗

我们可以使用svn钩子更改默认的svn提交模板吗,svn,svn-hooks,Svn,Svn Hooks,我主要想在执行svn提交时动态更改默认提交模板(svn commit.tmp)。 我从论坛上得知,设置SVN_编辑器会有所帮助 setenv SVN_EDITOR "rm svn-commit.tmp && cp $REPO/hooks/log.tmpl svn-commit.tmp && emacs" 但是,只有当用户在其用户环境中如上所述设置SVN\u编辑器时,才会发生这种情况。 那么,在执行svn提交时,是否有其他明确的方式可以从不同的位置而不是默认位置打

我主要想在执行svn提交时动态更改默认提交模板(svn commit.tmp)。 我从论坛上得知,设置SVN_编辑器会有所帮助

setenv SVN_EDITOR "rm svn-commit.tmp && cp $REPO/hooks/log.tmpl svn-commit.tmp && emacs"
但是,只有当用户在其用户环境中如上所述设置
SVN\u编辑器时,才会发生这种情况。
那么,在执行svn提交时,是否有其他明确的方式可以从不同的位置而不是默认位置打开模板文件。提交模板将更加特定于存储库和提交日期。那么,有没有一种方法可以在svn存储库上设置一些属性来调用不同的提交模板呢。
我应该对所有人强制执行它(特定于存储库),它不应该像设置SVN_编辑器那样是特定于用户的。即使我们正在设置
SVN\u编辑器
,当我们通过调用一些钩子进行SVN提交时,也可以调用此设置。我知道只有在提交提交后才会调用提交前和提交后挂钩


我们只使用svn命令客户端。

根据您必须使用的subversion客户端,有两种可能的方法:

  • 陆龟:使用客户机钩子实现此目的
  • SVN命令客户端:使用shell脚本和一些SVN属性
陆龟客户端钩子 当您查看TortoiseSVN帮助中的“客户端钩子脚本”一章时,您将发现以下部分:

开始提交

在显示提交对话框之前调用。如果钩子修改版本文件并影响需要提交的文件列表和/或提交消息,则可能需要使用此选项。但是,您应该注意,因为钩子是在早期阶段调用的,所以选择提交的对象的完整列表不可用

钩子具有以下参数:

  • 路径:临时文件的路径,其中包含启动操作的所有路径。每个路径都在临时文件中的单独一行上
  • MESSAGEFILE:包含提交日志消息的文件的路径。该文件包含UTF-8编码的文本。在成功执行start-commit钩子之后,日志消息被读回,给钩子一个修改它的机会
  • CWD:运行脚本的当前工作目录。这被设置为所有受影响路径的公共根目录
因此,您可以根据目录实现一个小脚本来更改svn提交模板。但是,您必须注意如何部署客户机钩子,因为每个用户都必须自己安装它们

SVN命令客户端脚本和SVN:模板文件属性
  • 定义一个shell脚本,该脚本将在内部调用真正的subversion命令
  • 在具有有用名称的目录(如
    模板文件
    )上定义svn属性,并从起始目录向上搜索设置了该svn属性的目录
  • 使用found属性作为文件名来查找内容(可能应该是URL,因此不需要在本地安装这些模板)
  • 如果未找到任何模板,请使用默认模板

  • 但是,您还必须在客户端上安装该脚本。Subversion中没有允许使用不同模板而无需在客户端上进行额外安装的机制。

    根据您必须使用的Subversion客户端,有两种可能的方法:

    • 陆龟:使用客户机钩子实现此目的
    • SVN命令客户端:使用shell脚本和一些SVN属性
    陆龟客户端钩子 当您查看TortoiseSVN帮助中的“客户端钩子脚本”一章时,您将发现以下部分:

    开始提交

    在显示提交对话框之前调用。如果钩子修改版本文件并影响需要提交的文件列表和/或提交消息,则可能需要使用此选项。但是,您应该注意,因为钩子是在早期阶段调用的,所以选择提交的对象的完整列表不可用

    钩子具有以下参数:

    • 路径:临时文件的路径,其中包含启动操作的所有路径。每个路径都在临时文件中的单独一行上
    • MESSAGEFILE:包含提交日志消息的文件的路径。该文件包含UTF-8编码的文本。在成功执行start-commit钩子之后,日志消息被读回,给钩子一个修改它的机会
    • CWD:运行脚本的当前工作目录。这被设置为所有受影响路径的公共根目录
    因此,您可以根据目录实现一个小脚本来更改svn提交模板。但是,您必须注意如何部署客户机钩子,因为每个用户都必须自己安装它们

    SVN命令客户端脚本和SVN:模板文件属性
  • 定义一个shell脚本,该脚本将在内部调用真正的subversion命令
  • 在具有有用名称的目录(如
    模板文件
    )上定义svn属性,并从起始目录向上搜索设置了该svn属性的目录
  • 使用found属性作为文件名来查找内容(可能应该是URL,因此不需要在本地安装这些模板)
  • 如果未找到任何模板,请使用默认模板

  • 但是,您还必须在客户端上安装该脚本。Subversion中没有允许使用不同模板的机制,而无需在客户端上进行额外安装。

    这里是我创建的一个模板。如果存在,它会尝试使用TortoiseSVN模板,否则会在全局Git配置中查找模板文件,否则会返回到内置模板

    请注意,使用标准的TortoiseSVN模板属性并不意味着您必须