Application design 在自定义编辑器应用程序中嵌入哪种源代码管理范例和解决方案?
我正在构建一个管理大量自定义对象的应用程序,这些对象可以由多个用户同时编辑(使用应用程序的不同实例)。这些对象有一个底层的序列化表示,我的计划是(通过我的应用程序UI)在外部源代码管理系统中持久化它们。当然,这意味着我的应用程序可以检查对象的当前版本是否有更新,以及每个对象的合并接口等 我的问题是要支持什么样的源代码管理范式和特定的解决方案,以及为什么。我(也许天真地)看待源代码管理世界的方式有三种普遍的范例:Application design 在自定义编辑器应用程序中嵌入哪种源代码管理范例和解决方案?,application-design,version-control,Application Design,Version Control,我正在构建一个管理大量自定义对象的应用程序,这些对象可以由多个用户同时编辑(使用应用程序的不同实例)。这些对象有一个底层的序列化表示,我的计划是(通过我的应用程序UI)在外部源代码管理系统中持久化它们。当然,这意味着我的应用程序可以检查对象的当前版本是否有更新,以及每个对象的合并接口等 我的问题是要支持什么样的源代码管理范式和特定的解决方案,以及为什么。我(也许天真地)看待源代码管理世界的方式有三种普遍的范例: 单一存储库,锁定访问(MS SourceSafe) 单个存储库,并发访问(CVS/S
如果您希望获得广泛的商业支持,那么您目前更关注的是2而不是3(甚至可能是1) 编辑: 当然,这取决于您所说的“商业”是什么意思,但大型商业组织往往在开发人员工具方面落后。我主要看到了每个项目/组的SCM,但我确信技术含量较低的商业组织可能只使用其IT组提供的单个SCM解决方案。2和/或3
#1
单一存储库,锁定访问-现在很少使用,因此它们不值得一提
#2
单一存储库、并发访问-被称为VCS或CVCS(集中式版本控制系统)仍在广泛使用
#3
分布式系统是下一个重要的东西,因为它们消除了其他系统强加给开发人员的许多人为障碍
首先,回答您的问题/顾虑:
1.
商业验收取决于组织及其开发人员。如果管理者是负责所使用软件的人,他们倾向于在几乎没有实际证据的情况下采取强硬的保守决策,那么他们可能会默认微软提供的任何服务。在这种情况下,祝你好运。我所听到的关于MS版本控制(特别是SourceSafe)的一切都是坏事,我不确定MS是否有DVCS选项
OTOH,如果开发团队负责挑选他们的工具(或者管理者思想开放),那么git或mercurial可能是最好的选择。git将是一个很难适应的问题,因为它太复杂了。mercurial是从CVCS的一个非常简单的过渡,请务必下载OrtoisehgGUI客户端,以了解工作流。两者都是完全稳定的,可以生产。Mercurial和Subversion在Sourceforge.net以及Google代码上使用,这两种代码都承载了数千个项目。他们可能有任何缺陷,他们要么知道,要么已经解决
2.
当我说“在这个时代,运行自己的版本控制系统是对时间和精力的荒谬浪费”时,我很肯定我代表了开发人员的整体观点
当然,您可能会制作一个小型的、适合您的应用程序的专用版本控制系统;但是,在你决定之前,考虑所有的时间和努力。更不用说,您需要将版本控制系统的代码置于版本控制之下。努夫说
3.
不,你不需要,你可以同时使用这两种工具。许多人使用CVCS(通常是subversion)在组织范围内进行集中版本控制,同时使用DVCS在本地进行小规模或单独的开发(甚至有报道称微软工程师在他们的开发人员小组中秘密使用git)。由于DVCS在文件系统中仅由一个隐藏文件夹和一个忽略文件表示,因此很容易将所有信息添加到CVCS忽略文件中,这样就不会在中央存储库中跟踪信息。很简单,如果有必要,你可以利用两者的优势
我认为,在您提交DVCS时,甚至有方法将DVCS的提交历史传输到CVCS。虽然,我不知道具体怎么做,因为我从来没有理由这么做
4.
2和/或3
如果已经有了CVCS,并且您希望使用它,我会说两者
Subversion可能可以做任何事情,但问题是,CVCS的所有版本历史都是kep