2013-12-06 4 views
1

Я очень новичок в git и все еще пытаюсь склонить голову к некоторым из способов, которыми он выполняет определенные вещи, а не svn, и мне интересно, пытается ли я пытаться даже возможно. Я пытаюсь создать репозиторий для проекта Arduino, который будет включать несколько эскизов Arduino, а также несколько библиотек. Некоторые из этих библиотек я буду писать, а некоторые из других существующих хранилищ, принадлежащих другим людям, которые зависят от кода, который я буду писать. Структура локальной папки для проектов Arduino работает следующим образом:Git, объединяющий несколько репозиториев

~/Arduino 
+libraries 
    +MyLib1/[lib files] 
    +MyLib2/[..] 
+MySketch1/MySketch1.ino 
+MySketch2/MySketch2.ino 

(SketchName.ino это только Arduino именования для того, что в основном main.cpp)

Теперь хранилищами я рассматривающие меняться в их структуре. Некоторые из них содержат папку Arduino на своем верхнем уровне, некоторые отображают их верхний уровень до в папке Arduino, а некоторые из них содержат только библиотеки и отображают их верхний уровень в Arduino/libraries. Есть ли способ объединить эти множественные репозитории в мою собственную, сохраняя ссылки на исходные репозитории? Я изучил подмодули, но кажется, что они работают только в своих собственных подкаталогах, которые не будут работать для меня, потому что мне нужна структура локальных папок, чтобы содержать все эскизы в одной и той же папке ~/Arduino, и все библиотеки внутри папке ~/Arduino/libraries.

Так что я хочу иметь выше структуру папок сосуществовать с другой репозиторий, содержащий:

libraries 
+YourLib1/[..] 
+YourLib2/[..] 
YourSketch/YourSketch.ino 

И третий репо, содержащий:

AnotherRandomLib/[..] 

таким образом, что конечный результат один репо, который выглядит как это;

~/Arduino 
+libraries 
    +AnotherRandomLib/[..] 
    +MyLib1/[..] 
    +MyLib2/[lib files] 
    +YourLib1/[..] 
    +YourLib2/[..] 
+MySketch1/MySketch1.ino 
+MySketch2/MySketch2.ino 
+YourSketch/YourSketch.ino 

Можно ли это сделать, или, если нет, то будет считаться «наилучшей практики» для ссылок код других людей из вашего репо? Просто добавьте файлы в репо (простую, пуленепробиваемую, но перерывы, связывающие исходное репо, теряя способность извлекать обновления, а также приводят к потере атрибуции)? Оставьте их вне репо и оставите его пользователю, чтобы найти и загрузить эти другие библиотеки отдельно (совсем не хорошее решение)? Есть идеи?

+0

yep, subodules предоставят вам эту функциональность, но они могут стать проблемой для управления. если экосистема arduino имеет какое-то управление пакетами, я бы выбрал это направление. Если нет, и вы не будете редактировать код внутри других эскизов, yah, подмодули будут работать –

+0

Но могу ли я проверить 2 подмодуля в тот же каталог? У меня сложилось впечатление, что подмодуль нужно проверить в своем собственном подкаталоге, который здесь не работает. У экосистемы Arduino нет хороших функций, таких как управление пакетами, у нее просто одна папка в вашем пользовательском каталоге, которая обрабатывается так же, как и в той же папке, что и каталог установки Arduino (то есть пользовательские библиотеки в ~/Arduino/libraries/MyLib обрабатываются так же, как если бы они находились в $ (ARDUINOPATH)/library), но вы ограничены одним каталогом ~/Arduino, иначе ваши библиотеки не найдены. – qwertymodo

+0

ах, я. это не сработает. они должны быть отдельными подкаталогами.извините, похоже, что вы застряли на том же слове, что и JavaScript, в течение последних нескольких десятилетий: скопируйте и вставьте:/Угадайте, что вы всегда можете написать систему управления пакетами для arduino. –

ответ

0

Учитывая, что подмодули всегда существуют в их собственной папке, ваша структура будет работать, если каждая из каталогов, которые вы хотите в «libraries», была репозиторией git (которую затем можно было бы назвать подмодулем в родительском репо).

В противном случае вам придется иметь дело с символическими ссылками, которые существуют в Windows: «Git Symlinks in Windows».

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