1

We are developing Caisis (Caisis.org) -- open source clinical data collection system. Caisis is ASP.NET (4.0) (C# code behind) front end and SQL Server 2008 back end.

Periodically, Caisis versions are upgraded. For example, we have been busy developing on Caisis version 5.0, and now Caisis Version 6.0 has been released. We now need to transfer all our front & back end changes to Caisis Version 6.0.

Synchronizing differences between 2 SQL Server databases may be addressed using Red Gate SQL/Data Compare or open source DB tools like Open DBDiff.

However, as far as I can tell there are no equivalent tools (proprietary or open source) to synchronize 2 ASP.NET/C# applications. Currently we are reduced to semi-automated approaches involving detecting differences between the 2 file systems using robocopy, then applying these changes manually. Is there a more efficient way to do this?

4

2 回答 2

1

我也遇到过类似的情况。答案很简单:这不是一件容易的事。您可以使用 Beyond Compare 或 Araxis Merge 之类的工具(在我看来,Merge 对用户更友好,BC 更强大)。进行目录比较。通过一些配置,您可以让这些工具隐藏所有非不同的目录分支和文件,只留下一部分差异。然后,您可以使用这些工具的文件比较功能来准确查看文件中的更改内容,并选择要提取的内容和要保留的内容。

(意见)您应该在干净的签出时进行此合并 - 也就是说,没有要签入的未完成文件。然后,在您的合并完成后,只需进行升级合并更改即可进行一次大型签入。如果你拿了太多,或者你错过了什么,你就有办法回滚。您可以回滚更改,进行修复,然后重试。

于 2013-06-01T13:31:33.520 回答
1

如果我要建立一个这种类型的新项目,我的倾向是通过源代码控制分支和合并来处理它。我将提取我要修改的产品的原始代码作为我的起点(为了讨论,将其称为我的核心分支)。在进行任何更改之前,我会将此分支用于我的开发工作(称之为开发人员)。从这里继续使用您喜欢的任何分支策略。

我设置的关键是我从未在核心分支中进行更改,它仍然适用于我基于修改的原始版本。然后随着对原始代码的更改发布,我可以将它们应用到我的核心分支。从那里我可以将它们合并到我的 dev 分支中,然后通过任何其他分支合并到我的发布代码中。

当然,这种方法取决于两件事:A)您使用的源代码控制系统在处理分支和合并方面做得不错。B)您在项目开始时建立此分支结构。

在项目已经进行之后进行设置会更加困难。一些源代码控制工具将允许您在离散代码库之间建立分支关系,但根据我的经验,这样做几乎总是很复杂。对于已经对原始版本进行了重大修改的内容,Eli 的建议可能是更好的方法之一。

于 2013-06-01T16:40:45.197 回答