Минимизации усилий пост
Feb. 9th, 2015 03:03 pmНаблюдаю в дружественной конторе следующую ситуацию:
1. Есть продукт, который они пилят. С выпускаемыми версиями и прочим. При выпуске новой версии upstream-ом на неё надо переходить.
2. Есть большой патч к этому продукту разработки собственно этой конторы. Его необходимо всегда иметь в актуальном виде одним куском. Применяться он должен к апстриму.
3. Есть набор патчей третьей стороны, который должен жить отдельными кусочками, но попадать в итоговую сборку. Поштучно.
Как этот РАБКРИН лучше обустроить?
Мне в голову приходит сценарий с двумя ветками, соответствующими пп. 2 и 3, с периодическими git rebase сначала ветки со своими патчами на апстрим, а потом ветки с патчами третьей стороны - на то, что получилось в "своей" ветке. Или я неправильно понимаю, что есть git rebase?
1. Есть продукт, который они пилят. С выпускаемыми версиями и прочим. При выпуске новой версии upstream-ом на неё надо переходить.
2. Есть большой патч к этому продукту разработки собственно этой конторы. Его необходимо всегда иметь в актуальном виде одним куском. Применяться он должен к апстриму.
3. Есть набор патчей третьей стороны, который должен жить отдельными кусочками, но попадать в итоговую сборку. Поштучно.
Как этот РАБКРИН лучше обустроить?
Мне в голову приходит сценарий с двумя ветками, соответствующими пп. 2 и 3, с периодическими git rebase сначала ветки со своими патчами на апстрим, а потом ветки с патчами третьей стороны - на то, что получилось в "своей" ветке. Или я неправильно понимаю, что есть git rebase?
no subject
Date: 2015-02-09 12:32 pm (UTC)Как-то так, да. Если (3) разрабатывается на основе (2). Если наоборот, то, соответственно, порядок ребейсов меняется на обратный. Если (3) и (2) оба разрабатываются независимо на основе апстрима, то, возможно, ребейс (2) и (3) на голову апстрима, а потом мёрж их обоих с образованием отдельной ветки и разруливанием мёрж-конфликтов.
Возможно, большой патч потом захочет стать серией мелких патчей.
no subject
Date: 2015-02-09 12:39 pm (UTC)no subject
Date: 2015-02-09 12:43 pm (UTC)no subject
Date: 2015-02-09 01:42 pm (UTC)Если сторонние и свои патчи мало пересекаются и независимы, можно в третьей ветке (ответвляемой от второй) поддерживать только свои изменения, а мержить вторую с третьей в четвёртой.
Но может быть git не так работает, я с точки зрения svn и hg.
no subject
Date: 2015-02-09 03:34 pm (UTC)no subject
Date: 2015-02-09 03:33 pm (UTC)А вот с патчами третьей стороны, если они поштучные, веселее. Их тогда и хранить надо поштучно. Возможно - по ветке на каждый патч, с периодическими rebase на свою ветку.
А при наложении, соответственно, git diff каждой из этих веток, и наложение результирующих патчей.