【问题标题】:SVN for development web server用于开发 Web 服务器的 SVN
【发布时间】:2023-04-02 03:33:01
【问题描述】:

我已经检查了有关此主题的其他线程,但没有真正回答我的确切问题。我目前正在开发一个站点,该站点每天使用 cron 和一些外部数据馈送多次更新实时 Web 服务器上的数据(通常是照片)。此外,我们即将允许用户提交数据。现在,我想开始使用 svn,因为项目变得足够大,开始变得相对复杂,人们正在实时服务器上编辑我们的代码。我已经为 apache 安装了 svn,下面提到的所有子域都是使用 vhosts 在一台服务器上设置的。我们还没有开始使用这个工作流程,所以如果我能在开始之前得到一些建议,我们将不胜感激。

好的,所以我在子域 (http://svn.website.com) 下设置了一个存储库,并将其签出到开发子域 (http://dev.website.com)。我还计划将副本签出到实时环境 (http://www.website.com)。这个想法是首先在 dev 子域上开发,当它准备好上线时提交,然后 svn up 到上线环境。我已经阅读了导出和更新之间的利弊,更新似乎最适合这个项目,因为我们经常会进行小的调整/代码更改,而导出似乎有点过头了。我还设置了适当的指令以避免 .svn 目录访问。听起来我在正确的轨道上吗?有什么需要注意的吗?

如果以下是处理所有事情的好方法,那么我们可以进入第二个问题。用户提交的数据(主要是照片)正在上传到直播环境。我必须以某种方式在实时环境和开发环境之间进行管理,以便我们可以使用最新的用户提交的文件进行开发。我真的不知道最好的方法...我觉得如果每次提交文件时我都去svn addsvn ci 会有一个严重的缺陷。实现这一目标的最佳方法是什么?

【问题讨论】:

  • 为什么需要使用最新的用户提交的文件进行开发?仅具有代表性的样本就足以用于开发目的吗?
  • 数据不需要完全是最新的,但是,我们将与不受版本控制的数据库进行交互,并且该数据库对应于服务器上的文件。跨度>

标签: php apache svn development-environment production-environment


【解决方案1】:

听起来你在成长!

首先,我会质疑 SVN 是否真的是最佳选择。我的猜测是你已经知道它,已经使用它,就像你团队中的其他人一样,你想坚持下去。这很好,但仅供参考,我使用过 SVN 和 Git,我发现 Git 通常更易于使用,我认为它越来越被应用程序开发人员使用。

至于您的工作流程,我曾经与一个大型分布式团队经历了几乎相同的流程,并且运行良好。根据您获得的流量,我可能会建议不同的生产部署策略。当您准备好进行新的生产推送时,克隆到一个新目录,可能按日期或里程碑名称标记,并为该目录创建一个新的虚拟主机。这样一来,您将获得一些好处:

  1. 您不会冒有人访问您的应用程序并请求某个正在更新的文件的风险
  2. 您只需更改活动的生产虚拟主机,即可轻松恢复到较早的里程碑。无论您测试得多么彻底,错误和问题都会导致开发失败,有时它们严重到足以保证恢复到以前的代码库。当然,架构更改会增加复杂性,但如果我们只是在讨论代码,这应该避免在凌晨 2 点疯狂的提交恢复。

这是 Rasmus Lerdorf 在我参加的一次会议上提出的,当时他提出的问题几乎与您提出的相同。

至于确保开发人员使用最新的文件集,您真的要这样做吗?如果您正在处理大量图像,那将占用大量硬盘空间。当然,使用 CDN 或其他海量存储没什么大不了的,但您是否希望您的开发人员每次 svn 时都必须下载 1000 张新照片?

如果您对此一无所知,我建议在您的应用程序中添加一些代码,以便在 svn 状态具有特定结果时自动执行 svn add、svn ci(即,这是您可以调用的脚本cron,或每次添加新媒体时)。您还可以检查使用 svn 挂钩(git 也有这些)来执行诸如通知您 repo 已更新之类的事情。

希望这会有所帮助。我强烈建议不要包含用户上传的所有文件,除非您有非常非常充分的理由这样做。会增加的复杂性会很痛苦=)

祝你好运,欢迎来到 StackOverflow!

【讨论】:

  • 感谢您的快速响应。在问这个问题之前,我确实简要地研究了使用 git 而不是 svn。我对 git 没有任何经验,认为 svn 可能就足够了。 Git 似乎是这些天的趋势,所以我会更多地研究它。关于每个 svn up 重新下载数千张新照片,实际上我们目前的设置方式不会成为问题。我们只会检查 dev 子域下的一个工作副本,我们将直接编辑这些文件(而不是为每个开发人员检查多个副本)。
  • 这是否意味着您直接在服务器上进行开发?
  • 是的。这是一个非常简单的网站,开始时只有几个文件。只有 3 名开发人员,我们都使用带有集成 FTP 的编辑器或 IDE。我们目前正在现场环境中开发;一开始这已经足够了,因为我们没有获得太多流量,甚至没有在网站上工作太多,但现在它正在增长,我想使用一些版本控制,同时仍然能够使用我们 IDE 的 FTP 功能进行编辑。提示 dev 子域和 svn。
  • 真的需要让您的开发人员在本地工作。相信我……你会更有效率。另外,如果你有 3 个人在开发部门工作,你怎么知道谁在提交什么?当开发人员将代码下载到他们的本地机器并进行推送时,svn 就是这样知道是谁进行了更改。
  • 虽然我在很大程度上同意你的看法,但在本地工作可能并不是一个真正的选择。一个主要原因是因为 web 服务器是 unix 并且有两个开发人员使用 windows。虽然我知道这些可以配置为非常相似,但 unix apache 和 mysql apache 之间的差异确实会导致一些问题。我考虑过在服务器本身上创建三个独立的开发分支。我可能会走那条路,但是,让我们现在假设我只会创建一个驻留在 Web 服务器上的开发分支。毕竟,它会比我们当前的设置好多
猜你喜欢
  • 2010-10-27
  • 2016-06-26
  • 2010-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多