版本控制;选择,选择,选择!

时间:2009-11-03 13:28:40

标签: svn git version-control mercurial

我们的设置如下:

我们有一个运行Ubuntu的本地开发服务器,其设置与我们的实时主机相似。 每个开发人员都在Windows计算机上工作,并从本地开发服务器访问文件。

有问题的项目是许多用PHP构建的网站。看作there are no good reasons not to use version control,我们打算在服务器上运行SVN,Git,Mercurial或其他东西。

问题是,我们如何做到这一点,但是从Windows机器提交更改,以及我们如何检查站点(项目)的完成区域或整个站点上传到实时(远程)服务器?

9 个答案:

答案 0 :(得分:10)

为什么要使用SVN:

  • 成熟的代码库
  • Windows上的成熟GUI工具(如果您的团队喜欢它们):TortoiseSVN
  • 较浅的学习曲线(特别是如果你已经使用过CVS)
  • 稀疏结帐

为什么要使用git(也可能适用于mercurial):

  • 更容易分支和合并
  • 开发人员可以与自己的本地存储库进行交互,而无需联系“主”存储库
  • 可以使用上游SVN或CVS存储库(但如果您有选择,如果开发人员使用git,我仍然会使用git上游)
  • “足够好”Windows GUI工具(TortoiseGIT实际上可能和TortoiseSVN一样好......在一两年内没有看过它。)
  • 更强大的命令

处理您的用例的一种方法是:   - 每个开发人员都有自己的私有git存储库   - 开发人员在测试并准备好进行生产使用时,会将代码更改推送到开发服务器的存储库。   - 实时服务器有一个结账,可以定期更新,手动更新,或通过开发服务器存储库上的提交挂钩更新(提交时,“ssh live.server.com(cd / my / dir; git pull origin) HEAD)“)。

此过程也可以适用于SVN,但私有存储库只会成为结帐。

答案 1 :(得分:5)

颠覆会很有效。我们在Linux机器上运行Subversion,我们所有的开发工作都在Windows机器上完成。我们有90%的时间通过IDE检查项目(通常是Eclipse中的subclipse),另外10%的时间我们使用TortoiseSVN其中任何一个都可以正常工作。

您可以通过IDE或Tortoise提交对存储库的更改。您可以将持续集成服务器与存储库绑定,以便在将代码更改提交到存储库时自动构建项目。

答案 2 :(得分:5)

我们正在使用Subversion with TortoiseSVN。它运作良好。我们最后一次看Git(六个月前?),Windows工具还没有。 Perforce(http://www.perforce.com)是我用过的最好的商业解决方案。

确保您了解分布式修订控制(Git)与Subversion和其他传统版本控制系统的区别。他们不一样。

GitSvnComparison Git For Designers

如果您正在使用PHP站点,则可以创建repo的tar文件并将其发送到测试服务器进行测试。一旦您确认该网站正常运行,您就可以将该tar文件推送到实际网站。

答案 3 :(得分:1)

除非我误解了你的问题......

您提到的每个源代码控制提供程序都有一个Windows版本,或者在cygwin下工作,因此应该在Windows下完全按照* nix的方式工作 - 因此您应该根据要使用的源控制提供程序做出决定与通常情况相同的标准。

答案 4 :(得分:1)

Mercurial非常适合。由于开发人员机器是基于Windows的,你可以得到比git更好的支持和工具,但最终得到的系统比颠覆更灵活。

在我们的设置中,我们通过apache with mod_wsgi提供存储库,这很容易设置,并且为我们提供了很好的服务。

对于部署,如果您希望自动完成,我建议您查看mercurial hooks

答案 5 :(得分:0)

Windows机器应该能够使用您选择的客户端连接到变更控制服务器,没问题(例如,对于Windows,TortoiseSVN)。

要从源存储库执行自动构建,您可以使用某种持续集成(CI)软件。我对LAMP堆栈的任何产品都不熟悉,但我确信有很多。而且,如果它是用于网络的PHP,那么你真的不需要构建,因为你需要某种自动复制: - )

答案 6 :(得分:0)

您如何设置将取决于您选择的源控制软件。

我会在内部服务器上设置一个中央存储库。这是svn所必需的,如果你使用的是git或hg,它会为你提供一个规范的位置来提取变化。

开发人员可以将存储库签出/克隆到其本地计算机并提交/推送更改。我建议使用分支来区分生产代码和开发代码。

要部署到网站,您需要一个从中央存储库检出的流程,对生产分支或标记的更新,然后将文件复制到实时服务器。

确切的细节很大程度上取决于您使用的版本控制系统。

答案 7 :(得分:0)

我认为你问题的简单答案是:这些不是挑战。这就是它的工作原理。

我们在这里使用SVN。大多数开发人员在Windows上工作,但我们的测试组使用Linux,而我们的生产服务器是Linux。

开发人员使用Eclipse的SVN插件从SVN存储库中检出。我还使用TortoiseSVN和SVN命令行检查了Windows。当我们准备部署到其中一个测试或生产服务器时,我们只需从SVN上检查相应的服务器,编译,然后我们就完成了。使用PHP,您甚至没有编译步骤。

为了解决我在家里做的事情 - 在家里就是所有的Windows,但我使用命令行SVN进行管理,然后使用Subcommander做工作站的东西。

答案 8 :(得分:0)

如果您想在Windows上工作,我还建议您查看Bazaar,它在所有平台(包括Windows)上都有很好的UI工具。一个很好的事情是,您可以轻松地设置跟踪分支,并仍然在本地脱机/分支本地工作,这是一种混合分布式/集中式模型。起初听起来可能很奇怪,但如果你的团队很小,它实际上非常有用。你总是可以使用dev服务器的中央版本,并从它标记/镜像到实时站点;而每个开发人员都在本地副本上工作并推送到开发服务器。