Поддерживать 2 ветки с одинаковым кодом, но не идентичным - PullRequest
0 голосов
/ 25 апреля 2018

У меня 2 среды и 2 ветки, тестирование и производство. Код в ветви тестирования (Angular) на 99% такой же, как и в производственной ветви, но есть несколько различий в производстве, которые мне необходимо поддерживать, таких как удаление кнопок «зарегистрироваться» и «создать новые», пока Живой сайт все еще находится в бета-версии. Но мне 100% нужны эти представления в управлении версиями, и они мне нужны в ветке / среде тестирования.

Есть ли способ сохранить 2 слегка отличающихся файла даже после слияния без использования .gitignore? Это как мне нужно .gitignore всего несколько строк кода!

Мой текущий метод состоит в том, чтобы просто запомнить изменения и повторять их каждый раз, когда я вливаюсь в производственную ветвь, а затем отменять изменения, когда я переключаюсь в тестовую ветвь. Это становится немного раздражающим, хотя!

Конечно, я мог бы установить переменную окружения, чтобы переключать строки кода, но тогда каждый мог бы увидеть это в коде (на стороне клиента) и использовать мои скрытые ссылки и кнопки.

Мой процесс развертывания выглядит следующим образом:

  1. Внесение изменений в любую ветку в программном обеспечении Atlassian (Bitbucket) SourceTree.
  2. Push изменения
  3. Толчок подобран для автоматическое развертывание через Codeship.com
  4. Codeship развертывается через Эластичный бобовый стебель или непосредственно к S3

Таким образом, переменные среды и сценарии сборки могут выполняться на этапах кодирования или EBS.

Любой совет приветствуется.

Ответы [ 2 ]

0 голосов
/ 25 апреля 2018

Моя рекомендация состоит в том, чтобы изолировать специфичный для ветви код в небольшом наборе файлов, а затем переключаться между ними в производственной и dev-ветках, используя параметр в файле конфигурации (а не переменную среды).

0 голосов
/ 25 апреля 2018

Есть ли способ сохранить 2 слегка отличающихся файла даже после слияния без использования .gitignore? Это как мне нужно .gitignore всего несколько строк кода!

У вас есть предполагаемая предпосылка, что .gitignore поможет вам здесь. Не будет only , что делает .gitignore, - это сохранение неотслеживаемых файлов неотслеживаемыми (по умолчанию). Не влияет на слияния.

Итак, давайте удалим это и ответим на правильный вопрос:

Есть ли способ сохранить 2 слегка отличающихся файла даже после слияния

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

То, что вам нужно сделать, это определить одно направление для слияний, а затем ввести разницу на «целевой» стороне слияния. Но затем (1) вы открыты для возможности ненужных конфликтов слияния каждый раз, когда объединяете затронутый файл, и (2) вы связываете свои руки с очень ограничительным правилом слияния.

(К последнему пункту: предположим, что вы решили "всегда объединяться с производством". Это не звучит слишком отличается от правила gitflow "объединяться с хозяином" ... но как насчет исправлений? Даже косвенное слияние из производства в тестирование нарушит этот подход, поэтому процесс создания исправления будет значительно более сложным.)

Лучшим решением является использование единой базы кода, но использование конфигурации для конкретной среды, чтобы решить, какое поведение выражается. Конфигурация может управляться процессом сборки или извлекаться непосредственно из среды во время выполнения.

...