Залежності проекту Git від GitHub


14

Я написав рамку PHP та CMS на вершині рамки. CMS залежить від фреймворку, але фреймворк існує як автономна папка у файлах CMS. Я хотів би підтримувати їх як окремі проекти на GitHub, але мені не хочеться щоразу оновлювати проект CMS, коли я оновлюю рамки. В ідеалі, я хотів би, щоб CMS якось перетягував рамкові файли для включення у заздалегідь заданий підкаталог, а не фізично здійснював ці файли.

Чи можливо це за допомогою Git / GitHub? Якщо так, що мені потрібно знати, щоб він працював? Майте на увазі, що я перебуваю на дуже-дуже базовому рівні досвіду роботи з Git - я можу створювати сховища та здійснювати фіксацію, використовуючи плагін Git для Eclipse, підключатись до GitHub, і це стосується цього. Зараз я працюю соло над проектами, тому мені ще не доводилося дізнаватися більше про Git, але я хотів би відкрити це іншим у майбутньому, і хочу переконатися, що я маю це правильно.

Крім того, яким повинен бути мій ідеальний робочий процес для проектів із залежностями? Будь-які поради з цього питання також будуть вдячні. Якщо вам потрібна додаткова інформація про моє налаштування, просто запитайте в коментарях.


Ознайомтеся з підгіркою
Nick

Відповіді:


11

По-перше, якщо ви дійсно хочете використовувати git для цього, тоді подумайте про використання його функцій Submodule :

Підтримка підмодулю Git дозволяє сховищу містити, як підкаталог, замовлення зовнішнього проекту. Підмодулі зберігають власну ідентичність; підтримка підмодуля просто зберігає місце зберігання підмодуля та виконує ідентифікатор, тому інші розробники, які клонують містить проект ("суперпроект"), можуть легко клонувати всі підмодулі при одній версії. Можливі часткові перевірки надпроекту: ви можете сказати Git клонувати жоден, деякі або всі підмодулі.

Пов'язана сторінка містить детальну дискусію, включаючи приклади того, як її точно використовувати.

Зважаючи на це, я рекомендую не використовувати вашу систему управління версіями для управління залежністю, а скоріше почати використовувати інструмент збирання, який може обробляти ці речі для вас, наприклад, Maven або Ant . У розробці є навіть специфічний інструмент побудови PHP, який називається Phing , але я його ще не використовував. Це згадується у статті, в якій обговорюється ваше питання: Контроль версій! = Управління залежністю .

Причина побудови інструментів може бути краще підходить у довгостроковій перспективі через те, що вони також часто підтримують різні типи сховищ, зовнішні бібліотеки (та різні місця) та широку перевірку. Якщо ви просто хочете інтегрувати ці дві бібліотеки і не хочете зайвих клопотів, підхід до підмодуля, ймовірно, достатній.


+1 - Спасибі Декард. Я вважав, що у Git є щось на кшталт субмодулів, я просто не знав, як це називається. Я обов'язково довго загляну на Пінг. Я хотів інструмент побудови PHP, який управляє залежностями, запускає одиничні тести, а потім розгортає на своєму сайті. Схоже, Phing, ймовірно, може зробити все це. Також схоже, що на навчання доведеться трохи часу. Чи знаєте ви якісь хороші екранізації для Phing (Google не є добрим у цьому плані)?
VirtuosiMedia

Посилання на "функціональність субмодуля" порушено, а також посилання на "Контроль версій! = Управління залежностями" також порушено
Ferrybig

6

Підмодулі Git - це чудовий спосіб управління залежностями git-проекту.

Якщо ви шукаєте інший підхід:

Композитор може зробити це все за вас. Композитор - це менеджер залежності для php. Його синтаксис є json. Це досить просто і дешево у використанні.

Більше про композитора:

Композитор - це інструмент для управління залежностями в PHP. Це дозволяє оголосити залежні бібліотеки, які потрібні вашому проекту, і встановить їх у вашому проекті для вас.

На сторінці документації ви можете знайти приклад того, як буде побудований ваш файл composer.json:

// Composer.json    
{

    "name": "acme/blog",
    "repositories": [
        {
            "type": "vcs",
            "url": "https://github.com/composer/hello-world"
        }
    ],
    "require": {
        "acme/hello-world": "dev-master"
    }
}

Після створення файлу composer.json та composer.lock для вашого проекту ви можете просто встановити свої залежності:

composer.phar install або оновити їх: composer.phar update або створити певний проект із пакувальника : composer.phar create-project acmeproject


1

Нещодавно я почав використовувати інструмент під назвою Pundle для управління залежностями мого проекту. Він підтримує версію PHP, пакети PEAR, репозиторії Git та сховища SVN як залежність і дозволяє легко вказати їх через "Pundlefile".

Ви також повинні налаштувати свої залежності, щоб замовлення Git / SVN було поміщено в каталог, який не знаходиться під контролем версій (наприклад, "постачальник"), щоб у вас був новий старт на кожній касі, і щоб зберегти сховище вашого проекту.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.