Как мне организовать контроль версий для проектов на основе фреймворка? - PullRequest
3 голосов
/ 20 сентября 2010

Я изо всех сил пытаюсь разобраться, что является лучшей практикой для помещения проекта под контроль исходного кода, когда проект написан на основе фреймворка.В моей ситуации я буду использовать Mercurial для управления исходным кодом.

У большинства фреймворков PHP есть папка 'application', куда я должен поместить свой код, взаимодействующий с фреймворком.Так лучше ли поместить папку приложения в свой собственный репозиторий, а затем создать еще один репозиторий для файлов инфраструктуры?Или лучше поместить все, включая фреймворк, в один репозиторий?

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

У меня есть опыт работы как с фреймворками Kohana, так и с Zend Framework, так что если бы вы могли использовать их в качестве ссылок,фантастика.

Ответы [ 4 ]

3 голосов
/ 20 сентября 2010

Ну, я не использую Mecrucial, но, возможно, моя типичная установка с Subversion будет применяться после того, как вы переведете ее :) Я не использую локальную централизованную установку.Я обнаружил, что чаще всего я использую определенную версию для каждого приложения, над которым я работаю, с учетом быстрых выпусков циклов фреймворков.Поэтому я всегда встраиваю их в проект.

Для Zend:

svn/path/
  trunk/
    application/
    library/
      Zend/  
      MyNamespace/
    public/
    data/

Я использую svn:external для версии фреймворка, который я хочу .... например: http://framework.zend.com/svn/framework/standard/tags/release-1.10.5/library/Zend

Для Symfony практически то же самое, что использовать внешние компоненты как для Symfony, так и для любых плагинов.Разница в том, что библиотеки, такие как Symfony и Zend, я бы поместил в каталог поставщика, а не прямо в lib:

svn/path/
  trunk/
    apps
    lib/
      vendor/
        Zend/  
        symfony/
    plugins/
    web/
    config/
    data/
    cache/
    log/
2 голосов
/ 20 сентября 2010

В моих проектах на Kohana, использующих git, я настроил весь проект как репозиторий.Это включает в себя папку приложения, а также модули и систему.Системная папка представляет собой подмодуль, указывающий на последнюю стабильную версию Kohana.Модули могут быть обычными файлами в репо или также могут быть субмодулями.У меня также есть папка для файлов public_html.

Здесь вы можете посмотреть, как это настроено одной компанией: http://github.com/synapsestudios/kohana-projecttemplate

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

1 голос
/ 20 сентября 2010

Предполагая, что в SVN есть изящная функция svn: игнорировать, где вы можете пометить файлы / папки или наборы файлов / папок как "игнорируемые".

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

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

Обратите внимание, что почти во всех других системах управления версиями, как правило, есть функция "игнорирования", она не относится к SVN.

0 голосов
/ 20 сентября 2010

Очень похоже на svn, hg использует <root>/.hgignore для игнорирования файлов / каталогов (не забудьте добавить сам .hgignore в качестве записи).

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

...