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

时间:2012-02-20 06:35:41

标签: php git svn web-applications version-control

我的团队一直致力于基于php的web应用程序,后端的msql和前端的html,css,jquery。我们一直在工作很长一段时间没有版本控制。该项目现在变得非常庞大和复杂,并且觉得是时候使用某种版本控制(vc)了。

我们已经阅读了很多关于vc的内容,并且已经找到了人们建议的几种技术。虽然它可能是一个完美的方法。它没有有效地适用于我们的案例。

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

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

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

有没有办法可以实现上述任务?对于Web应用程序?使用类似subversion的版本控制?

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

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

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

  3. 在线存储库/在线复制 - (我们正在开发VPN连接,并且希望网站能够在网络副本上工作。所以当提交时,开发人员可以在线查看他的更改,而不是VPN)


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

    1. 对于即时效果 - > 整个系统在webroot文件夹中检出(例如wamp / www / projectName),每次提交时,都会调用bat文件来更新webroot中的当前系统,使用post-commit钩子。
    2. 访问受限 - > 所有开发人员的所有开发都发生在主干或开发分支中,开发人员可以访问各自的部分,在需要时锁定它,并在准备好看到其效果时提交更改(请注意仍在dev分支中)。
    3. 只要创建稳定版本,就会创建
    4. 标记。这些标记的副本永远不会被修改。
    5. 是否可以使用subversion实现这样的配置,还是应该查看其他开源版本控制工具?

3 个答案:

答案 0 :(得分:3)

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

无论如何..

实现所需内容的最简单方法可能是将每个模块放入自己的存储库(svn,git,等等)。然后,您可以有选择地选择谁有权访问哪个仓库。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

首先,我建议您阅读“持续投放”一书(网站here)。它提供了很多关于如何设置此类事物的例子。

其次,是的,SVN允许您assign permissions on a folder level以及回购级别(但请阅读“您真的想要这样做”部分)。

第三,确保开发人员拥有最新的副本是你应该通过纪律灌输的 - “在开始工作之前,在提交之前,运行svn update”)。提交后挂钩有一个令人讨厌的破坏习惯的习惯,你并没有阻止破坏构建的提交。

第四,我考虑建立一个持续集成服务器(也在持续交付书中描述)。这样,无论何时将开发人员的工作整合在一起,这都可以确保您拥有干净,有效的构建。