0

I have requests from a number of my clients to supply a full list of files and what each of the files do (including a short description of business logic). This forms part of the release notes that they require.

We develop ASP.NET websites and use VisualSVN Server to manage Subversion plus TortoiseSVN as a client. I have configured a pre-commit hook to force developers to add a description of why a file changed when they are trying to commit. However, this is specific to a revision of a file.

What I need to do is store a description of what the file does, it would need to be added the first time a file is added to SVN. I can't find any such field through TortoiseSVN.

If I can't do this in Subversion it means using a spreadsheet!

4

2 回答 2

3

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

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

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

svn propget 文件描述 src/Foo.cs

在 TortoiseSVN 中:右键单击检出-> TortoiseSVN -> 属性中的文件。

TortoiseSVN 上下文菜单

然后,New... -> Advanced,并在Add Properties窗口中,添加您的自定义属性:

向 Foo.cs 添加自定义属性

结果:

样本结果

希望这可以帮助。

于 2013-08-16T13:17:39.173 回答
1

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

是的和不...

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

我的预提交挂钩可以强制用户使用特定的属性。

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

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

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

(顺便说一句,我的钩子还可以验证是否有提交描述,甚至可以验证描述的格式)。


现在进入重点...

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

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

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

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

这样,我可以使用提交消息来查看我们的代码中解决了哪些问题,如果更改在测试期间引起问题,我可以撤销更改。

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

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


附加答案

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

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

于 2013-08-16T14:38:54.903 回答