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

Я планирую свою структуру каталогов для веб-проекта 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 ?)

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

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

1 Ответ

2 голосов
/ 24 мая 2010

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

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

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

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

...