预先为svn挂钩以修改要在c#中提交的文件

时间:2010-02-10 05:22:17

标签: c# tortoisesvn

我希望在将它们提交到存储库之前以某种方式进行修改(实际上格式化代码格式化程序中的文件)。 我从Precommit example(使用guest作为名称和没有密码)中发现了如何在python中编写。但我想知道的是如何获取要提交的文件列表以及此处采用的其他命令行参数。我更喜欢的是在C#而不是Python或任何其他脚本中编写我自己的预提交钩子。

几点 我将编写一个将格式化的exe,但我想要提交的文件列表 如何使用svn。

进行配置

4 个答案:

答案 0 :(得分:10)

预先修改提交文件的钩子被认为是“坏事”:

http://svnbook.red-bean.com/en/1.5/svn.reposadmin.create.html#svn.reposadmin.create.hooks

这个想法在SVN官方文档中有一个很大的红色框,并警告说这会影响SVN客户端以错误方式处理存储库的方式。

答案 1 :(得分:3)

传递给预提交钩子脚本的第一个参数是文本文件的路径。该文本文件包含要提交的所有路径,由换行符分隔。

但是对于您的情况,您最好使用start-commit钩子:在提交开始之前调用该脚本,但在用户选择要提交的文件/文件夹之后。在用户在提交对话框中单击“确定”之后,在实际提交开始之前,将调用start-commit脚本。这个钩子有一个确切的提交列表。

答案 2 :(得分:1)

首先,我认为这是一个坏主意。为什么要在提交之前更改代码?在我看来,检查代码格式/标准违规并中止提交要好得多。如果我的代码在提交期间被更改,我会非常沮丧。

要回答您的具体问题,请使用svnlook changed获取已更改文件的列表。 svnlook dirs-changed将为您提供受待处理事务影响的目录。

答案 3 :(得分:1)

正如您可能已经阅读过的那样,a hook in subversion只是一个程序,在some parameters and a return value的提交过程中的特定时间调用。您可以将任何可运行的程序放在钩子目录中。所以你也可以在那里放置任何.exe(也可以是.Net程序)。然后检查命令行参数并执行任何您喜欢的操作,并将任何int值作为errorlevel返回。

在您的应用程序中,您可以使用SharpSVNanything else轻松访问存储库以进行任何检查并将结果发送给用户。

相关问题