【问题标题】:How to write a batch file to update files that have been commited on a server如何编写批处理文件来更新服务器上已提交的文件
【发布时间】:2011-06-14 11:42:05
【问题描述】:

我是web开发者。我在自己的机器上编辑本地svn工作副本中的文件,我们的开发服务器是通过samba共享的磁盘,服务器的根目录也是工作副本,我想做的事是使用客户端 svn post-commit 钩子在开发人员提交一些代码时自动更新服务器上的工作副本。我发现两个批处理文件可以正确执行此操作,一个使用subversion command,另一个正在使用Tortoise SVN command,但问题是批处理文件更新整个工作副本而不是更改的文件,这非常慢,通常需要一两分钟。所以我认为如果我只能更新更改的文件可能会更快文件。或者 mybe 将批处理文件 ssh 到服务器并直接更新而不是通过 samba 更好吗?如何做到这一点?

对不起,我的英语很差,任何帮助将不胜感激。

【问题讨论】:

    标签: svn hook post-commit


    【解决方案1】:

    您可以执行以下步骤:
    1. 使用 svnlook 命令找出被修改的文件

    svnlook changed REPOSITORY NAME  
    
    1. 将命令的输出保存到文件中。
    2. 动态读取此文件并将其提取到 SVN 更新命令中。

    我可以告诉你如何在 Linux 中执行此操作,但不清楚批处理文件。

    【讨论】:

      【解决方案2】:

      我遇到了类似的问题,但使用的是托管 SVN 的 Linux 服务器。也许您可以从这里获取一些线索并更改它以匹配您的 Windows 系统。

      POST_COMMIT

      #!/bin/sh
      wget http://localhost/update_svn.php
      

      update_svn.php

      <?php
      $output = shell_exec('/media/disk3/velsvn/projects/hooks/svn_update_step1.sh');
      echo "<pre>$output</pre>";
      ?>
      

      svn_update_step1.sh

          ssh -i /media/d/mykey/id_rsa velsvnuser@localhost /media/disk3/velsvn/projects/hooks/svn_update_step2.sh
      
          svn_update_step2.sh
      
      #!/bin/sh
      cd /media/disk3/velsvn/projects/hooks
      rm -f filelist
      rm -f log
      whoami >> log
      
          svnlook dirs-changed /media/disk3/velsvn/projects/  | sed "s/^..//" | awk '{ print substr( $0, 9 ) }' >> /media/disk3/velsvn/projects/hooks/filelist; sed -i -e 's#^#/media/disk2/www/htdocs#' filelist; cat /media/disk3/velsvn/projects/hooks/filelist | xargs /usr/bin/svn up -N >> /media/disk3/velsvn/projects/hooks/log
      

      注意: 1. /media/d/mykey/id_rsa 是为 SSH 访问生成的密钥。这确保了系统不会等待用户提供密码来连接到 SVN 以及执行 shell 脚本。 2. POST-COMMIT 文件和 shell 文件 sh1 和 sh2 被赋予 +x mod 以便它们可以被执行。

      请随时评论这篇文章并提供更好看的解决方案。我现在所知道的是,这个解决方案有效:)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-01-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-22
        • 2012-12-13
        • 1970-01-01
        相关资源
        最近更新 更多