获取SVN中提交的文件的作者名称

时间:2016-03-22 07:13:21

标签: svn pre-commit-hook

我试图获取在SVN中提交的文件的作者姓名。我知道代码应该用pre-commit hook编写。

以下命令仅用于获取已提交文件的详细信息,而不是用于提交的文件。

  1. SVN info" Repos_Path"
  2. svnlook author" repos_path"
  3. 我甚至无法获得正在提交的文件的修订号。如果我可以获得修订号,那么我可以获得作者姓名。

    那么,有没有办法获取正在提交的文件的作者姓名或修订号?

2 个答案:

答案 0 :(得分:1)

首先,您应该阅读SVNBook | Implementing Repository Hooks。该部分应回答您的所有问题。请仔细阅读。

在钩子脚本中,您应该使用svnlook author命令。预提交钩子脚本将事务ID(TXN-NAME)作为%2参数传递,将存储库路径传递为%1参数。因此,为了捕获要提交的事务的作者姓名,请使用命令svnlook author "%1" --transaction %2

Read SVNBook!

修改

你说"它没有显示任何异常并且没有给出任何输出" 这完全是预期的,因为事务是在提交过程中生成的,如果是提交被接受并成功完成,Subversion将根据此事务生成新的修订。我应该调整我指定的命令示例并在钩子脚本中使用。

如果您只想测试该命令,请使用--revision代替--transaction。例如,运行命令svnlook author <REPOS-PATH> --revision REVNUMREVNUM =存储库中的任何修订号。

答案 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

最后,我得到了这个最简单的答案。