Обновление всех сабмодулей репозитория Work
Обычно после долгой работы с одной задачей возникает необходимость обновить весь Work На данный момент проблема получения актуальных состояний сабмодулей после простого пула главного репозитория не решена. Есть простой, но достаточно долгий способ получить актуальные состояния всех сабмодулей (в том числе и вложенных). Он заключается в:
- Сбросе всех не индексированных изменений из раздела "Коммит" во всех сабмодулях Work
- Переключении на необходимую ветку в каждом репозитории
- Последующий Pull в каждом репозитории
- Переключении на необходимую ветку в каждом репозитории
Каждое перечисленное действие требует много личного внимания и особенно времени. Нужно будет внимательно следить за состоянием требуемой ветки в каждом репозитории, и убеждаться в том, правильное ли состояние она "сейчас" имеет.
Что бы не тратить время постоянные переключения веток, и перепроверки "точно ли ветка origin?", был сделан простой батник, который сам переключает ветки на defaultные и делает в каждом репо pull. При создании скрипта, исходил из того, что defaultные ветки не изменятся, а если и поменяются, то можно будет просто поменять 2 строчки.
Прежде чем использовать батник, советую сбросить все не индексированные изменения. Это можно делать вручную в каждом репо, но есть очень удобная команда, вызвать которую нужно из корня главного репозитория.
git submodule foreach --recursive git reset --hard
Её лучше использовать с осторожностью, потому что она сбросит ВСЕ изменения, не спрашивая вас (важное это изменение для Вас или нет)
Сам батник находится в репозитории Tools ${WORKSPACE}\Tools\Jenkins\Tools\CheckAllHashes.bat
Там есть фишка с этим батником.. У большинства он просто не сработает из-за настроек git на своём ПК. Сейчас ещё не нашёл той настройки что бы git команды выполнялись из командной строки (cmd или powershell) Как говориться, у меня работает, не понимаю почему у тебя нет...
Если батник запустился, и ему удаётся получить корректно ваш пароль от SSH ключа - отлично
Если не удаётся, то есть лайфхаки:
-
Запуск батника от имени администратора
-
Долго, но 100% работает:
- Открываем GitExtensions
- Во вкладке "Репозиторий" выбираем "Внешние репозитории..."
- В окне кнопка "Проверить соединение"
- В открывшемся терминале мы уже залогинены, и достаточно нажать "Enter", что бы git команды выполнялись
- Меняем в батнике путь к корню Work ->
- Копируем всё, начиная от изменённой строчки и до конца файла
- Вставляем в окно терминала, где успешно пройдена проверка ключа
ВАЖНО! Все варианты работают при условии, что вы уже загрузили SSH ключ в GitExtensions
Когда кто-то найдет способ запуска батника прямо из проводника - поделитесь, пожалуйста)