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

时间:2010-05-24 12:29:13

标签: linux git symlink

我正在为这样的linux / apache / php web项目规划我的目录结构:

只有www.example.com/webroot/会在apache中公开

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

component/lib/目录只能在php路径中。

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

  webroot/
    index.php
    comp1/
      comp1.js (symlinked)
    comp2/
      comp2.css (symlinked)

我尝试遵循以下原则:

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

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

说到图像,我需要链接目录,如何用git处理它?<​​/ p>

  component/
    comp3/
      comp3.class.php
      img/
        img1.jpg
        img2.jpg
        img3.jpg

他们应该在这里联系起来:

  webroot/
    comp3/
      img/ (symlinked ?)

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

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

1 个答案:

答案 0 :(得分:2)

只要您需要重复使用其他地方的某些文件集,就应该开始考虑 components 或(在git中)<强> submodules

您可以定义:

,而不是在同一个仓库(SVN或"Centralized way" for CVCS)内管理webrootcomplib
  • n repos,每个组件需要重用一次(因此'img'将是一个Git repo,重新用作webroot中的子模块,例如)
  • 一个主要项目,用于引用您需要的那些子模块的确切修订。

这是符号链接子模块的优点之一:你引用一个完全修订,如果该组件有自己的一些进化,你不会立即看到它们(直到你更新你的无论如何都是子模块。) 使用符号链接,您可以看到该链接另一端的文件集是什么状态。