linux - 带有 git 和符号链接(symbolic link)的基于组件的 Web 项目目录布局

标签 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 路径中。

为了使 css 和 js 文件在 webroot 目录中可见,我打算使用符号链接(symbolic link)。

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

我尝试遵循这些原则:

  • 按组件和库而不是文件类型和“公共(public)”或“非公共(public)”布局,index.php 是一个异常(exception)。这是为了更容易开发。
  • 仅公开公共(public) Web 目录中的最少文件集,并使 Web 无法访问其他所有文件。将需要为组件和库公开的文件符号链接(symbolic link)到公共(public)位置,但仍镜像布局。因此,组件和库结构在链接中生成的 html 代码中也可见,这可能有助于开发。
  • git 的使用应该是安全的并且总是有效的。可以按照一些程序将符号链接(symbolic link)添加到 git,但在此之后检查它们或更改分支应该安全和干净地处理

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

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

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

它们应该链接在这里:

  webroot/
    comp3/
      img/ (symlinked ?)

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

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

最佳答案

一旦您需要在别处重用一些文件集,您就应该开始考虑 components 或(在 git 中) submodules

不是在同一个存储库(即 SVN 或 "Centralized way" for CVCS)中管理 webrootcomplib,你定义:

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

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

关于linux - 带有 git 和符号链接(symbolic link)的基于组件的 Web 项目目录布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2896944/

相关文章:

linux - 当我尝试获取 ~/.bashrc 时没有 .sc_start 文件

linux - 是否有机会两次读取 16 字节/dev/urandom 数据,并获得相同的结果?

Linux命令: show content of all files

symlink - 删除 Msys 上的符号链接(symbolic link)

c - 未初始化信号量的值

python - 使用黑色和 git clean 过滤器

git - Visual Studio Code 无法检测到 cygwin git.exe 路径

git - 如何在 git 中使用分支跟踪引用?

qt - 如何让 Qt 5.0 与 Qt Creator 2.5.2 一起工作?

windows - 指向已安装 Windows 文件夹的符号链接(symbolic link)不起作用