Защищает ли отслеживание ветки с подмодулем вас от силовых толчков? - PullRequest
0 голосов
/ 23 ноября 2018

Я помогаю поддерживать проект с открытым исходным кодом, в котором мы часто сталкиваемся с проблемами с нашими подмодулями, ломающими наши исторические сборки, потому что они заставляют толкаться в их восприимчивых репозиториях git.Я понимаю, что может существовать веская причина, по которой вам может потребоваться принудительное продвижение в общедоступный репозиторий (например, нормативные или юридические причины для удаления кода из вашей кодовой базы и истории).Что мне интересно, так это то, что мы можем сделать, используя субмодули git, чтобы снизить риск того, что на нас будут влиять будущие форс-маши?

Я предложил отслеживать субмодули по веткам,особенно там, где эти подмодули используют лучшие практики ветвления релизов, но, похоже, это может не помочь.Даже при отслеживании ветки git-хэши все еще фиксируются в нашем репо, и код может быть удален из удаленного репо нашего подмодуля, если они переписывают свою историю коммитов.Правильно ли я полагаю, что это означает, что отслеживание филиала не даст нам никакой дополнительной защиты от будущих силовых толчков?Есть ли какие-либо другие методы, которые люди могут использовать, чтобы избежать этой проблемы?

Ссылки, обновление подмодуля, не использующее ветвление: https://github.com/apache/incubator-mxnet/pull/13322 обновление подмодуля, отслеживающее ветку (обратите внимание, что оба имеют текущий зафиксированный хэш): https://github.com/apache/incubator-mxnet/pull/13378

1 Ответ

0 голосов
/ 23 ноября 2018

Отслеживание ветви или нет, подмодуль - это сначала записанный SHA1 (gitlink) в родительском репо.

Перед выполнением любого обновления подмодуля git --remote --recursive (который обновит этот SHA1 новымите, которые могут быть принудительно выдвинуты), вам необходимо отслеживать эти SHA1 до обновления.

Затем вы обновляете и проверяете, представляет ли новый SHA1 принудительные нажатия

git rev-list oldrev ^newrev
...