问题标签 [svn-hooks]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
817 浏览

windows - 当工作副本位于网络驱动器上时,SVN 提交后更新工作副本

我在一家相当新的 Web 开发公司工作,我们目前正在测试 subversion 安装以实现版本控制系统。我们需要版本控制系统执行的功能之一是在提交后使用已编辑的文件更新开发服务器。

我们希望为我们所有的 SVN 存储库维护一台服务器,尽管由于系统要求,我们需要维护几个单独的开发服务器。我知道当开发服务器与 SVN 位于同一位置时,更新相当简单,但这对我们来说是不可能的。因此,我们需要为每个开发服务器将单独的网络驱动器映射到 SVN 服务器。

但是,提交时会出现此错误。这是我在 post-commit.bat 文件中引用的工作副本测试目录:

但是,这会导致错误...

我确定这是因为服务器与我不是同一个用户,因此没有我需要映射到“Z”的共享 - 我只是不知道如何解决这个问题。任何人都可以帮忙吗?

更新:我对这些问题的研究越多,问题的真正解决方案似乎是使用 CI 服务器来完成我想要完成的事情。我目前正在研究 TeamCity 以及它可能为我们做的事情。

0 投票
1 回答
298 浏览

svn - 一些 SVN 任务..远程本地同步等

这是设置,许多Windows客户端机器访问局域网中的本地SVN服务器(ubuntu)。

本地 SVN 服务器也连接到 Internet,但未连接 Windows 客户端。

有一个远程 SVN 服务器(ubuntu),我需要以一种方式镜像本地 SVN 的所有存储库。

即,如果在本地 SVN 上发生任何更新或提交或任何更改,我也需要在远程 SVN 服务器上发生这些。这可能吗 ?

Windows 客户端机器根本无法连接到远程 SVN 服务器。

有人可以为我提供实际的钩子或任何所需的脚本吗?

我什至可以在本地 SVN 服务器上每天运行一次 cron 作业来更新远程 SVN 服务器?如果是这样,步骤是什么,我需要从哪里开始寻找?

尚蒂

0 投票
1 回答
823 浏览

svn - 提交后挂钩超时

我已经编写了一个提交后挂钩,就像它在 https://wiki.jenkins-ci.org/display/JENKINS/Subversion+Plugin中所示的那样,如果有人提交了一些东西来颠覆,我就会触发 Jenkins 构建。

最近,我们的 Jenkins 身份验证服务器之一出现故障。我的提交后挂钩不会在 2 秒内超时。它等待和等待。如何在我的提交后挂钩中为此设置超时?

0 投票
1 回答
2279 浏览

svn - SVN:从提交后挂钩获取文件属性

是否可以从提交后挂钩获取文件属性?

我想检查所有更改的文件,如果其中一个或多个具有我的特定属性,我想执行一些操作。

^ 这仅从本地工作副本中读取属性,但我在执行钩子的环境中没有它。

谢谢!

0 投票
1 回答
1317 浏览

svn - CollabNet 预提交挂钩 - 新手

我已经安装了 CollabNet SVN。它可以访问,我创建了一些存储库。我想添加两个钩子:

1) 一个预提交钩子,在提交时强制注释。钩子应该检查评论的长度。

2) 一个忽略 bin 和 obj 文件夹内容的钩子。

我希望这两个钩子都应该强制 SVN 的所有用户跟随它们,所以它们应该在服务器上,而不是在我本地的 Tortoise SVN 上。

如果您能告诉我如何做或指导我学习教程,我将不胜感激。这是我第一次从事与 SVN 相关的工作。

谢谢。

0 投票
1 回答
2946 浏览

svn - TortoiseSVN 中的本地挂钩是什么?

我刚刚意识到 TSVN 支持本地挂钩。

有人能解释一下它们有什么用吗?

我已经使用服务器端挂钩来强制输入日志消息以进行提交并防止某些文件被签入;还使用 post-commit 钩子在提交时发送电子邮件。

我们也使用 AnkhSVN,我的理解是它不支持本地挂钩,对吗?

0 投票
1 回答
1057 浏览

svn - 如何在 VisualSVN 挂钩中获取更多相关信息?

Subversion(在我的情况下为 VisualSVN)允许您在不同时间启动脚本,例如提交前、提交后等。我想在提交发生时发送包含以下信息的电子邮件通知:

  • 提交的SVN用户
  • 用户输入的评论
  • 承诺的 repo 的名称
  • 修改文件列表
  • 交易编号

不幸的是,这些钩子似乎只提供了其中的一些信息。该post-commit挂钩仅提供 repo 名称和事务 ID。具有start-commit用户和存储库名称,但没有事务 ID。而且我找不到任何提供提交消息或修改文件列表的钩子。

有没有办法让这些信息可供钩子使用?如果没有,还有其他方法可以在提交时邮寄这些信息吗?

