我试图获取在SVN中提交的文件的作者姓名。我知道代码应该用pre-commit hook编写。
以下命令仅用于获取已提交文件的详细信息,而不是用于提交的文件。
我甚至无法获得正在提交的文件的修订号。如果我可以获得修订号,那么我可以获得作者姓名。
那么,有没有办法获取正在提交的文件的作者姓名或修订号?
答案 0 :(得分:1)
首先,您应该阅读SVNBook | Implementing Repository Hooks。该部分应回答您的所有问题。请仔细阅读。
在钩子脚本中,您应该使用svnlook author
命令。预提交钩子脚本将事务ID(TXN-NAME)作为%2参数传递,将存储库路径传递为%1参数。因此,为了捕获要提交的事务的作者姓名,请使用命令svnlook author "%1" --transaction %2
。
修改强>
你说"它没有显示任何异常并且没有给出任何输出" 这完全是预期的,因为事务是在提交过程中生成的,如果是提交被接受并成功完成,Subversion将根据此事务生成新的修订。我应该调整我指定的命令示例并在钩子脚本中使用。
如果您只想测试该命令,请使用--revision
代替--transaction
。例如,运行命令svnlook author <REPOS-PATH> --revision REVNUM
。 REVNUM
=存储库中的任何修订号。
答案 1 :(得分:0)
我没有在预提交中编写代码,而是在start-commit钩子中编写代码。其中,我们可以得到如下四个参数:
[1] REPOS-PATH (the path to this repository)
[2] USER (the authenticated user attempting to commit)
[3] CAPABILITIES (a colon-separated list of capabilities reported
by the client; see note below)
[4] TXN-NAME (the name of the commit txn just created
最后,我得到了这个最简单的答案。