【问题标题】:Get the Author name of file which is being committed in SVN获取 SVN 中正在提交的文件的作者名称
【发布时间】:2016-03-22 07:13:21
【问题描述】:

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

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

  1. SVN 信息“Repos_Path”
  2. svnlook 作者“repos_path”

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

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

【问题讨论】:

    标签: svn pre-commit-hook


    【解决方案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 = 存储库中的任何修订号。

    【讨论】:

    • @KathirSubramaniam 你应该调查它为什么不起作用。
    • 它没有显示任何异常,也没有给出任何输出。所以,我无法调查根本原因。
    • @KathirSubramaniam 不,你可以。我将更新答案。
    【解决方案2】:

    我没有在 pre-commit 中编写代码,而是在 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
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-06-20
      相关资源
      最近更新 更多