Хак для разработчиков, использующих git и не только

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

Модуль прекрасно импортируется и в том случае, если мы разместим папку с модулем в рабочей директории нашего проекта. Какие преимущества это нам дает?

Во-первых, это дает возможность предоставлять исходный код своего проекта вместе со всеми необходимыми модулями, без необходимости их отдельно установки. Также, это избавляет нас от проблем совместимости разных версий модулей.

Ну и во-вторых то, о чем бы я хотел рассказать более подробно — это дает нам возможность рассматривать модули, как подмодули в системе контроля версий git. Сейчас я покажу прием, который я использую, работая со своими git-репозиторями на GitHub.

В данном случае будем добавлять в проект модуль фреймворка Flixel for Monkey. Для этого перейдем в папку с проектом (это должен быть корректный git-репозиторий) и выполним следующую команду:

git submodule add git@github.com:devolonter/flixel-monkey.git flixel

С помощью этой команды мы добавляем в проект подмодуль, находящийся по адресу git@github.com:devolonter/flixel-monkey.git. Вторым параметром мы сообщаем, что хотим, чтобы файлы подмодуля были помещены в папку flixel.

Модуль добавлен, но папка flixel пуста. Все потому, что мы пока еще клонировали подмодуль. Чтобы проинициализировать и клонировать подмодуль выполните:

git submodule update --init

Эта команда, одновременно, проинициализирует и клонирует все подмодули в проекте. Теперь, мы можем использовать модуль в нашем проекте привычным путем:

Import flixel

Как вы наверное уже догадались, в одном проекте может быть несколько подмодулей. Используйте команду git submodule add, чтобы добавить большее количество подмодулей в ваш проект.

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

Почитать подробнее о подмодулях в git вы можете здесь.

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