在Subversion中存储文件的描述

时间:2013-08-16 12:16:55

标签: svn tortoisesvn

我收到了许多客户的请求,要求提供完整的文件列表以及每个文件的功能(包括业务逻辑的简短描述)。这构成了他们需要的发行说明的一部分。

我们开发ASP.NET网站并使用 VisualSVN Server 来管理Subversion以及 TortoiseSVN 作为客户端。我已经配置了一个预提交挂钩,强制开发人员在尝试提交时添加文件更改原因的描述。但是,这特定于文件的修订。

我需要做的是存储文件内容的描述,第一次将文件添加到SVN时需要添加。我无法通过TortoiseSVN找到任何这样的领域。

如果我不能在Subversion中执行此操作,则意味着使用电子表格!

2 个答案:

答案 0 :(得分:3)

您可以将自己的自定义SVN属性添加到每个文件中:

  

svn propset filedescription'这个文件描述了Foo'src / Foo.cs的功能

然后,您可以编写一个工具,为每个文件读取此属性并为您构建文档,使用:

  

svn propget filedescription src / Foo.cs

在TortoiseSVN中:右键点击结帐-> TortoiseSVN -> 属性中的文件。

TortoiseSVN context menu

然后,新... -> 高级,并在添加属性窗口中添加自定义属性:< / p>

Adding a custom property to Foo.cs

结果:

Sample result

希望这有帮助。

答案 1 :(得分:1)

  

有没有办法自动将自定义属性添加到每个文件?我不想依赖人们记住这样做。

是,不......

您可以在个人Subversion配置中创建自动属性。这将在该用户添加时自动创建特定文件的属性。但是,这是不可执行的。

我的pre-commit hook可以强制执行特定媒体资源的用户。

[property All files must have a site:description property on them]
match = .*
property = site:description
value = .+
type = regex

这会阻止某人提交没有设置属性site:description的文件。

你使用这个钩子, 让用户知道他们如何setup auto-properties in their Subversion configuration。预提交挂钩将作为温和的提醒,开发人员需要在他们的Subversion配置中设置自动属性设置。

(顺便说一下,我的钩子也可以验证是否存在提交描述,甚至可以验证描述的格式。)


现在谈谈重要的一点......

  

我已经配置了一个预提交挂钩,强制开发人员在尝试提交时添加文件更改原因的描述。

您是否鼓励开发人员逐个文件提交?

Subversion使用更改集。例如,我可能会通过更改六个文件来添加新功能。这应该在一次提交中提交。并且,提交消息适用于所有这6个文件。

提交消息可以是多行,并且许多开发人员都是这样做的,因为他们想要描述对每个文件所做的更改。没关系。我坚持的是更改的一般原因,并且通常与我们的问题跟踪系统中的特定问题ID相关。我想看看“BUG-1233:密码现在存储为编码字符串,不再是明文”。 23个文件可能已被更改,两个文件被删除,并添加了四个新文件,但所有这些更改都是针对这一个修复,这就是我想要看到的。开发人员可以详细查看29个文件更改中的每一个,并使提交消息长达60多行。我只想查看与特定功能或错误相关的更改原因。

这样,我可以使用提交消息来查看我们的代码中解决了哪些问题,如果在测试过程中出现问题,我可以退出更改。

  

有没有办法自动将自定义属性添加到每个文件?我不想依赖人们记住这样做。

您强制开发人员描述每个文件的用途,然后想给他们一个自动生成默认描述的方法吗?您知道开发人员只会使用默认描述并且永远不会更改它吗?正确?


附加答案

TortoiseSVN中有一种方法可以创建客户端钩子。我从来没有这样做过,但是用户可能会创建一个客户端钩子来打开一个对话框,这样他们就可以输入文件的描述。

这只适用于Tortoise,仅适用于该特定机器。但是,您可以将它与我的预提交钩子结合使用,并向开发人员展示如何创建Tortoise客户端钩子(在服务器的预提交钩子之前执行)。这样,他们的TortoiseSVN钩子将帮助他们填写描述,我的服务器预提交钩子将确保他们不会。