什么源控制系统?

时间:2009-11-26 13:58:16

标签: delphi version-control

我迫切需要源代码管理来管理多个开发人员之间的项目。

很久以前,我使用Visual Source Safe,效果很好。

可以推荐哪些免费替代品?我有以下基本要求:

  • 我需要在自己的服务器上托管存储库。
  • 我不想在我的源文件中出现额外的混乱,比如CVS。
  • 我需要正确的入住/退房,以便在我重新检查之前没有人可以更换模块。
  • 我不想/需要源代码合并/分支。

我们使用Delphi进行Web开发,包括许多HTML文件,图像,SQL文件等。

有什么建议吗?

12 个答案:

答案 0 :(得分:16)

GitMercurial

  • 两者都是分布式和快速的(每个存储库都可以充当“服务器”)
  • 只有一个.git.hg目录
  • 没有多余的混乱
  • 您可以pull从受信任或已验证的来源进行更改

答案 1 :(得分:14)

我总是建议使用Visual SVN进行服务器软件的subversion,并为客户端使用Tortoise SVN。您可以专门签出文件,以便其他人无法编辑它们,尽管这不是默认行为。它添加的唯一“混乱”是每个受版本控制的目录中的隐藏.svn文件夹。

答案 2 :(得分:7)

如果你坚持零杂乱,也免费,你的选择有限。如果您是开源软件,则可以免费获得perforce。没有杂乱。 SVN像CVS一样混乱:每个目录中都有一个.something目录。 git和hg每个克隆只有一个混乱目录。

如果你绝对坚持结账模式,你必须放弃一些东西。 P4会这样做,但其他人都不会很好。如今,大多数人都更关注允许断开操作而不是锁定概念。甚至svn锁也只能阻止签入,而不是开始修改。

还有其他一些比较模糊的系统(例如拱门)可供你研究。

答案 3 :(得分:4)

在你让自己和你的开发人员生活在版本控制的黑暗时代之前,你应该先阅读一下并稍微学习一下。

Visual Source Safe和版本控制的锁定模型已经死亡。大多数人都继续前进。那些没有的人通常害怕(或厌恶)分支和合并的想法。一旦他们看到分支和合并可以更容易,更有效,那么他们就可以向前和向上进入版本控制选项的新世界。

问自己一些问题:

  1. 我是否想将创建新功能的行为与其他开发人员以及最终产品(我的实时网站)上的行为分开?如果是这样,那么我需要分支机构。一个分支=没有有效的版本控制。

  2. 我问过其他将与我合作的开发人员,他们在多开发人员项目中发现了哪些有效的做法,他们是否同意我认为锁定是可行的方法,或者我是单方面执行我的与他们合作的方式? (今天你可以使用foo.pas,但是尝试在下午3点之前检查它,因为我需要在今天晚些时候对foo.pas中的方法栏进行更改。)

  3. 如果我声明我想确保开发人员“避免使用旧版本”,除了我讨厌或担心合并之外,我还有理由吗?我们能不能想出任何防止“使用旧版本”的方法吗?另外,在使用旧版本时,我们能不能想到任何原因可能正是您必须做的事情?如果您使用像Subversion这样的非锁定工具,为什么不说“请在提交前更新”。然后你将永远不必合并,但如果有人希望在开发功能的同时使用不变版本的源,然后希望自己合并,而你永远不必自己合并,你可以坚持你的工作完成锁定(使用subversion),但允许其他人自由使用解决问题的工作流程,而不是你的。

  4. 假设(正如您在上面的评论中所述)有人正在删除您正在创作的内容。看到他的变化的完整列表并说“我希望这些变化消失,而不删除其他人做出的其他更改”,这不是很好吗?这被称为使用“变更集”,是像Mercurial(hg)和Git这样的DVCS的关键功能。实际上,能够阻止其他人无所不在地修改您的本地存储库,而是进行更改,然后您可以查看,接受或不接受将始终更好地创建您的(主)副本的一致性存储库比任何本地化的集中锁定模型都可以。

  5. w ^

答案 4 :(得分:3)

