2016-01-21 7 views
1

У меня есть коллекция инструментов, которые я синхронизирую между своими компьютерами через git pull on remote repo с рабочим деревом.Git subodules peer2peer рабочий процесс

Всякий раз, когда некоторые из инструментов имеют источник git, я добавляю их по 'git submodule add'.

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

modulepath/submodulepath/bin$ git add submodulefile 
modulepath/submodulepath/bin$ git commit -m "subfix" 
modulepath/submodulepath/bin$ git pull origin master 
modulepath/submodulepath/bin$ cd ../../ 
modulepath/$ git add submodulepath;git commit -m "subfix in sub" 

затем будет ли распространяться префикс фиксации после того, Я читал здесь git submodule update, что мне нужно зафиксировать первый подмодуль. Но с тем фактом, что моя фиксация не будет перенесена в начало субмодуля, но я хочу синхронизировать изменение между хостами, использующими основной модуль, как действовать дальше? Возможно ли наложение изменений в подмодуль основным модулем? Или я могу запустить ветвь субмодуля без URL-адреса восходящего канала - он будет только выбран/объединен с родительским основным модулем.

ответ

0

Но с тем, Моим коммят не будет оттеснен на подмодуль происхождения, но я хочу, чтобы синхронизировать изменения между узлами обмена основного модулем

Это вопросу здесь: вам нужно нажать первую подмодуль если вы хотите, чтобы основное репо могло вернуть его.

Основной репо только записать gitlink (special entry in the index), представляющий новую SHA1 подмодуля.
Но если этот SHA1 представляет собой фиксацию, которая не была нажата подмодулем, то git submodule update не сможет добиться успеха.

+0

Итак, почему git называется децентрализованным, если для совместного использования контента p2p мне нужно настроить внешний URL-адрес на каждом хосте, где некоторые из них находятся за NAT, а соединение возможно только одним способом? – nusch

+0

@nusch Потому что git * * децентрализован. Он получает свое содержание от * децентрализованных * серверов. в отношении субмодуля родительское репо регистрирует только url и SHA1 его подмодуля. Если этот подмодуль изменяется локально, ему необходимо нажать это изменение на url, на который полагается родительское репо, чтобы вернуть этот новый SHA1. – VonC

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