2016-08-23 2 views
0

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

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

Другими словами, у нас есть проект A и проект B (у нас есть намного больше проектов, чем два, это только, к примеру). Когда мы получаем запрос функции, который является общей функцией (лучшей системой входа) от владельца проекта B, мы готовим необходимые изменения, и мы хотели бы загрузить эту модификацию ко всем другим проектам. Теперь мы создаем эти изменения в текущем проекте, над которым мы работаем. Это может быть сложно разработать, если мы создадим другой третий проект с собственным репозиторием этих общих файлов, потому что эти файлы не работают в одиночку, поэтому им нужны другие представления и файлы контроллера для их загрузки и тестирования.

Состав:

root/ 
    application/ 
    model/ 
     auth.php 
     other1.php 
     other2.php 
    library/ 
     mail.php 
     other1.php 

Поэтому мы хотим auth.php и mail.php версии отдельно, чем other.php-х годов и загрузить в другое место из любого нашего проекта, и проверить, есть ли обновление в этом разделенном репозитории общих файлов и если есть, чем обновлять эти файлы там, где есть собственный проект.

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

С subrepository мы получили эти структуры:

root/ 
    .hg/ 
    ... 
    application/ 
    model/ 
     auth.php 
     other1.php 
     other2.php 
    library/ 
     mail.php 
     other1.php 
    subrepo-files/ 
    application/ 
     model/ 
     auth.php 
    library/ 
     mail.php 

Я надеюсь, вы понимаете, о чем я говорю, потому что это все более и более трудно поддается лечению. Теперь, что мы делаем, мы вручную копируем эти общие файлы во все остальные проекты, когда один из них обновляется. И да, это ужасно! Иногда кто-то забывает скопировать обновленную версию общих файлов в другой проект, и когда мы создаем другие изменения в другом проекте в общем файле, а затем копируем их обратно в другие проекты, мы теряем предыдущие обновления (который имеет версию с собственным проектом , но мы заметили слишком поздно, и мы должны отлаживать их вручную).

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

ответ

0

Я думаю, что получаю. То, что я делал в прошлом для таких вещей, это использование Composer и private Composer repositories. С Composer вы можете упаковать свой общий код в виде «модуля» (или того, что вы хотите назвать).

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

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

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

Композитор загрузит модуль в каталоге vendor/ внутри вашего текущего приложения. После загрузки в ваше приложение вы можете либо заменить код модуля, загружаемый композитором, либо символической ссылкой на файлы проекта, разделенные вашим модулем, либо вы можете изменить их в каталоге vendor, а затем нажмите на изменение до Mercurial.

Вы также можете создать исправленную тестовую версию вашего приложения MVC и автоматизировать тесты там.

+0

В этом случае мы должны переупорядочить нашу/ci-файл/структуру папок, и это не то, что мы можем сделать. К сожалению :( – Twois

 Смежные вопросы

  • Нет связанных вопросов^_^