0 投票
2 回答
1279 浏览

build - Jenkins Partial Build / Modular Build on Commit Hook

工具
詹金斯版。1.470
Maven 2
颠覆

环境

假设我的构建有许多项目 AD。如图所示,依赖关系图存在。也就是说:B 依赖于 A 中的类,C 依赖于 B 中的类,D 依赖于 A 中的类。我们创建 jenkins 构建,以便他们将依赖于它们的构建称为构建后操作。

A
|--> B --> C
|--> D

每天晚上,我们在 Jenkins 中触发一个完整的构建(A 构建,触发器 B(触发器 C),触发器 D)。这很容易通过告诉 A 每晚构建,其余的级联来完成。

问题

但是,在提交时,我们希望构建曾经提交过的项目。

  • 情况1:我们轮询存储库(或使用commit hooks,没有区别),发现有一个提交给B,然后B将构建,C将构建。 成功!

  • 情况 2:我们轮询存储库并发现 B 和 C 在一次提交中被提交,然后 Jenkins 将尝试构建 B(触发 C 的构建),并构建 C(第二次构建)。失败。走着瞧吧?C 构建了两次,占用了宝贵的构建时间。 保持快速构建!

有谁知道在每个提交的构建管道中只触发最高项目的方法?

我想一个解决方案是一个复杂的 SVN 钩子,它确定每个管道中的最高项目......

  • 情况 3:一次提交到 BC 和 D。SVN 钩子发现 C 依赖于 B。钩子调用特定于项目的链接来开始构建 B 和 D。

陷阱:非常复杂的 SVN 提交挂钩。必须维护 SVN 挂钩中的管道。

我觉得这是其他人遇到的问题。有没有 Jenkins 插件可以帮助解决这个问题?

0 投票
1 回答
645 浏览

svn - Ant/Subversion 钩子:如何设置 ${user.dir}?

我的公司正在从 Visual Source Safe 过渡到 Subversion;我们的管道管理工具依赖于 VSS 提供的“影子文件夹”的存在,以便将代码从版本控制移动到各种测试环境。注意:我们使用一种解释性语言并将我们的源代码翻译成目标代码——目前,源代码和目标代码都处于版本控制之下(特别是为了满足管道管理机制的需要)。

作为一个迭代步骤,我试图用一点天赋来模仿影子文件夹功能,因为我希望在提交时开始翻译,这样我们就不需要在 Subversion 中存储源代码和目标代码。注意:我不得不破解这个过程,从执行所有内容的干净“构建”到只在提交期间翻译受影响的文件,因为否则它需要太长时间才能成为实时提交操作(将来我希望我们会放弃这个过程有利于一些不太互动的东西,例如每小时构建或诸如此类的东西)。

所有这些背景故事只是为了问一个问题:${user.dir} 属性是如何设置的?

这是我的提交后挂钩批处理文件(一切都在 Windows 上完成):

最后一行是实际的 Ant 调用;您可以看到我正在将输出重定向到一个文件,该文件位于 %BUILDDIR% 或 E:\builds\ 中。该文件按预期创建,这表明 %BUILDDIR% 已正确设置,因此:

行应该已经执行。我知道 SVN 使用空环境启动提交后挂钩,但我希望更改其中的目录应该在启动 Ant 后保留状态。

后来,在我的 Ant 脚本中,我设置了我的 ${build.dir} 属性:

如果 %REPONAME%(在批处理文件中)是 DEMO,我预计当前工作目录是:E:\builds\DEMO,因此 ${build.dir} 应该类似于:E:\builds\DEMO.build。 20120622.1127,但它是:C:\dev\shadow.build.20120622.1127,而不是。

据我了解,Ant 只是从 Java 中提取System.Properties来获取 ${user.dir} 之类的东西—— ${user.dir} 被描述为User's current working directory。显然,根据我的实验,批处理文件中的初始设置和关于工作目录的 Java 调用之间存在交叉。

Ant 是否将工作目录更改为构建文件的位置?我没有找到任何文件表明它确实如此,但我可能只是忽略了一些东西。我已经定义了 %ANT_HOME%,但是考虑到 Subversion 的“空环境”,它不会被加载......也许这有效果?我需要进行调查,但希望有人可能会简单地知道这是如何工作的。

编辑(2012-06-22-16:38):

我尝试设置 %ANT_HOME%、%JAVA_HOME% 和 %JAVA_CMD%,但无济于事。

0 投票
1 回答
174 浏览

svn - 颠覆验证

我们使用颠覆作为源代码控制解决方案;但是,在签入文件时提供评论时,我的几个队友并不是很忠实。

我想进行一些验证,例如...

A. 注释必须包含至少指定数量的字符。B. 签入评论中必须有几个字。C. 文件名中的空格被拒绝。

有没有办法这样做?我尝试寻找解决方案,但似乎进展不顺利......