使用git和符号链接的基于组件的Web项目目录布局

use*_*021 6 linux git symlink

我正在计划我的linux/apache/php web项目的目录结构,如下所示:

只会www.example.com/webroot/暴露在阿帕奇

www.example.com/
  webroot/
    index.php
    comp1/
    comp2/
  component/
    comp1/
      comp1.class.php
      comp1.js
    comp2/
      comp2.class.php
      comp2.css
  lib/
    lib1/
      lib1.class.php
Run Code Online (Sandbox Code Playgroud)

component/lib/目录将只在PHP路径.

为了使webroot目录中的css和js文件可见,我计划使用符号链接.

  webroot/
    index.php
    comp1/
      comp1.js (symlinked)
    comp2/
      comp2.css (symlinked)
Run Code Online (Sandbox Code Playgroud)

我尝试遵循以下原则:

  • 按组件和库布局,而不是按文件类型而不是"公共"或"非公共",index.php是一个例外.这是为了更容易开发.
  • 公开onle公共Web目录中的最小文件集,并使其他所有内容无法访问Web.将组件和库需要公开的文件符号化到公共位置,但仍然镜像布局.因此,组件和库结构也可以在链接中生成的html代码中看到,这可能有助于开发.
  • git的使用应该是安全的并且始终有效.可以按照一些程序将符号链接添加到git中,但是在检查完它们之后,应该安全地处理更改分支.

git如何正确处理单个文件的符号链接,有什么需要考虑的吗?

说到图像,我需要链接目录,如何用git处理?

  component/
    comp3/
      comp3.class.php
      img/
        img1.jpg
        img2.jpg
        img3.jpg
Run Code Online (Sandbox Code Playgroud)

它们应该链接在这里:

  webroot/
    comp3/
      img/ (symlinked ?)
Run Code Online (Sandbox Code Playgroud)

如果使用符号链接有缺点,我可以直接将图像移动到webroot/tree,这将打破第三个原则(git实用性).

所以这是一个git和符号链接问题.但我有兴趣听听有关php布局的评论,也许你想使用评论功能.

Von*_*onC 2

一旦您需要在其他地方重用某些文件集,那么您就应该开始考虑组件或(在 git 中)子模块

webroot您可以定义complib

  • n 存储库,每个需要重用的组件一个(例如,“ img”将是作为子模块重用的 Git 存储库webroot
  • 一个主项目,用于引用您需要的那些子模块的确切修订版。

这是符号链接子模块的优点之一:您引用一个精确的修订版,如果该组件有自己的一些演变,您不会立即看到它们(无论如何,直到您更新子模块)。
通过符号链接,您可以看到该链接另一端的文件集的任何状态。