目前是否有允许在 SVN 中进行独家结帐的功能?
Delphi 是否有一个允许通过 IDE 访问的好插件?
SVN有一个“锁”的概念,大致对应于排他结账。例如,在TortoiseSVN中,这是通过 Get lock 和 Release lock 菜单项公开的。
JCL包含一个 SVN 版本控制专家,它工作得很好。除此之外,tt 还允许您从 IDE 访问锁定功能。
TortoiseSVN可以添加到 Delphi 工具菜单中。我自己没有尝试过,因为我很高兴将它用作资源管理器扩展。
关于独家结帐,我猜你的意思是一次只有一个人可以编辑它?这不是 Subversion 背后的真正想法,想法是您拥有工作副本,然后检查您的更改。然后它会尝试合并您的更改(这通常在大多数情况下都有效)。如果存在冲突,您需要手动解决它们。
我相信人们有时会询问 Subversion 存储库中锁定项目的原因之一是因为他们将 Delphi DFM 保存为二进制格式,这使得提交/合并成为问题。
将 DFM 等更改为文本的替代方法是使用Scooter Software的 Beyond Compare。
Beyond Compare 是用 Delphi 编写的,并且本机知道如何读取二进制 DFM。这意味着无论您的 DFM 是以二进制还是文本形式存储在 Subversion 中,这都不再是一个问题(甚至没有问题)。Beyond Compare V3 还进行 3 路合并,这使得合并多个提交等变得非常容易。即使忽略区分二进制 DFM 的能力,它仍然是比 TortoiseSVN 的内置工具更好的差异查看器。我可以强烈推荐它,而且它非常便宜。
目前,我在我们的存储库中锁定的唯一内容是 COM 类型库(*.tlb 及其关联的 *_TLB.pas 文件)。
关于独家结帐。可以做到,但很痛苦,通常不值得花时间。如果您确实将 dfms 保存为二进制文件,请将它们转换为文本。
关于 delphi 插件,我在Delphi addins 有一个帖子,用于 subversion。
我使用绝地jcl和TortoiseSvn。
我知道还有用于Tortoise svn 的Delphi svn和Delphi 插件。
也许我很天真,但为什么会有人愿意费尽心思去合并他们的变化呢?如果程序员正在编辑内容易于理解的文本文件,合并可能是一件简单的事情,因此可以通过程序员了解更改的含义来合并。但是,如果您将 SVN 与 MS Visual Studio 一起使用,其中一个文件的更改经常会更改您不知道的其他文件,并且程序员可能完全不知道这些文件中的信息编码(因此他们会不知道如何解释更少的合并此类文件)甚至可能是二进制文件,您为什么要冒着让多人同时编辑东西的巨大麻烦和风险?
锁定范例很简单。一次只有一个人编辑。永远不需要合并。程序员不需要知道他们甚至没有意识到他们正在修改的(可能是二进制)文件的编码。没有人能阻止别人的改变。锁定(即默认锁定)听起来对我来说更可取。
“独家结帐”是什么意思?你的意思是你结账后,其他人就不能结账了?
这称为锁,subversion 可以做到这一点(请参阅Locking),但一般不建议这样做,因为版本控制的目的是允许多人同时处理版本化项目。
对于第一部分,我使用了支持锁定的Visual Source Safe(您必须在使用前签出),SVN具有锁定命令,但这违背了它的概念,您需要很少的时间来使用它,而且您永远不会使用再次锁定命令。
对于您问题的第二部分,TortoiseSVN 可以用作外部工具,或者您可以将其与 Delphi 2007 及更高版本捆绑的文件浏览器一起使用,您可以使用与旧版本一起使用的IBrowser 。
Delphi和Subversion 插件总结了 Delphi IDE 可用的 SVN 插件,除了SourceConneXion是商业产品。