В принципе хотел сделать что-то вроде git push mybranch to repo1, repo2, repo3
сейчас я просто набираю push много раз, и если я тороплюсь с нажатием, я просто отправляю их все в фоновый режим git push repo1 & git push repo2 &
Мне просто интересно, поддерживает ли git
то, что я хочу сделать, или, может быть, есть умный скрипт, или, может быть, способ отредактировать файл конфигурации локального репо, чтобы сказать, что ветка должна быть перенесена на несколько пультов дистанционного управления.
У меня есть единственный пустой репозиторий, который живет в моем домашнем каталоге, в который я нажимаю. Хук post-update в этом репозитории затем подталкивает или выполняет синхронизацию с несколькими другими общедоступными местоположениями.
Вот мои хуки / пост-обновление:
#!/bin/sh
#
# An example hook script to prepare a packed repository for use over
# dumb transports.
#
# To enable this hook, make this file executable by "chmod +x post-update".
# Update static info that will be used by git clients accessing
# the git directory over HTTP rather than the git protocol.
git-update-server-info
# Copy git repository files to my web server for HTTP serving.
rsync -av --delete -e ssh /home/afranco/repositories/public/ [email protected]:/srv/www/htdocs/git/
# Upload to github
git-push --mirror github
Как я добавил к ответу: git-update-server-info записывает некоторые файлы статической информации, которые будут использоваться клиентами git, обращающимися к каталогу git через HTTP, а не по протоколу git. Для получения дополнительной информации см. Следующее: kernel.org/pub/software/scm/git/docs/…
У вас может быть несколько URL-адресов для каждого пульта в git, даже если команда git remote
, похоже, не раскрывает последний, который я проверял. В .git/config
поставьте что-то вроде этого:
[remote "public"]
url = [email protected]:kch/inheritable_templates.git
url = kch@homeserver:projects/inheritable_templates.git
Теперь вы можете сказать «git push public
», чтобы отправить сразу в оба репозитория.
Хороший совет. Обратите внимание, это работает только для push. Для получения, похоже, просто используется первая запись URL-адреса. Также кажется, что вы можете настроить таргетинг на ветку на этом мульти-пульте. Таким образом, вы можете просто выполнить "git pull" без удаленного имени, если вы добавите что-то подобное в свою конфигурацию [branch "master"] remote = public
Спасибо, спасает мне жизнь!
это хорошо. хотите поделиться или объяснить git-update-server-info?