svn夜间提交脚本是为了捕获所有可能的场景而构build的吗?

我有一个夜间svn提交脚本,应该考虑到所有可能的场景,并提交新的东西到我们的svn仓库。 基本上我正在运行以下步骤:

  1. svn status [path]添加任何新文件
  2. svn status [path]删除任何手动删除的文件
  3. 倾销mysql开发数据库
  4. svn提交所有上述更改与默认消息。

这是我们正在使用的脚本:

#!/bin/bash echo "Adding new files to the nightly commit" svn status [path] | grep ? | sed 's/[?MD]//g' | xargs -I {} svn add {} echo "Removing files manually deleted" svn status [path] | grep ! | sed 's/[!]//g' | xargs -I {} svn del {} echo "Dumping our development database" mysqldump --add-drop-database --add-locks --create-options --disable-keys --extended-insert --result-file=/repopath/database.sql databasename svn commit /repopath/ -m "Nightly Automatic commit of changes" 

我只是想确定一下? 和! 被照顾,我没有任何其他的情景,我没有想到。 任何帮助或改善这个脚本将是非常有益的。 随意使用这个脚本,因为你的任何SysAdmin任务。

  1. “xargs svn add”应该就够了,你为什么用-I {}?
  2. 我根本不会这样做。 您可能会在SVN中获得大量临时文件。 有一天你可能会把CD映像放在那里。
  3. 我不会这样做。 你的评论将是完全没有意义的。 我换了什么等等? 为什么不在实际改变的时候提交
  4. Mysql有时候是邪恶的。 您需要确保数据库转储实际上是确定的。 你在早上读脚本的输出吗?
  5. 随着时间的推移,你的回购将变得非常大(取决于数据库大小和变化),没有好的方法来缩小它。
  6. 你会想逃避两个! 和? 或者引用他们。 用单引号“!” 将工作, ”!” 会造成麻烦。

总之:我认为你已经得到了一切(除了第6点),但如果我是你,我不会这样做。

你也可以把svn add到目录中的所有文件中。 已经添加的文件已经在版本控制下,会生成一条错误消息,但会添加所有新的文件。