1

任务/问题是:我们希望遵循使用 SVN 的适当开发方法。这些项目将使用 PHP、Apache 服务器和 Linux 操作系统。该过程应该是

  1. 开发人员在他们的本地副本(本地机器)上处理代码。本地副本与 SVN 存储库(我们自己的 svn 存储库)链接
  2. 对于每个完成的任务,都有一个 SVN 提交。
  3. 有中间层服务器,它的代码来自同一个 SVN repo。该层仅用于从 repo 获取 SVN 更新,然后将更新的文件传输到测试服务器。

注意:多个项目有多个测试服务器。中间层将在所有项目之间通用。将在此处确定要传输更新文件的目标测试服务器。

我需要第 3 步的帮助。

如何获取/维护不同项目的所有更新文件的列表。然后是一个 shell 脚本来选择源目录(在中间层)和目标目录(测试服务器),然后 rsync 测试服务器上的所有更新文件。所有服务器都在同一个网络上。

4

1 回答 1

0

我不得不同意 H2CO3 的评论。话虽如此,可以通过以下方式实现您所需要的svn

svn merge -r BASE:HEAD --dry-run .

将为您提供自上次以来已更新的所有文件的列表svn update。在 , 的帮助下sedawk或者perl您可以轻松地将其转换为适合 使用的包含列表rsync。这是另一个类似的命令,它可能有用,但更冗长且更难解析:

svn log -r BASE:HEAD -v

但是,我会质疑是否rsync适合这里的工作。为什么不svn直接在测试服务器上使用呢?为什么你甚至需要中间的服务器?你已经说过所有服务器都在同一个网络上,所以也许你有一个你没有说明的额外要求?

最后,强烈建议大家看看git-svn。网上有很多很好 介绍 文章可以帮助您解决这个问题,当您触手可及时还有更多可能。我很高兴与一个大部分时间都坚持的团队合作了一年多,如果我没有告诉他们我在做什么,他们就不会更聪明了。(我最终也将它们转换为,但这是另一个故事 :-) gitgit-svnsvngit

于 2012-08-31T01:01:08.677 回答