我不鼓励结帐/签到方法。一个不错的版本控制系统应该能够合并更改。这为您提供了很多选择:CVS,SVN和Git。

至于源文件中的“混乱”:我不认为存储库目录(例如.svn.git)混乱,因为这允许您复制存储库结构。

然而,在SVN(不确定Git)你可以锁定/解锁文件,基本上模仿VSS结账/签到。​​

答案 5 :(得分:3)

您可能希望调查Team Coherence(http://www.teamcoherence.com)。它不会创建特殊的文件夹,并且有一个Delphi弯曲它。例如,它默认将.pas和.dfm文件组合在一起。帮助非常好。它现在也可以免费获得一个许可证。在使用CVS和FreeVCS之后,我已经使用了多年。

答案 6 :(得分:2)

嗯,定义“杂乱” - 在我看来,每个文件夹的隐藏目录不是混乱,坦白说它根本不是一个问题(供参考,7年的第一个CVS然后Subversion和之前的VSS以及分发了其名称的东西(包括我)。

Subversion非常出色,使用VisualSVN服务器安装几乎是微不足道的,使用Tortoise作为客户端很简单。锁定文件是一个选项,在一般实例中不是一个好选项,但如果需要,它可以用于二进制文件。这可能是与您的标准最接近的匹配,我喜欢它。很多。

供个人使用我正在使用Mercurial - 但是做得不够,不能说它有效(当然像大多数DVCS一样,它没有达到你的“锁定”标准)。 DVCS与不同并存在一些问题。

如果你有钱,Vault(http://www.sourcegear.com)值得一看 - 特别是如果你使用并喜欢VSS,因为它最初是一个“更好”的VSS,尽管它已经有所改进。值得一读的源代码只是为了阅读Erik Sink关于版本控制的想法。

至于其余部分,虽然我同情一个不必(必须)合并内容的愿望,但是注销标记和分支与说“我不需要版本控制”几乎相同 - 事实证明不是这样的。

答案 7 :(得分:2)

SourceGear的Vault对于1位用户是免费的,它为您提供签入/签出以及合并样式的操作。它也完全没有杂乱。我已经使用它一段时间了,它可以创造奇迹。从SourceSafe过渡特别容易,与Visual Studio或Eclipse等IDE集成非常好。

答案 8 :(得分:1)

没有人推荐Bazaar,所以我在这里,我在Delphi项目的日常工作中使用它。 它有一个摇滚的差异查看器,至少对我来说,它与其他类似svn的存储库有所区别。

答案 9 :(得分:1)

我已经多年没有使用它了,但我相信Jedi VCS符合你的所有标准,并且它是用Delphi编写的,并且在处理dfm文件时有一些内置的智能。

答案 10 :(得分:1)

我们正在使用Fossil来管理Delphi程序的源代码。 它非常易于使用(如果您喜欢KISS命令行方法),并且有一个基于Web的内部界面。 无需安装,因为它只能运行一个可执行文件。它是完全跨平台的:您可以在Windows计算机上拥有自己的存储库,然后将其克隆/同步到在Windows或Linux上运行的任何其他服务器。

您可以看到我们的Fossil on our web site托管的开源Delphi程序存储库。对于内部工作,我发现Fossil使用的带宽很少(远小于CVS或SVN),并且能够在闪电战中同步大型项目,即使是通过ADSL或3G连接。

以下是Fossil中包含的一些独特功能(没有设置第三方组件):

  • Bug跟踪和Wiki
  • Web界面
  • Autosync
  • 自包含
  • 简单网络 - Fossil使用普通的旧HTTP
  • CGI已启用 - 无需服务器即可使用化石。
  • 健壮&可靠

答案 11 :(得分:1)

我建议使用Plastic SCM:http://www.plasticscm.com/

  • 最佳(?)合并和分支支持!
  • 但你也可以使用单支+独家结账(又名锁)
  • 非常好用且方便的GUI
  • 最多可释放15位用户
  • 非常好的支持(一天内,大多在一小时内!)
  • 非常现代,自动合并和分支,分发等
  • Delphi插件可用:http://code.google.com/p/plastic4delphi/