Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何编写svn钩子脚本_Svn_Post_Hook_Commit - Fatal编程技术网

如何编写svn钩子脚本

如何编写svn钩子脚本,svn,post,hook,commit,Svn,Post,Hook,Commit,我试图为SvN编写一个POST提交钩子脚本,将知识库导出到Team Foundation Server。(因此,当您提交代码时,代码的最新版本将被复制到Team Foundation RePo) 只有我使用的语言是C++和C,而我从来没有编写过脚本。有人能给我一步一步的指导吗?使用哪种语言,阅读什么等等。。。可能还有一些示例代码 可以用C++编写钩子脚本吗?或者我应该学习如何使用python或ruby等 您可以在此处找到有关如何定义预提交挂钩的说明: post-commit的创建类似于该指令

我试图为SvN编写一个POST提交钩子脚本,将知识库导出到Team Foundation Server。(因此,当您提交代码时,代码的最新版本将被复制到Team Foundation RePo)

只有我使用的语言是C++和C,而我从来没有编写过脚本。有人能给我一步一步的指导吗?使用哪种语言,阅读什么等等。。。可能还有一些示例代码


<>可以用C++编写钩子脚本吗?或者我应该学习如何使用python或ruby等

您可以在此处找到有关如何定义预提交挂钩的说明:

post-commit的创建类似于该指令

<> P>一旦你将POST提交模板复制到一个新文件,你可以简单地添加一条线来调用你在C++中编写的程序,并简单地将参数传递给程序。
<>这取决于你在做什么,但是大多数时候使用脚本语言做shell脚本或Python更节省时间。

< P>你可以用C或C++写你的钩子,如果你喜欢的话。大多数人使用Perl或Python

主要的是
svnlook
应该用在钩子脚本中,而不是
svn
。svnlook比
svn
更快更安全。事实上,在预提交脚本中,您必须使用
svnlook
,因为您没有存储库版本

关于您的
post-commit
hook,以下是一些需要记住的事项:

  • 您不能更改修订,也不要尝试提交更改。您的post-commit钩子最终将调用自己。如果希望开发人员遵循某些参数,则需要有一个
    pre-commit
    钩子,如果开发人员做得不对,该钩子就会失败
  • 当Subversion调用您的
    post commit
    hook时,
    PATH
    环境变量已被删除。如果需要访问其他命令或文件,则必须自己提供完整路径
  • Subversion将从命令行向您传递某些参数。不是实际的命令行,但这意味着您可以在
    ARGV
    中找到这些参数。将向您传递两个参数:
  • 服务器上的存储库路径(用于
    svnlook
    命令)
  • 存储库的修订

你必须推断出的所有东西,虽然<代码> SvnOutlook (你可以通过<代码>系统> /Cuff>命令运行。但是,由于你实际上在C和C++中写东西,你可能可以使用内置的)。 另一种可能性是:使用一个连续构建系统,就像为你做脏活一样。您可能会发现通过Jenkins工作比担心post-commit钩子如何完成这项任务更容易。Jenkins的优点之一是,当出现问题时,您不会将失败的post commit消息发送回用户(用户可能没有错)。相反,您可以获取所发生事件的完整日志,并通知实际能够解决问题的人员


下面是我用Perl编写的一个示例。不知道这是否对您有任何好处。

这里是stackoverflow的答案,其中有一个windows上的提交后钩子示例,首先使用本机windows shell命令-

。第二:不,它不一定是一个“脚本”。任何带有可执行位的东西都可以工作。您可以在C或C++中编写钩子。是否存在一个现有的POST提交钩子,将结果导出到其他地方,或者将代码复制到其他地方(备份)?是的,在VSN源中有一个模板:现在您拥有了存储库和修订版,您只需调用
svn
即可获得提交所需的所有信息。我想我需要实际编写脚本的帮助。有什么好的资源我可以阅读或查看吗?我们可以考虑使用詹金斯或Team Foundation Server,如果我们使用Team Foundation Server,我们需要同步VSN和TFS,这就是为什么我要查看POST提交钩子的原因。有没有办法为Team Foundation Server(SvnTeam Foundation Server)使用同步功能?谢谢你的洞察力reply@kiki-事实上,您可以使用Jenkins做的不仅仅是构建,有时甚至不用于构建。在本例中,我只想使用Jenkins在Subversion和TeamFoundation之间进行同步。