Компонентный макет каталога веб-проекта с использованием git и символических ссылок

Я планирую свою структуру каталогов для веб-проекта linux/apache/php следующим образом:

Только 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, я планирую использовать символические ссылки.

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

Я пытался следовать этим принципам:

  • index.php является макетом по компонентам и библиотекам, а не по типу файла и не по "общедоступным" или "непубличным". Это упрощает разработку.
  • выставьте только минимальный набор файлов в общедоступном веб-каталоге и сделайте все остальное недоступным для сети. Символьные файлы, которые должны быть общедоступными для компонентов и привязаны к общедоступному местоположению, но по-прежнему отражают макет. Таким образом, структура компонента и библиотеки также видна в результирующем HTML-коде в ссылках, что может помочь в разработке.
  • использование git должно быть безопасным и всегда работать. было бы неплохо следовать некоторой процедуре добавления символической ссылки в git, но после этого проверка их или смена веток должны быть обработаны безопасно и чисто

Как git будет корректно обрабатывать ссылки на отдельные файлы, есть что рассмотреть?

Когда дело доходит до изображений, мне нужно будет связать каталоги, как справиться с этим с помощью git?

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

Они должны быть связаны здесь:

  webroot/
    comp3/
      img/ (symlinked ?)

Если использование символических ссылок для этого имеет недостатки, возможно, я мог бы переместить изображения в webroot / дерево напрямую, что нарушило бы первый принцип для третьего (практичность git).

Так что это вопрос мерзавец и символическая ссылка. Но мне было бы интересно услышать комментарии о макете php, может быть, вы хотите использовать функцию комментария для этого.

1 ответ

Решение

Как только вам понадобится повторно использовать некоторый набор файлов в другом месте, именно тогда вы должны начать думать с точки зрения компонентов или (в git) подмодулей

Вместо того, чтобы управлять webroot, а также comp, а также lib в том же репо (который является SVN или "централизованным способом" для CVCS) вы определяете:

  • n репозиториев, по одному на каждый компонент, который нужно использовать повторно (так чтоimg'будет репозиторий Git, повторно используемый как подмодуль в webroot, например)
  • основной проект для ссылки на точную ревизию тех подмодулей, которые вам нужны.

Это одно из преимуществ подмодулей symlink: вы ссылаетесь на одну точную ревизию, и если у этого компонента есть несколько собственных эволюций, вы не увидите их сразу (только до тех пор, пока вы не обновите свой подмодуль).
С помощью символической ссылки вы видите, какое состояние представляет собой набор файлов на другом конце этой ссылки.

Другие вопросы по тегам