SVN-如何保持核心源代码的机密性,让自由职业者只访问模块

SVN-如何保持核心源代码的机密性,让自由职业者只访问模块,svn,copy-protection,modular,source-code-protection,Svn,Copy Protection,Modular,Source Code Protection,我正在开发一个模块化的Propitary PHP应用程序。作为项目负责人和所有者,我希望对核心引擎保密。自由职业者将在模块上工作(例如,一个模块中有一个自由职业者,他们看不到其他模块) 我为核心(1个回购)和模块(1个模块1个回购)创建了回购协议。AFAIK回购协议应置于HTDOC之外。现在我考虑一下这个场景:使用SVN,我将为自由职业者A提供访问repo A的权限,为自由职业者B提供访问repo B的权限,等等。当结帐时,他在计算机上只有模块A可编辑。为了测试他的模块,他将提交。但由于它将转到

我正在开发一个模块化的Propitary PHP应用程序。作为项目负责人和所有者,我希望对核心引擎保密。自由职业者将在模块上工作(例如,一个模块中有一个自由职业者,他们看不到其他模块)

我为核心(1个回购)和模块(1个模块1个回购)创建了回购协议。AFAIK回购协议应置于HTDOC之外。现在我考虑一下这个场景:使用SVN,我将为自由职业者A提供访问repo A的权限,为自由职业者B提供访问repo B的权限,等等。当结帐时,他在计算机上只有模块A可编辑。为了测试他的模块,他将提交。但由于它将转到svndir而不是htdocs,因此他无法立即测试它。然后,他需要将提交的代码导出到htdocs。我想跳过这个导出步骤

(1) 有没有一种方法可以让他直接将代码提交给htdocs来进行测试,使其更实用


(2) 有没有更好的方案来实现这一点(例如,自由职业者只允许读/写他所工作的模块,而不能访问-甚至不能读取-其他模块和核心系统)?

你说的有三个地方:

  • Subversion存储库本身。这是所有源代码的生存之地。可以通过Subversion客户端访问存储库,该客户端将与服务器进行通信。服务器可以使用SVN协议或HTTP/HTTPS。如果要使用HTTP/HTTPS,则需要设置Apache服务器。如果要运行SVN,则需要运行
    svnserve
    进程
  • 开发人员系统上的本地工作目录。这是文件签出到的位置,开发人员可以在这里进行更改。它不一定和存储库在同一台机器上
  • PHP Web服务器。这是PHP文件需要的地方,以便工作,并且可能需要进行测试
让我们一次看一个:使用SVN或HTTP/HTTPS,可以限制谁可以查看、签出和将代码提交到存储库中。在Subversion中,可以将其指定为目录级别。因此,一个开发人员可以将代码签入
http://myserver/svnrepos/module1
而另一个人可以从
http://myserver/svnrepos/module2
,两人都无法在
http://myserver/svnrepos/core

棘手的部分是将这些信息放到服务器上进行测试。问题是如何允许开发人员在不必将代码放到服务器上的情况下进行提交。有几种方法可以做到这一点

一种是创建一个服务器分支。如果开发人员需要PHP服务器上的代码,他们会将代码合并到服务器分支上。然后,需要一种机制将代码从存储库移动到PHP服务器

我不会为此使用post-commit钩子。您不希望开发人员等待钩子将代码复制到服务器。此外,您可能需要启动和关闭服务器

相反,使用crontab来监视Subversion存储库(尤其是服务器分支),然后当它检测到更改时,关闭服务器,更新服务器中的文件,然后重新启动服务器。我的方法是使用两个不同的目录。在服务器上安装directory1。使用
svn export
将文件导出到目录2。因此,服务器仍然处于运行状态。然后,取下服务器,将
directory2
移动到
directory1
,然后重新启动服务器。这样可以将停机时间降至最低,并使服务器处于或多或少的稳定状态

但是,您应该查看以帮助您完成项目。Jenkins将允许您和您的开发人员查看他们的更改(您可以限制谁看到什么),并进行基本测试。例如,您可以在提交后运行(查看代码有多凌乱)和(复制粘贴检测器),Jenkins将显示结果。然后,您可以在Jenkins上放置一个deploy按钮,开发人员可以将其构建部署到服务器上


Jenkins的设置和使用都很简单。各种缺陷跟踪系统、Subversion和各种测试模块都有大量的可用性。我不知道PHP有多少可用的,但是你可以看看

你说的有三个地方:

  • Subversion存储库本身。这是所有源代码的生存之地。可以通过Subversion客户端访问存储库,该客户端将与服务器进行通信。服务器可以使用SVN协议或HTTP/HTTPS。如果要使用HTTP/HTTPS,则需要设置Apache服务器。如果要运行SVN,则需要运行
    svnserve
    进程
  • 开发人员系统上的本地工作目录。这是文件签出到的位置,开发人员可以在这里进行更改。它不一定和存储库在同一台机器上
  • PHP Web服务器。这是PHP文件需要的地方,以便工作,并且可能需要进行测试
让我们一次看一个:使用SVN或HTTP/HTTPS,可以限制谁可以查看、签出和将代码提交到存储库中。在Subversion中,可以将其指定为目录级别。因此,一个开发人员可以将代码签入
http://myserver/svnrepos/module1
而另一个人可以从
http://myserver/svnrepos/module2
,两人都无法在
http://myserver/svnrepos/core

棘手的部分是将这些信息放到服务器上进行测试。问题是如何允许开发人员在不必将代码放到服务器上的情况下进行提交。有几种方法可以做到这一点

一种是创建一个服务器分支。如果开发人员需要PHP服务器上的代码,他们会将代码合并到服务器分支上。然后,需要一种机制将代码从存储库移动到PHP服务器

我不会伤害你