如何为 svn 编写自动“复制、检出、更改和检入”脚本

发布于 2024-07-06 12:36:14 字数 292 浏览 5 评论 0原文

我们有一个经常复制的模板项目。 这样我们就可以对副本进行定制,并且仍然有一个通用模板。

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

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

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

谢谢你的回答

we have a template project we often copy. so we can costumize the copy and still have a common template.

To optimize the "copy & initial changes"-process, i though that i can write a little script, that does the following:

  • copy the project-template (in svn) to another directory in the svn
  • check-out the project and do some changes (change names in some files)
  • check-in the customized project

The question is: what's the best way to do this? any experience in this? which type of script (normal batch or java)? any example code?

thanks for your answers

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

虐人心 2024-07-13 12:36:14

这是我与我发现的一些信息放在一起的内容 此处

#!/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 存储库的备份转储到文件,创建一个新存储库,将备份加载到其中,签出文件,获取包含要搜索的字符串的文件列表,对每个文件执行正则表达式这些文件将新版本存储在临时位置,然后将临时文件移回原始位置,最后将更改签回到新存储库中。

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

Here is something i put together with some information i found 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"

Basically this will dump a backup of the specified source svn repo to a file, create a new repo, load the backup into it, check out the files, get a list of files that contain the string to search for, perform a regex on each of those files storing the new version in a temp location and then moving the temp file back to the original location, and finally checking the changes back into the new repo.

I haven't fully tested this so some minor tweaking may be necessary, but the basic steps should be correct. Please let me know if i've made some gross miscalculation and this totally does not work.

甩你一脸翔 2024-07-13 12:36:14

只需要一个 shell 脚本就可以了。

Just a shell script would do.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文