Subversion独占式检出和Delphi的Subversion插件

6

目前SVN是否有一个功能,允许独占式检出?

Delphi是否有一个好的插件,允许通过IDE进行访问?


欢迎来到 Stack Overflow。作为参考,这实际上应该是两个单独的帖子,而不是一个帖子中的两个问题。 - Rob Kennedy
7个回答

11

SVN有一个名为“locking”的概念,大致对应于独占式检出。例如,在TortoiseSVN中,可以通过“获取锁定”和“释放锁定”菜单项来使用此功能。

JCL包含一个SVN版本控制专家,它可以很好地工作。除其他事项外,它还使您可以从IDE访问锁定功能。


8

TortoiseSVN 可以 添加到Delphi工具菜单中。我自己没有尝试过,因为我很满意它作为资源管理器扩展的使用。

关于独占式检出,我猜你是指只有一个人可以编辑它?这不是Subversion的想法,它的想法是你有工作副本,然后检入你的更改。然后它会尝试合并你的更改(这通常大多数情况下都能成功)。如果有冲突,你需要手动解决它们。


这些冲突如何变得可见?例如,如果有人将参数从字符串更改为整数。 - Acron
如果有人进行一个这样的简单更改,你就不会看到冲突,它会在提交时合并。但是,如果你有一个人将一个字符串改为整数,而你又将同一个字符串改为实数,则会发生冲突。当提交时,冲突会显示出来,并且你需要选择如何解决它。请参阅此网址以获取更多信息 - http://tortoisesvn.net/docs/release/TortoiseSVN_zh/tsvn-dug-conflicts.html - Pauk
+1 给维基链接 - 我使用那种方法,非常好。我还建议添加“在此处打开文件夹”,这只是explorer.exe $PATH($EDNAME)。这使您可以轻松访问Tortoise中的任何其他内容。 - Chris Thornton

2
我相信人们有时会询问如何在Subversion仓库中锁定项目的原因之一是因为他们的Delphi DFMs以二进制格式保存,这使得提交/合并变得棘手。
将DFMs等文件更改为文本的替代方法是使用Scooter Software的Beyond Compare。
Beyond Compare是用Delphi编写的,并且本地知道如何读取二进制DFMs。这意味着无论您的DFMs是以二进制还是文本形式存储在Subversion中,它都不再是问题(甚至可能没有问题)。 Beyond Compare V3还可以进行三方合并,这使得合并多个提交等变得非常容易。即使忽略了差异化二进制DFMs的能力,它仍然比TortoiseSVN内置工具更好的差异查看器。我强烈推荐它,而且价格非常便宜。
目前,我们仓库中唯一锁定的东西是COM类型库(*.tlb及其相关的*_TLB.pas文件)。

关于二进制形式的DFMs有一个有趣的观点,但是它们很容易批量转换为文本。自Delphi 1以来,bin文件夹中就有一个名为Convert.exe的文件,可以完成这项工作。例如:convert -i -t -s c:\files\*.dfm - Pauk
另外,赞一个Beyond Compare,它是一个很棒的应用程序。我必须承认,我更喜欢它而不是TortoiseMerge。 - Pauk
我们在国际化过程中使用一种内部工具,目前需要我们的DFM保持二进制。使用Beyond Compare使得这个遗留限制对我们来说不再是问题。无论DFM是否为二进制,BC都可以愉快地比较相同DFM的二进制和非二进制版本。 - Conor Boyd

1

1
也许我太天真了,但为什么有人要费尽心思地合并他们的更改呢?如果程序员正在编辑内容易于理解的文本文件,则合并可能是一个简单的问题,因此程序员可以通过了解更改的含义来合并这些文件。然而,如果您正在使用带有MS Visual Studio的SVN,在这种情况下,对一个文件的更改经常会导致您不知道的其他文件的更改,并且这些文件中的信息编码可能完全未知于程序员(因此他们甚至无法理解,更不用说合并这些文件),甚至可能是二进制文件,那么为什么要冒着多人同时编辑的巨大风险和麻烦呢?
锁定范式很简单。一次只能有一个人进行编辑。永远不需要合并。程序员不需要知道他们甚至没有意识到自己正在修改的(可能是二进制的)文件的编码。没有人可以践踏别人的更改。对我来说,锁定(即默认锁定)听起来更可取。

0

“独占式结账”是什么意思?你的意思是说,在你结账之后,其他人就不能结账了吗?

这被称为锁定,Subversion 可以做到这一点(请参见锁定),但通常不建议这样做,因为版本控制的目的是允许多个人同时对版本化的项目进行工作。


你说得对。我的意思是在锁定被禁用后,直到我提交之前,没有人可以签出。 - Acron

0

对于第一部分,我曾使用 Visual Source Safe,它支持锁定(必须在使用前签出),SVN 有锁定命令,但这违反了它的概念,你需要花时间适应它,而且你以后再也不会使用锁定命令。

对于你问题的第二部分,TortoiseSVN 可以用作外部工具,或者可以与 Delphi 2007 及以上版本捆绑的文件浏览器配合使用,还可以使用适用于旧版本的 IBrowser

Delphi 的 Subversion 插件 总结了可用的 Delphi IDE SVN 插件,除了 SourceConneXion 这个商业产品。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接