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


How to configure subversion, for web application development, to limit developer access to source code

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

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

我们的应用程序被分成不同的模块,我们已经将工作外包给了一些自由职业者。自由职业者根据自己的技能在前端或后端独立工作到目前为止,这项工作一直在通过专用网络进行,我们希望转向在线系统

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

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

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

总之,我们正在尝试实现的功能如下

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

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

  3. 在线存储库/在线副本-(我们正在使用VPN连接,希望网站使用在线副本。因此,当提交时,开发人员可以在线查看他的更改,而不是VPN)


经过大量的网上搜索,我们找到了以下的可能性。但不确定这是否是正确的做法。

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

这样的配置是使用subversion实现的吗?还是我们应该看看其他开源版本控制工具?

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

无论如何。。

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

  1. 提交后挂钩,无条件"做站点"是常见的不太好的想法:开发人员可以提交半成品代码,甚至不考虑测试它
  2. 当网站公开时,让你的工作副本公开-从安全和IP的POV来看,这不是一个好主意。对于SVN 1.7来说,将WC根移到web根之外是一个更好的主意
  3. 如果模块被拆分到不同的目录,您可以创建每个模块的存储库和"超级存储库",它们与svn:externals一起在Project中组合存储库
  4. 树内的路径访问可以通过authz_svn_module轻松控制(在http repo中)
  5. 启用为开发人员创建私有的个人短时间分支("货架"),这有助于避免(1)巨大的混乱提交

首先,我建议阅读《持续交付》一书(此处为网站)。它为如何设置这种东西提供了许多示例。

其次,是的,SVN允许您在文件夹级别和存储库级别分配权限(但请阅读"您真的想这样做吗"部分)。

第三,确保开发人员拥有最新的副本是你应该按照规程灌输的东西——"在开始工作之前,在提交之前,运行svn-update")。提交后挂钩有一个破坏东西的坏习惯,而且你没有阻止破坏构建的提交。

第四,我会考虑建立一个持续集成服务器(在continuous Delivery一书中也有描述)。这确保了无论何时将开发人员的工作组合在一起,都能得到一个干净、有效的构建。