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

Get the Author name of file which is being committed in SVN

我试图获取在 SVN 中提交的文件的作者姓名。我知道代码应该写在预提交钩子中。

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

  1. SVN 信息"Repos_Path"
  2. svnlook 作者"repos_path"

我什至无法获取正在提交的文件的修订号。如果我能得到修订号,那么我就能得到作者姓名。

那么,是否有任何可能的方法来获取正在提交的文件的作者姓名或修订号?

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

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

Read SVNBook!

编辑:

你说 "It is not showing any exception and not giving any output" 这完全是预料之中的,因为事务是在提交过程中生成的,如果提交被接受并成功完成,Subversion将根据此事务生成新的修订版。我指定的命令示例应该在钩子脚本中进行调整和使用。

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

我没有在提交前编写代码,而是在开始提交挂钩中编写了代码。其中,我们可以得到如下四个参数:

   [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

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