Version control 版本控制和在任何地方安装文件的复杂应用程序

Version control 版本控制和在任何地方安装文件的复杂应用程序,version-control,packages,installation-package,Version Control,Packages,Installation Package,我必须在一个网络应用程序上工作。版本控制具有如下结构的目录: appname/conf appname/www appname/etc appname/keys appname/lib ... 但是,要使应用程序工作,它当前必须位于系统目录中: /etc/httpd/conf.d /var/www/html /etc/appname /etc/pki/tls/ /usr/lib/perl5/... ... 有一个RPM来获取VC’ed代码并创建一个包,将代码放入生产位置(即/var/www/

我必须在一个网络应用程序上工作。版本控制具有如下结构的目录:

appname/conf
appname/www
appname/etc
appname/keys
appname/lib
...
但是,要使应用程序工作,它当前必须位于系统目录中:

/etc/httpd/conf.d
/var/www/html
/etc/appname
/etc/pki/tls/
/usr/lib/perl5/...
...
有一个RPM来获取VC’ed代码并创建一个包,将代码放入生产位置(即/var/www/html和其他)。没有安装说明,我应该使用RPM和即兴创作(不理想,我知道)

在这种情况下,每个人如何编辑应用程序,维护版本控制功能(git diff等),并快速更改应用程序以使其可运行?该应用程序是用Perl编写的,因此不需要编译步骤

我想到的方法是:

  • 使用VC'ed目录(代码不会立即执行,您必须有一些安装步骤)
  • 在最终位置处理代码(因此代码编辑立即生效,但您必须手动将代码移回VC'ed目录)
  • 编写一个文件系统监视程序,监视对VC'ed目录的更改,并将更改的文件安装到其最终位置(可能存在类似的情况?)
  • 其他一些我已经忘记的显而易见的方法,我希望有人能告诉我:-)

每个人都是如何处理这样的情况的?

我会在某种测试服务器上编写代码,但代码要放在正确的位置。然后,版本控制需要能够从它们各自的位置获取必要的文件,但在准备就绪之前,您不会部署到“最终”位置(因此,正如您所说,这基本上是一个“安装”步骤)


由于更改内容以使其更合理可能不是您的直接选择,您是否可以将系统目录符号链接到VC目录?

以下两者之间存在差异:

  • 版本控制:管理源代码并构建交付(在您的情况下,可以是需要部署在系统目录中的所有文件的tar.gz)
  • 发布管理:接收交付并在其运行环境中复制/部署
某种类型的持续集成过程(基于调度器,如)可以帮助您监控VC,并在新提交后立即构建/部署