Компонентный макет каталога веб-проекта с использованием 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: вы ссылаетесь на одну точную ревизию, и если у этого компонента есть несколько собственных эволюций, вы не увидите их сразу (только до тех пор, пока вы не обновите свой подмодуль).
С помощью символической ссылки вы видите, какое состояние представляет собой набор файлов на другом конце этой ссылки.