【问题标题】:Using SVN in web-development在 Web 开发中使用 SVN
【发布时间】:2011-01-16 16:51:44
【问题描述】:

最近看了这篇文章:http://www.smashingmagazine.com/2009/09/25/svn-strikes-back-a-serious-vulnerability-found/

许多流行网站如 apache.org、php.net (http://ru2.php.net/.svn/entries)、classmates.com 和俄罗斯 Yandex 的开发人员都使用 SVN,但不要遵循SVN(使用命令export)。

那么,什么原因不使用svn export,而不是像他们所做的那样更新公共副本?

【问题讨论】:

    标签: php security svn apache


    【解决方案1】:

    有些人,不包括我自己,认为要部署到生产环境中,你应该发出一个 svn up。如果您进行导出,它会丢失有关版本控制的元数据,因此您不能这样做,您必须使用另一种机制来跟踪哪个版本在哪里。这是一个简单的解决方案,但我认为它可以用于惰性打包,也可以用于“在生产中修复”,就好像你这样做你也可以从生产中签入......

    【讨论】:

    • 不过,我应该说,当您只使用静态文件(例如图像、HTML 和 php)时,这种方法还有一些值得推荐的地方。当你有 jsp 或其他可执行代码是某种派生对象的东西时,它会迅速变得糟糕。
    • 是的,导出是最好的选择,您不希望在您的网络根目录中有一堆 .svn 文件!
    • 我更多的是在想,如果你只是 svn up,那么你可能没有真正测试过你部署的东西,或者你可能忘记标记它,或者它可能没有正确的批准等。我更愿意部署已经通过所有网关/批准的东西。
    【解决方案2】:

    从我的角度来看,我所做的是锁定/阻止对服务器(Apache2 或 IIS)上任何 .svn 文件的访问,这样隐藏文件夹就无法从外部访问,并且它允许对我们的网站进行版本跟踪在推出前不需要编译的使用

    语言如:

    • PHP
    • ASP(不是 .NET)
    • 纯 HTML
    • 冷融合
    • PDF / IMAGE 版本控制(如果需要,在我的情况下,我们需要它来为客户更新 PDF 文档)。

    当然,您可以使用 SVN 进行 Web 开发,但如果您不小心,您需要小心,因为您将 .svn 文件夹暴露给全世界。否则,它是一种可以让您的工作更轻松、更高效的工具。

    话虽如此,我们只是在我们的产品上运行SVN UPDATE 来更新更改的文件,并且由于有限的开发人员一次只处理一段代码(就像我在我的例子中所说的那样),我们不会混淆错误的东西被部署。 PLUS 为了安全起见,请始终执行 SVN CHECK FOR MODIFICATIONS 以查看将要更新的内容,嘿,如果您确实犯了错误,请回滚。

    【讨论】:

    • 为什么不使用svn export
    • 因为我们只对需要编译的项目使用 SVN 导出但是我们也没有真正这样做,因为我们有 Hudson 设置来自动部署构建我们(ASP.NET + JAVA)。
    【解决方案3】:

    svn export 文件永远不能被删除,只能添加和修改。有时这可能是个问题。

    【讨论】:

    • 这就是为什么你导出到不同的目录然后rsync它到部署目录:-)
    【解决方案4】:

    当整个网站是开源的并且可以通过公共资源(如PHP's)下载时。保护 .svn 目录以便其他人无法获取源代码可能不值得简单地做一个svn up

    【讨论】:

      猜你喜欢
      • 2010-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多