我们有一个经常复制的模板项目。所以我们可以定制副本并且仍然有一个通用的模板。
为了优化“复制和初始更改”过程,我虽然可以编写一个小脚本,但它执行以下操作:
- 将项目模板(在 svn 中)复制到 svn 中的另一个目录
- 签出项目并进行一些更改(更改某些文件中的名称)
- 签入定制项目
问题是:最好的方法是什么?有这方面的经验吗?哪种类型的脚本(普通批处理或 java)?任何示例代码?
谢谢你的回答
这是我与我在这里找到的一些信息放在一起的东西。
#!/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,将备份加载到其中,检查文件,获取包含要搜索的字符串的文件列表,对每个文件执行正则表达式这些文件将新版本存储在临时位置,然后将临时文件移回原始位置,最后将更改检查回新存储库。
我尚未对此进行全面测试,因此可能需要进行一些小的调整,但基本步骤应该是正确的。请让我知道我是否犯了一些严重的错误计算,这完全行不通。
只需一个 shell 脚本就可以了。