使用 Subversion 部署应用程序

使用 Subversion 部署应用程序

我们在与客户的几个项目中尝试了 Subversion。它的效果比我期望的要好,但也存在一些缺陷。

背景:

  • 该应用程序将自动注册其所需的一切,因此可以安全地将其从一台计算机复制到另一台计算机。
  • 它包含许多文本和二进制(矢量图像)的设置文件。
  • 该应用程序本地安装在每台计算机上(因此无需网络访问即可使用)。
  • 客户更新文件,我们也为他们更新文件。

目前的解决方案是使用我们其中一个 Web 服务器上的 Subversion 存储库。如果需要更新文件,他们会安装 TortoiseSVN,否则他们会使用调用命令行客户端的 bat 文件。

自从我们引入 Subversion 以来,安装不同步的问题从未出现过。我们还能够追踪某些人何时弄乱了设置(并找出发生这种情况的原因)。

问题:

偶尔会发生冲突。大多数情况下是因为新手用户错误地更改了某个设置。是否有 svn-client 可以让新手用户轻松解决冲突?

(目前其中一家公司的解决方案是删除整个安装并执行新的结帐)

编辑:项目通常是我们标准应用程序的定制版本。客户所在地的用户数量为 2-10 人。

答案1

在这些情况下,svn export 是您的好帮手,因为它提供了代码的“干净”快照。我的建议是以这种方式进行部署以进行测试和生产。这将帮助您发现提交问题,例如错过签入或冲突,因为您只获取特定修订版的文件。

为了首先防止出现这些问题,特别是如果您被 svn 困住,请尝试使用生产分支。生产分支由经验丰富的开发人员维护,他们可以使用多路 diff 工具从开发人员的分支中提取更改。正如其他人指出的那样,svn merge(甚至更新)可能容易出错,因此此工作流程允许有选择地合并更改,这就是 dscm(如 Richard 所述)的工作方式。

答案2

我对 Subversion 感到不满的一点是,它把所有东西都看成是一系列的版本,其他版本控制系统如Mercurial查看变更集(如最新的 Stack Overflow Podcast 中所述)。Subversion 的这个方面使得合并本身就很困难,因为它并不知道到底发生了什么变化。

作为一个解决方案,它并不比你当前的解决方案好多少,我建议运行svn 恢复在更新之前重置安装。

答案3

签出与导出相比的优点在于,您可以看到用户在签出的副本上所做的更改。

如果您想要一个自动化解决方案,您可以让您的部署脚本使用 svn diff 将更改的副本保存到某个位置(或通过电子邮件发送给您),然后在更新之前进行恢复。

相关内容