如何为svn编写自动“复制,签出,更改和签入”-script

时间:2008-10-08 14:01:53

标签: svn workflow

我们经常复制一个模板项目。所以我们可以对副本进行成本化,但仍然有一个共同的模板。

为了优化“复制和初始更改”-process,我虽然可以编写一个小脚本,但它可以执行以下操作:

  • 将项目模板(在svn中)复制到svn
  • 中的另一个目录
  • 签出项目并进行一些更改(更改某些文件中的名称)
  • 签入自定义项目

问题是:最好的方法是什么?有这方面的经验吗?哪种类型的脚本(普通批处理或java)?任何示例代码?

感谢您的回答

2 个答案:

答案 0 :(得分:0)

以下是我发现here的一些信息。

#!/bin/bash


searchterm="<ProjectName>"
replaceterm="New Project"
srcsvnrepo="file:///svnrepoaddress"
destsvnrepo="file:///data/newrepo"
dumpfile="/home/<user>/repo.dump"
tmpfolder="/home/<user>/tmp_repo"

svnadmin dump $srcsvnrepo > $dumpfile
svnadmin create --fs-type fsfs $destsvnrepo
svnadmin load $destsvnrepo < $dumpfile
svn co $destsvnrepo $tmpfolder

for file in $(grep -l -R $searchterm $tmpfolder)
  do
    sed -e "s/$searchterm/$replaceterm/ig" $file > /tmp/tempfile.tmp
    mv /tmp/tempfile.tmp $file
    echo "Modified: " $file
  done

svn ci $tmpfolder --message "Initial Check-In"

基本上这会将指定源svn repo的备份转储到文件,创建新的repo,将备份加载到其中,检出文件,获取包含要搜索的字符串的文件列表,执行在临时位置存储新版本的每个文件的正则表达式,然后将临时文件移回原始位置,最后将更改检入新的存储库。

我还没有对此进行全面测试,因此可能需要进行一些小的调整,但基本步骤应该是正确的。如果我做了一些严重的错误计算,请告诉我,这完全不起作用。

答案 1 :(得分:-1)

只需要一个shell脚本。