管理共享网站上的团队开发

时间:2010-06-11 19:41:02

标签: svn version-control

我需要了解在共享服务器(hostgator)上管理团队Web开发的最佳方法。

我以前在共享服务器上做了一些单独的Web开发,我总是通过SSH设置SVN,以获得一个非常好的开发工作流程(版本控制,快速提交,工作虽然日食/ subclipse等) 。但是,我也知道,通过该设置,我必须制作一些非常复杂的提交后挂钩,以将存储库导出到/ public_html;因此,使存储库代码可测试。

对于整个团队来说,这似乎是一个单调乏味,容易出错的设置。我希望能够:

  1. 轻松测试存储库中的最新代码。
  2. 可以轻松地将存储库中的代码移动到生产中。
  3. 使用像eclipse / subclipse这样的IDE来轻松使用存储库。
  4. 考虑到这一点,有没有人知道一个良好的版本控制/存储库设置,用于开发一个约4-5人团队的网站?

    非常感谢。

    编辑:我非常有信心我被SVN困住了。不是个人偏好,而是我的网络主机的限制。但是,它不像存储库问题(可以使用SVN管理),而是部署问题。什么以及如何将存储库代码部署到测试和生产的最佳方式。我的共享托管服务器上没有像Hudson这样的构建服务器。是的,我可以编写post-commit钩子,但它似乎有点容易出错,而且它们已经非常花哨了。如果这是我能得到的最好的,那么我将不得不管理。只是好奇是否有人遇到了另一种选择。

5 个答案:

答案 0 :(得分:5)

让我们直截了当

与任何数量的同事合作项目的最佳方式是通过一些svn客户端。我对tortoisesvn

有最好的体验

在开始一个新项目之后,你应该做的第一件事就是像这样设置项目存储库

your_project
  trunk
  branches
  tags

其中trunk代表您最新的稳定生产代码。 dir branches适用于从事项目工作的开发人员。每个开发人员都应该拥有自己的分支,当然还应该有一个像

这样的发布目录
branches
  r01
  developer1
  developer2
  developer3

所以行动方案应该是这样的:

  • 在每个月的开始(取决于项目上的活动)建立新版本(从主干创建为分支)
  • 新任务处理完毕,每个开发人员都创建自己的新分支
  • 当开发人员完成他的分支时,他将其合并回新版本
  • 在每个开发人员关闭他的分支并成功完成新版本之后,管理员创建一个名为'tags / test-r01.01'的标签

这里有一些像hudson这样的工具,他在检测到新的测试标签后会自动部署新测试。当然,何时何地依赖于配置

最后,当时机成熟时(每个测试人员完成他/她的工作)管理员将最新版本合并到trunk(我们的稳定代码),afterwhitch创建一个新标签,例如标签/ r01从trunk和hudson完成剩下的工作(自动部署我们网站的新版本

然而,我只是在这里擦拭表面,在乌龟svn和哈德森手册上围绕这个特殊问题进行了很多头脑风暴。希望这有帮助

答案 1 :(得分:2)

我知道你具体提到了颠覆,但你是否坚持颠覆?我发现在使用git的多人开发环境中,情况要好得多。仅合并跟踪能力就是救命稻草。事实上,每个人在本地拥有完整的历史记录,可以更快地查看历史记录和离线开发。你在颠覆中失去了一些能力。最大的损失是子树检查和在子树上执行ACL的能力。恕我直言,那些值得放弃。一些小脚本,您也可以使用git进行半自动部署。

答案 2 :(得分:1)

我正在探索https://bespin.mozillalabs.com/用于我的网站开发的可能性。看起来很有希望。编辑器和版本控制系统。完全在线。尝试一次,看看你是否喜欢它。

答案 3 :(得分:0)

您可以使用以下内容:

http://www.assembla.com?affiliate=joedeveloper

(原谅联盟嫖娼)

这使您可以从回购单击一次部署,并为您提供Scrum工具和门票等内容。

其他低技术解决方案是简单地将登台服务器设为public_html / git存储库。

在生产服务器上进行shell访问时,您可以根据需要提供稳定的分支。

答案 4 :(得分:0)

您使用SVN的示例似乎非常简单。我猜你用钩子后提交注释得到的东西就像持续集成或每晚构建过程。有许多工具可以帮助您。

这里有一个很好的讨论:Setting up Continuous Integration with SVN

至于团队中最好的源代码控制系统,似乎大多数进入游戏的人都喜欢使用git或Mercurial(两者都被认为是分布式版本控制系统)。对SVN的最大批评是分支/合并功能的难度。大多数人推广git / mercurial是因为它具有轻松分支和合并的能力,允许每个开发人员在他们的本地机器上拥有自己的存储库,并在他们到达特定里程碑时将他们的存储库与中央存储库合并。这意味着他们不必使用半工作代码来破坏构建,但是当他们对本地计算机上的分支进行非常复杂的更改时,也不必在没有源代码控制的情况下使用数周。