0

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

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

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

SET WORKING_COPY=Z:\testweb

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

post-commit hook failed (exit code 1) with output: svn: Error resolving case of 'Z:\testweb'

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

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

4

1 回答 1

0

不要通过提交后挂钩来执行此操作。如果您设法使钩子成功,您将导致执行提交的人等到更新完成。相反,我建议您使用Jenkins,它是一个持续构建引擎。

您可能没有任何东西要构建。毕竟,如果您使用的是 PHP 或 JavaScript,则无需编译。但是,您仍然可以使用 Jenkins 为您进行更新。

我无法深入了解细节,但您可以使用 Jenkins 做的一件事是重新定义其工作目录。您可以通过在定义作业时单击“高级”按钮来执行此操作,它会询问您想要工作目录的位置。在这种情况下,您可以指定服务器的工作目录。

您可以使用 Jenkins 做的一件事是让它自动运行测试,或者进行更顺畅的更新。例如,当您更改几个文件时,您可能需要重新启动 Web 服务器,或者您可能需要确保如果您要更改 100 个文件,它们会同时更改,或者您的服务器不是稳定的状态。您也可以使用 Jenkins 来执行此操作。而且,如果有任何问题,您可以让 Jenkins 向负责服务器更新失败的服务器发送电子邮件。

Jenkins 易于设置和使用。你可以下载它并在 10 分钟内启动 Jenkins。如果您以前从未见过 Jenkins 并且不知道它是如何工作的,那么在 Jenkins 中设置工作可能需要另外 15 分钟。

于 2012-03-23T04:29:44.213 回答