Php 如何为web应用程序开发配置subversion,以限制开发人员对源代码的访问

Php 如何为web应用程序开发配置subversion,以限制开发人员对源代码的访问,php,git,svn,web-applications,version-control,Php,Git,Svn,Web Applications,Version Control,我的团队一直在开发一个基于php、msql(后端)和html、css、jquery(前端)的web应用程序。我们已经在没有版本控制的情况下工作了很长一段时间。这个项目现在已经变得相当大和复杂,并且觉得是时候使用某种版本控制(vc)了 我们已经读了很多关于vc的书,并且发现了一些人们建议的技巧。尽管这对他们来说可能是一个完美的方法。它不能有效地适用于我们的情况 我们的应用程序分为多个模块,我们将工作外包给了一些自由职业者。自由职业者根据他们的技能在前端或后端独立工作。到目前为止,这项工作一直在一个

我的团队一直在开发一个基于php、msql(后端)和html、css、jquery(前端)的web应用程序。我们已经在没有版本控制的情况下工作了很长一段时间。这个项目现在已经变得相当大和复杂,并且觉得是时候使用某种版本控制(vc)了

我们已经读了很多关于vc的书,并且发现了一些人们建议的技巧。尽管这对他们来说可能是一个完美的方法。它不能有效地适用于我们的情况

我们的应用程序分为多个模块,我们将工作外包给了一些自由职业者。自由职业者根据他们的技能在前端或后端独立工作。到目前为止,这项工作一直在一个私有网络上进行,我们希望转向一个在线系统

现在的问题是,我们不能将整个项目的源代码分发给所有开发人员。开发人员只允许使用一些公共库及其各自的模块

因此,我们不能允许将整个项目下载到每个本地机器上。因此,我们需要找到一种方法,让所有开发人员都在同一个分支或主干上工作。为了能够仅访问代码的某些部分,并且在保存/提交时能够检查其更改是如何立即生效的

有没有办法完成上述任务?对于web应用程序?使用像subversion这样的版本控制

总而言之,我们尝试实现的功能如下。

  • 保存/提交时的即时效果(当每个开发人员保存/提交时,他们应该能够立即通过浏览器测试正常效果)

  • 有限访问(每个开发人员只能访问项目的特定部分,而不能访问整个项目。)

  • 在线存储库/在线副本-(我们正在进行VPN连接,希望网站能够在线副本。因此,当提交时,开发人员可以在线查看其更改,而不是VPN)


  • 经过大量的在线搜索,我们能够找到以下可能性。但不确定这是否正确

  • 对于即时效果-->整个系统在webroot文件夹(例如wamp/www/projectName)中签出,每次使用提交后挂钩进行提交时,都会调用bat文件来更新webroot中的当前系统
  • 有限访问-->所有开发人员的所有开发都发生在主干或开发分支中,开发人员可以访问各自的部分,在需要时锁定它,并在准备好查看其效果时提交更改(请注意,仍在开发分支中)
  • 每当创建稳定版本时,都会创建标记。这些带标签的副本永远不会被修改

  • 使用subversion可以实现这样的配置吗?或者我们应该看看其他开源版本控制工具吗?

    试图阻止开发人员访问整个源代码树对我来说似乎有点误导。这是公司政治吗?你不信任你的开发者吗

    无论如何


    实现您想要的最简单的方法可能是将每个模块放入其自己的存储库(svn、git等)。然后您可以有选择地选择谁有权访问哪个repo。

    试图阻止开发人员访问整个源代码树对我来说似乎有点误导。这是公司政治吗?你不信任你的开发者吗

    无论如何

    实现您想要的最简单的方法可能是将每个模块放入其自己的存储库(svn、git等)。然后,您可以有选择地选择谁有权获得哪种回购协议

  • Post-commit-hook,无条件地“do-site”是一个常见的不太好的主意:开发人员可以提交半成品代码,甚至不考虑测试它
  • 当站点公开时,将您的工作副本公开——从安全和IP的角度来看,这不是一个好主意。对于SVN1.7来说,将WC根目录移到web根目录之外是更好的主意
  • 若模块被拆分到不同的目录中,那个么您可以为每个模块创建存储库和“超级存储库”,它们通过svn:externals在项目中组合存储库
  • authz_svn_模块可以轻松控制树内的路径访问(在http repo中)
  • 启用为开发人员创建私有的个人短期分支(“工具架”),这有助于避免(1)大量混乱的提交
  • Post-commit-hook,无条件地“do-site”是一个常见的不太好的主意:开发人员可以提交半成品代码,甚至不考虑测试它
  • 当站点公开时,将您的工作副本公开——从安全和IP的角度来看,这不是一个好主意。对于SVN1.7来说,将WC根目录移到web根目录之外是更好的主意
  • 若模块被拆分到不同的目录中,那个么您可以为每个模块创建存储库和“超级存储库”,它们通过svn:externals在项目中组合存储库
  • authz_svn_模块可以轻松控制树内的路径访问(在http repo中)
  • 启用为开发人员创建私有的个人短期分支(“工具架”),这有助于避免(1)大量混乱的提交

  • 首先,我建议阅读“持续交付”一书(网站)。它提供了许多关于如何设置此类内容的示例

    第二,是的,SVN允许您在回购级别(但请阅读“您真的想这样做吗”一节)的基础上进行调整

    第三,确保开发人员拥有最新的副本是您应该遵循的原则——“在开始工作之前,在提交之前,运行svn更新”)。Post-commit钩子有一个坏习惯,就是破坏内容,而您并没有阻止破坏b