2013-06-19 3 views
4

Я разработал MapBox-ios-sdk и внеся некоторые изменения в него. Более новая версия sdk находится здесь, и я объединил свои изменения в свою вилку. MapBox-ios-sdk также включает SMCalloutView, который является подмодулем в MapBox-ios-sdk. Однако версия официального sdk использует более новый обновленный SMCalloutView, который не находится в моей вилке.Обновление новой подмодули Git

Как получить это обновление

я обновить мою SDK с инструкциями от here. Однако это не обновляет SMCalloutView. Я также попробовал git submodule update --recursive на уровне MapBox-ios-sdk, и ничего не происходит. Как выясняется, это потому, что SMCallOutView находится в «никакой ветке». Почему это на «никакой ветке»? Как я могу вывести весь субмодуль из состояния «нет ветви»? Если он находится в «ни одной ветви», я никогда не узнаю, какой подмодуль или подмодуль подмодуля (или еще более вложенного) нуждается в обновлении.

+0

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

+0

Похоже, что мой пример - последний пример, но я не уверен, что это за суперпроект, о котором вы говорите. Я использую проект github с открытым исходным кодом как подмодуль моего собственного проекта. И я хочу вывести последний из открытого проекта src, включая любые обновления подмодуля, который он использует (теги к), в свой проект, в мой проект. – huggie

+0

Есть ли альтернатива подмодулю? Эта вещь сводит меня с ума. Но проект с открытым исходным кодом, который я использую, опирается на подмодуль, хотя переход на CocoaPods (я на iOS) – huggie

ответ

16

С git 1.8.2+ (март 2013 г.) вы можете определить подмодуль, который будет отражать последнюю фиксацию данной ветви.
См. "git submodule tracking latest".

Это означает, что это было бы достаточно, чтобы обновить подмодуль до последней ветви:

# --remote will also fetch and ensure that 
# the latest commit from the branch is used 
git submodule update --remote 

См git repo commit 06b1ab больше на опции --remote.


Чтобы резюмировать:

  • Для нового субмодуля (который должен следовать филиал):

    git submodule add -b [branch] [URL] [DirectoryName] 
    
  • Для существующего подмодуль, что теперь вы хотите его следуйте за профилем:
    См. также git repo commit b92892, для преобразования git-подмодуля в один, который следует за веткой.
    Все, что вам нужно сделать, это:

    git config -f .gitmodules submodule.<path>.branch <branch> 
    

    Смотри на «Git submodules: Specify a branch/tag»

+1

Отлично! Теперь мне просто нужно обновить git. Эта функциональность появилась на удивление поздно. : D – huggie

+0

Заметка для меня: 'git subodule add -b [branch] [URL] [DirectoryName]' – huggie

+0

@huggie Я включил ваше примечание в ответ для большей видимости, а также добавил дополнительную информацию о том, как преобразовать существующий подмодуль. – VonC

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