Подтвердить что ты не робот

Могу ли я использовать ветку слиянием только в git?

Я использую git, и я настраиваю следующие ветки для поддержки моего рабочего процесса:

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

Разделяйте ветки ветвей и объединяйтесь в разработку. Когда мы готовы к тестированию, тестирование сливается в разработке. Когда тестовый выпуск одобрен для производства, релиз объединяется при тестировании.

Это достаточно легко настроить, но мне интересно, какие опции принудительного использования можно использовать в git. Например, можно ли применить политику, в которой единственная фиксация в ветки релиза сливается с тестированием, не допуская, что изменения происходят непосредственно на ветке выпуска?

4b9b3361

Ответ 1

Ну, вроде. Но я не думаю, что вы хотите пойти туда.

Как говорит Джейсон, есть крючки, которые можно использовать для предотвращения определенного поведения. В этом случае мы могли бы использовать привязку pre commit, чтобы кто-либо не выполнял "git commit". Но это проблематично несколькими способами:

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

Это создает больше проблем, чем решает.

Однако вы могли бы решить это другими способами. Вы можете создать рабочий процесс, который будет выполнять эти принципы. Например, представьте, что у вас есть человек A, ответственный за выполнение слияния из тестовой ветки в ветку освобождения. Если вы позволите только этому человеку вносить изменения в центральный репозиторий (или что репозиторий лиц является "центральным" репозиторием), он может вносить изменения из тестовой ветки тестового репозитория или тестовую ветвь тестер B (используйте свое воображение).

Что важно здесь, чтобы понять, что вы можете применять политику, создавая способы обмена друг с другом. Не каждый должен иметь возможность вносить свои изменения в репозиторий один. Черт, им вообще не нужно толкать свои изменения. Испытуемые люди/люди могут вносить изменения в разработчики, как только они хотят что-то протестировать, и таким образом вы можете позволить тестировать решение, когда они готовы вносить новые изменения, не позволяйте разработчикам решать, когда тестеры должны получить свои вещи. Тот же принцип.

Ответ 2

Возможно, вы захотите проверить Git поток для получения дополнительных идей об этом виде рабочий.

Ответ 3

Вы должны иметь возможность принудительно использовать это, используя некоторые из git hooks.

Ответ 4

Совсем недавно структура, предназначенная для принудительного применения полномочий, gitolite, может помочь внедрить все типы политик, например, чтобы позволить только тестеру объединиться в ветке "Testing".

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

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