Могу ли я использовать git для отслеживания публичных и частных ветвей, которые намеренно расходятся? - PullRequest
3 голосов
/ 18 декабря 2011

Скажем, у меня есть:

           X         Z
o-----o----o-----o---o A
 \        /       \ /
  o------o---------o B
         Y

Предположим, что A и B намеренно расходятся, потому что (скажем) A является публичным филиалом, а B является внутренним филиалом компании (который должен иметь некоторые различия для техническихпричины и потенциально может иметь секреты, которые не должны быть в выпуске с открытым исходным кодом).Предположим, что X - это коммит, который преднамеренно не воспринимает некоторые изменения в Y.

Каков наилучший способ выполнить следующее с помощью Git?

  1. Изменения Y, которые былинамеренно опущены при слиянии в X, не применяются повторно в Z.
  2. Я могу опубликовать общедоступную версию A, где слияние в X выглядит как один сжатый коммит, так что ни одна из потенциально секретной информации вY (или другие внутренние коммиты) отображаются в общедоступной истории изменений.

1 Ответ

3 голосов
/ 18 декабря 2011

Я не думаю, что нарисованная вами диаграмма возможна в одном репозитории Git (учитывая ваши ограничения секретности / и т.д.).Единственный похожий подход, который я могу придумать, чтобы достичь того, чего вы хотите, - это сохранить три ветви: public, private и shared.По окончании shared коммиты объединяются в public и private.Это позволит расхождение между публичными / частными ветками, не беспокоясь о повторном применении diff, потому что коммиты будут фактически объединены и, таким образом, будут настоящими предками, которые git не будет пытаться повторно применить.

Вероятно, вы можете объединить это с вашим желаемым подходом, если захотите, развивая некоторое время в private, а затем перебирая, чтобы разделить его на части shared и private.Затем вы можете объединить общую часть обратно в private и в public одновременно.Тогда у вас будет возможное поведение, которое я описал в моем первом абзаце, но оно может развиваться более или менее так, как вы надеялись в своем вопросе.

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