使用PowerShell自动化SVN合并

时间:2014-01-08 18:09:51

标签: svn version-control merge

我有一个PowerShell脚本仓库,每个用户都有一个分支。我希望编写一个脚本(平衡一系列自动化和安全性)自动更新内容。目前我是唯一使用它的人,但最终目标是每个用户都有一个分支,一旦被审查,该分支将合并到主干(假设我是唯一可以合并到主干的人)

所以我想要做的第一个任务,对我来说,这将采取我的本地分支并合并它。

我的工作副本位于d:\ ps \ wc($ wc变量)和d:\ ps \ scripts($ trunk)中的trunk的本地副本,我将分支url存储在$ branchURL < / p>

我认为我应该做的是以下SVN命令。

svn commit $wc -m "AutoCommit"
svn update $trunk
svn merge $branchurl $trunk
svn commit $trunk -m "AutoCommit"

还有更多内容,但我想确保在做按钮提交时我有正确的想法(合理的安全性)。

我只是说我是一个擅长powershell的系统管理员,SVN对我来说都是新手,但是我已经被告知了一些人想要运行它的危险

2 个答案:

答案 0 :(得分:1)

你的命令基本上看起来很好,除了你应该确保每一步都成功。如果任何步骤失败,脚本应退出而不执行下一步。

例如,如果某个人正在使用您正在使用的目录,则可能会失败,因为文件可能被锁定。或者,即使您可以确保在脚本运行时没有人将使用这些目录中的文件,svn merge步骤可能会因冲突而失败。您可能能够提出自动解决文件锁定问题的解决方案,但您将无法自动处理冲突。

最后,如果$wc中添加了新脚本怎么办?如果要自动添加文件,可以执行以下操作:

svn add $wc --force

如果没有--forcesvn会失败,因为$wc中的其他文件已经受版本控制。使用--force标志,它将有效地将所有未知文件添加到版本控制。这可能看起来很奇怪,因为通常--force标志是危险的,但这是一个例外。 svn add --forcegit add .类似。

答案 1 :(得分:1)

也许您可以找到以下有用的automerger 您可以在其上配置多个分支,并为每个分支配置进一步提交的分支。