我正在考虑将运行多个网站的代码库放入版本控制.这个代码库有几个实例在不同的虚拟服务器上运行网站.
我正在努力解决的问题是,这些或多或少相同代码的单独实例中的每一个都具有具有特定于站点的功能的子目录.但似乎版本控制系统想要控制整个目录层次结构.
例如,每个实例都有该目录
/www/smarty/libs/plugins/
Run Code Online (Sandbox Code Playgroud)
在哪里可以找到适合smarty的特定于站点的功能.当我们准备将其置于版本控制中时,该文件夹/www将是根目录.
因此,一种选择是将所有特定于站点的功能发送到所有站点.我本身并没有看到任何问题,但它似乎在某种程度上是"错误的".会有一堆文件只属于一个部署.
另一种选择是为代码库中的每个站点的特定文件建立单独的存储库.但是,当试图正确部署新网站时,这听起来很快就会成为一场噩梦.
最好的方法是什么?我们正在研究的版本控制系统是颠覆.
一般来说,应该使用源控制系统来控制源。他们无法完全控制文件层次结构、权限和其他相关事物。这些最好留给部署配置。
让您需要的每个项目和目录在版本控制系统中表示一次怎么样?然后,在一个单独的目录(可能称为/build/)中包含各种配置布局。您可能有一个构建每个站点的 ant 文件或 maven。或者,您可以使用Capistrano或Fabric 等工具来更好地控制每个部署。