在给定时间段内提交的 SVN 检出文件



我正在编写一个部署 bash 脚本,该脚本会将源代码管理中的最新更改发布到另一台计算机。我是命令行 svn 的新手(已经在开发中使用它多年(,并且是 bash 脚本的新手。

我需要一种方法来仅签出最近修改过的文件。像这样:

svn checkout svn://server/repo/project/trunk -mtime -1d4h

这个想法是,这只会签出过去 28 小时内提交的文件。

  1. 您无法签出更改,您只能获得存储库某些部分(即"修订版"(的某些状态,其中将包括此修订版中此节点(子目录(中存在的所有文件(并在此修订版之前的任何修订版中添加|修改,包括修订版(
  2. Subversion 中的日期格式规范不允许使用"相对日期时间",只允许使用绝对值
  3. 导出|保存外部存储库所有文件、在修订版|修订版范围内更改的脚本存在,并且可以在 Net 中找到(Subversion 命令行脚本,用于将更改的文件导出为良好的 bash-sample(

上述说明的后果

  • 您必须提供正确的 Subversion 样式日期或修订号作为起点
  • 具有自由格式规范的相对日期可以使用 bash date 命令 (-d "28 hours before"( 轻松构造并存储在变量中,变量可以用作 electrictoolbox 脚本的参数
  • 将文件从导出目录部署到最终目标是最终部分(特定于环境的繁重,现在没有建议(

基于此,我找到了更简单的东西来满足我的需求:如何在 Subversion 上保留原始文件 [commit] 时间戳?

我使用--config-option config:miscellany:use-commit-times=yes签出或更新项目的工作副本,该将文件系统上的时间戳设置为等于上次签出时间。然后,我使用标准的find命令。例如:

#!/bin/bash
function listfn {
   while read file; do
      if [[ !( $file =~ ^.*.svn.*$ ) ]]; then
          echo $file
      fi
   done
}

svn checkout --config-option config:miscellany:use-commit-times=yes svn://server/repo/project/trunk project-fordeploy
find project-fordeploy -mtime -1d4h | listfn

相关内容

  • 没有找到相关文章

最新更新