git switch local as remote
От: reversecode google
Дата: 17.01.24 16:11
Оценка:
в удаленный репе много модулей в которых дефолтный бранч может случайно поменяться

как в локальной копии пробежаться и переключить все бранчи как в удаленный ?

можно конечно каждый раз удалять и клонить всю репу опять
но как то кисло

есть вариант в линуксе
git submodule foreach git checkout $(git symbolic-ref refs/remotes/origin/HEAD | sed 's@^refs/remotes/origin/@@')

хочется чего то по проще в винде
где не надо лезть парсить итд

что то элегантное и красивое можно сообразить ?
Re: git switch local as remote
От: Doom100500 Израиль  
Дата: 18.01.24 06:48
Оценка:
Здравствуйте, reversecode, Вы писали:

R>что то элегантное и красивое можно сообразить ?


Подписался бы на ответы, но почта не работает.
Сам, не придумав ничего другого, пишу правило в Makefile для подобной задачи.
Спасибо за внимание
Re[2]: git switch local as remote
От: reversecode google
Дата: 18.01.24 06:53
Оценка:
слишком заумно
неее я конечно и в виндовом cmd могу накидать сложной конструкции

но какой то треш постоянно с этим гитом
нужные конструкции в нем делаются через одно место
Re: git switch local as remote
От: m2user  
Дата: 18.01.24 07:46
Оценка:
Разве это не задача хозяина репозитория (к которому подключены субмодули) корректно прописать submodule.<name>.branch ?
Или не прописывать, тогда она на remote HEAD и так указывает.
https://git-scm.com/docs/gitmodules#Documentation/gitmodules.txt-submoduleltnamegtbranch

submodule.<name>.branch

A remote branch name for tracking updates in the upstream submodule. If the option is not specified, it defaults to the remote HEAD.
A special value of . is used to indicate that the name of the branch in the submodule should be the same name as the current branch in the current repository.
See the --remote documentation in git-submodule[1] for details.

По приведенному варианту — можно убрать sed:
git submodule foreach git checkout -b `git for-each-ref refs/remotes/origin/HEAD --format='%(symref:lstrip=3)'`
Re[2]: git switch local as remote
От: reversecode google
Дата: 18.01.24 07:55
Оценка:
они там игрались в разных версиях гита с опциями кажется --track в pull если не ошибаюсь
типа там трекать изменившийся дефолт бранч с ремоута или не трекать
в итоге после многих лет апдейта репы через обычный pull и submodule update с разными полезными опциями типа --remote
я вчера обнаружил что у меня сабмодули в репе вообще в непонятном состоянии
при том что
git remote set-head origin --auto
показывает правильно
но команды которая бы после этого смогла вернуть дефолтный бранч я так и не нашел
тот же git pull после той команды не переключает его

можно конечно вручную это один раз сделать, пройтись по всем саб модулям их там за 100 штук
или попробовать склонировать по новой, хотя трафика многовато будет

но подумалось что это распространенная проблема
и нагугли такую линку
https://rnelson0.com/2020/11/24/dealing-with-changes-to-git-default-branches/

но для винды это слишком накладно

в принципе на коленке я уже решил
но захотелось узнать нет ли более элегантного решения
от профи гита
Re: git switch local as remote
От: reversecode google
Дата: 18.01.24 16:04
Оценка:
тьфу ты совсем ступил
есть же git alias в который можно вбить любую линукс сложную команду
оно его прогонит через баш интерпретер даже под виндой

вроде все работает
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.