如何创建SVN提交信息模板和钩子以进行验证

25
我正在使用Visual SVN服务器和Tortoise SVN(客户端)进行源代码控制。我希望所有开发人员都能统一提交说明的格式。
例如,我希望他们的提交消息默认为...
概要:
开发人员姓名:(预填) 审核人员:
[Bug Id]:
[更改Bug状态]:
已知问题:
受影响文件:(预填) 在将来,我希望[Bug Id]和[Bug State]提供信息以触发对Bug跟踪系统的自动更新。同时,开发人员姓名和受影响文件应该是预填的svn用户和用户提交的文件。
请发送您可能拥有的任何链接或示例。

11
“Affected Files”和“Developer Name”不应该出现在提交信息中,因为它们已经可靠地包含在内置的提交元数据中。 - Kevin Reid
4个回答

33

摘自如何创建Tortoise SVN提交模板(修改以适应更多当前版本):

日志模板可以根据项目要求进行定制,并可用于实施严格的日志格式。

将其添加到svn存储库很容易:

  1. 选择要应用此项的SVN文件夹,转到Subversion属性(右键单击TortoiseSVN -> 属性

  2. 选择New -> Advanced,然后从名为Property name的下拉列表中选择tsvn:logtemplate

  3. 将上面的模板(或您自己定义的模板)添加到组合框下方的文本区域中。

  4. 如果您想将该属性应用于当前文件夹以下层次结构中的每个文件和文件夹,请勾选Recursive复选框。

  5. 单击确定将该属性添加到列表中。

  6. 签入所有文件夹和文件,以便您团队中的每个人都可以使用相同的模板。


5
有些难以找到,但这在四年后也是可以预料的 :) 我使用以下方法找到了它:右键点击文件夹 -> 属性 -> 新建... -> 高级 -> 属性名称:tsvn:logtemplate -> 输入属性值 -> 确定 -> 确定。递归选项似乎并不重要,无论是应用还是删除此模板化属性值。非常感谢adrainbanks(即使四年过去了!)。 - Keith DC
递归选项仅在您不检出根文件夹(其中仅设置了属性)时才有影响。所有 tsvn 属性都是客户端属性,因此读取属性时不会与服务器进行通信。 - mliebelt
链接失效。新链接:https://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-propertypage.html - Jeff Walker

4

1

或者,为了进一步提高 SVN_EDITOR 的舒适度(例如,在必须使用 SvnBridge 的情况下正确链接到 TFS 工作项),可以将以下脚本存储为 ~/bin/svn_editor:

#!/bin/sh

template_file="${@}"
template_file_new="${template_file}.new"

current_work_item_number_file="${HOME}/tfs_work_item_number_current.txt"
[ -f "${current_work_item_number_file}" ] && work_item=$(cat "${current_work_item_number_file}") || work_item="please fill in!"

# Yes folks, this is the TFS convention (hard, NOT-TO-BE-ALTERED text)
# to properly link to work items via SvnBridge commits!
work_item_prefix_hard_tfs_convention_text="work item: "

work_item_text="${work_item_prefix_hard_tfs_convention_text}${work_item}"

custom_text="${work_item_text}\n\n[this addition above initially placed to ignored content part here,\nto ensure properly abortable empty message by default - please move it to active content as needed]"

sed -e 's/\(will be ignored--\)/\1\n'"${custom_text}"'/' "${template_file}" > "${template_file_new}"

mv -f "${template_file_new}" "${template_file}"

$EDITOR "${@}"

然后只需执行

export SVN_EDITOR=~/bin/svn_editor

在~/.bashrc或类似位置。 如果能够从Firefox TFS Web界面中当前工作项页面更新工作项编号文件,那就更好了(我认为可能有一种方法可以与Firefox通信以获取页面标题等)。 或者只需让此脚本在持久化的工作项文件上启动第一个初始编辑器运行,然后再在自定义提交模板上进行第二个编辑器运行。


1
我是通过以下步骤找到它的: 右键点击文件夹 -> 属性 -> 新建... -> 高级 -> 属性名称: tsvn:logtemplate -> 输入属性值 -> 确定 -> 确定。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接