如何写一个自动的;复制、签出、更改和签入”-svn脚本

如何写一个自动的;复制、签出、更改和签入”-svn脚本,svn,workflow,Svn,Workflow,我们有一个模板项目,我们经常复制。因此,我们可以对副本进行成本计算,并且仍然有一个通用模板。 为了优化“复制和初始更改”过程,我认为我可以编写一个小脚本,它可以执行以下操作: 将项目模板(在svn中)复制到svn中的另一个目录 签出项目并进行一些更改(更改某些文件中的名称) 签入自定义项目 问题是:最好的方法是什么?有这方面的经验吗?哪种类型的脚本(普通批处理或java)?有没有示例代码 谢谢你的回答一个shell脚本就可以了。这里是我整理的一些东西和我找到的一些信息 #/bin/bash

我们有一个模板项目,我们经常复制。因此,我们可以对副本进行成本计算,并且仍然有一个通用模板。

为了优化“复制和初始更改”过程,我认为我可以编写一个小脚本,它可以执行以下操作:

  • 将项目模板(在svn中)复制到svn中的另一个目录
  • 签出项目并进行一些更改(更改某些文件中的名称)
  • 签入自定义项目
问题是:最好的方法是什么?有这方面的经验吗?哪种类型的脚本(普通批处理或java)?有没有示例代码


谢谢你的回答

一个shell脚本就可以了。

这里是我整理的一些东西和我找到的一些信息

#/bin/bash
searchterm=“”
replaceterm=“新项目”
srcsvnrepo=”file:///svnrepoaddress"
destsvnrepo=”file:///data/newrepo"
dumpfile=“/home//repo.dump”
tmpfolder=“/home//tmp_repo”
svnadmin转储$srcsvnrepo>$dumpfile
svnadmin create--fs类型fsfs$destsvnrepo
svnadmin加载$destsvnrepo<$dumpfile
svn公司$destsvnrepo$tmpfolder
对于$格式的文件(grep-l-R$searchterm$tmpfolder)
做
sed-e“s/$searchterm/$replacetTerm/ig”$file>/tmp/tempfile.tmp
mv/tmp/tempfile.tmp$文件
echo“已修改:$file
完成
svn ci$tmpfolder--消息“初始签入”
基本上,这会将指定源svn repo的备份转储到文件中,创建新的repo,将备份加载到其中,签出文件,获取包含要搜索的字符串的文件列表,对每个文件执行正则表达式,将新版本存储在临时位置,然后将临时文件移回原始位置,最后将这些变化重新纳入新的回购协议


我还没有完全测试这一点,所以一些小的调整可能是必要的,但基本步骤应该是正确的。如果我有严重的计算错误,请让我知道,这完全不起作用。

这对于原始海报想要做的事情来说太过分了。在他的情况下,一份简单的svn副本+svn co+svn ci应该足够。海报上说他想“签出项目并做一些更改(更改某些文件中的名称)”。我说的有多过分?你的建议创建了一个全新的存储库,其中一个分支似乎可以很好地处理用例。。。这有点过分了,一个简单的svn拷贝就足够了。
#!/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"