Может ли git refspec включать несколько подстановочных знаков?
Бег git ls-remote origin
в репо, к которому у меня есть доступ, я вижу ветки следующей формы, использующие пространства имен git.
refs/namespaces/share/refs/namespaces/<username>/refs/heads/<branch-name>
Я хотел бы сопоставить их с refs/remotes/<username>/<branch-name>
,
На этой странице справки github приведен пример того, как решить более простую версию этой проблемы, добавив ее в .git/config
:
[remote "origin"]
fetch = +refs/pull/*/head:refs/remotes/origin/pr/*
Я могу заставить вещи работать для моего случая с:
[remote "origin"]
fetch = +refs/namespaces/share/refs/namespaces/USER1/refs/heads/<branch-name>:refs/remotes/origin/USER1/*
fetch = +refs/namespaces/share/refs/namespaces/USER2/refs/heads/<branch-name>:refs/remotes/origin/USER2/*
# etc
Но это требует, чтобы я знал все имена пользователей заранее. К сожалению, используя два *
s не работает:
[remote "origin"]
fetch = +refs/namespaces/share/refs/namespaces/*/refs/heads/<branch-name>:refs/remotes/origin/*/*
Есть ли способ добиться этого переназначения?
1 ответ
Нет, или точнее, не говоря уже о написании программы для написания серии fetch =
линий.
Вы могли бы написать такую программу, используя своего рода мета-конфигурацию (хранится в .git/config
или где-то еще, это не имеет большого значения на этом уровне). Программа будет работать git ls-remote
на пульте вычисли fetch =
линии и обновления .git/config
содержать их.
Если вы назовете эту программу, скажем, git-synchrofetch
(это имя предназначено для того, чтобы вернуться к синхронизации), вы можете вызвать его git fetch
после обновления .git/config
, Тогда вместо git fetch origin
ты можешь бежать git synchrofetch origin
, чтобы обновить выборки по умолчанию, а затем получить.
(Обратите внимание, что программа может также просто вызывать git fetch
непосредственно с полным набором refspecs, но идея здесь состоит в том, чтобы позволить большей части другого кода Git работать как обычно и выполнять ресинхронизацию только тогда, когда вы думаете, что набор имен пользователей изменился.)