Можно ли запускать несколько вызовов «git merge» одновременно? - PullRequest
1 голос
/ 09 ноября 2011

Я пытаюсь написать инструмент, основанный на git, но выполняющий довольно необычные вещи, и мне нужно знать: безопасно ли запускать сразу несколько экземпляров git merge --ff-only [remote-branch], чтобы получить самый новый коммит, доступный на любомиз них?Все пульты будут на одной линии коммитов.Мне бы хотелось, чтобы мой инструмент просто порождал их все и позволил git разобраться с этим, но мне нужно знать, не вызовет ли это проблем.Кто-нибудь знает достаточно о внутренностях git, чтобы сказать так или иначе?

Ответы [ 3 ]

1 голос
/ 09 ноября 2011

Если вы выполняете слияния --ff-only, почему бы вам просто не проверить ссылки с помощью git branch --contains или каким-либо другим способом проверить, достижима ли старая фиксация, а затем выполнить сброс или обновление-ref?

Это должно быть очень быстро и потенциально позволит избежать обновления рабочего каталога.

1 голос
/ 09 ноября 2011

Git использует блокировки для предотвращения одновременного доступа, в худшем случае ваша попытка слияния завершится с ошибкой типа lock file exists.

Кстати, слияние разрешает множественное слияние, есть стратегия слияния осьминога.

0 голосов
/ 09 ноября 2011

В этой ситуации, почему бы вам не объединить каждую удаленную ветвь по очереди, а не порождать их одновременно?

 #!/bin/sh
 set -e
 for rtb in origin/master github/master gitorious/master
 do
     git merge --ff-only $rtb
 done

Если HEAD уже содержит одну из ветвей удаленного отслеживания,Слияние по-прежнему успешно завершено, говоря: Already up-to-date.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...