Используя git и submodule, какова хорошая структура папок? - PullRequest
8 голосов
/ 28 марта 2011

Я использую git с подмодулями, и мне трудно разобраться, как организовать мои файлы.Я занимаюсь разработкой на PHP и использую модульное тестирование.Итак, сейчас я использую эту организацию для каждого модуля:

  • src /
  • tests /

Это кажется блестящей идеей, но проблемав том, что когда я делаю «git submodule add» для проекта, у меня будет такой путь: project / modules / News / src / index.php

папка src / действительно проблематична.

Должен ли я просто поместить все свои файлы в корень модуля и смешать в папке с исходным кодом test / folder?Для меня это звучит плохо.Что вы делаете?

Редактировать: src / Folder проблематичен из-за автозагрузки.Я не должен был ставить "src" во всех именах моих классов ...

Ответы [ 3 ]

4 голосов
/ 29 марта 2011

Макет вашей папки в основном не имеет значения, если автозагрузчик каким-то образом может найти ваши файлы.Если вы используете соглашение PEAR для сопоставления имен классов с их исходными файлами, вы можете добавить каталог src в путь включения или создать второй автозагрузчик.Тогда вам не нужно добавлять src к именам классов.

Альтернативой соглашению PEAR было бы использование статического отображения между файлами и классами.На GitHub есть инструмент , который может автоматически генерировать для вас такой автозагрузчик.

Подход статического автозагрузчика также используется в PHP Project Wizard .Этот инструмент создаст папки src и test, включая ваш phpunit config и файл сборки для соединения вашего проекта с Jenkins CI .Это удобный пакет.

Что касается включения подмодулей, рассмотрите возможность помещения их в папку lib или ext.Пример того, как это выглядит, можно найти в проекте phpdox на GitHub .Убедитесь, что вы также посмотрите на основной файл начальной загрузки , чтобы увидеть, как включить различные автозагрузчики.

3 голосов
/ 28 марта 2011

Когда я столкнулся с этой проблемой, я создал папку с названием vendors и поместил в нее все подмодули. Затем я сделал символические ссылки, используя относительные пути каталогов к местам, которые я хотел, в моем коде. Вы можете зафиксировать символические ссылки на git, и они все равно будут работать, когда другие извлекают репозиторий. Конечно, это работает, только если вы используете ОС * nix.

Например:

modules/
vendor/module1/src/

Может быть символической ссылкой так (из каталога модулей):

ln -s ../vendor/module1/src module1

Не уверен, решит ли это вашу проблему или нет.

0 голосов
/ 29 марта 2011

У меня не было бы тестов в отдельном модуле. Храните его в том же хранилище.

...