LINUX.ORG.RU

Как искать точки мерджа в git? Или как синхронизировать форки?

 


0

1

Есть 3 ветки:

Основная:

https://cgit.freedesktop.org/mesa/mesa/log/

Форк №1:

https://github.com/iXit/Mesa-3D

Форк №2:

https://github.com/airlied/mesa/tree/semi-interesting/

В обоих форках временами проводится объединение с основной веткой.

Как смержить эти три ветки?

Как смержить эти три ветки?

Octopus merge?

Правда уверен, что будет куча конфликтов там. Не очень однозначные форки. Лучше переносить нужное отдельными патчами и черепикать.

EXL ★★★★★
()
Ответ на: комментарий от EXL

Как раз форки очень простые. Они постоянно синхронизируются.

Не очень однозначные форки. Лучше переносить нужное отдельными патчами и черепикать.

Но как найти коммиты, на которых кодовые базы совпадают?

steemandlinux ★★★★★
() автор топика

недавно все мержилось норм, но уже наверно неделю вылетают конфликты. бери

https://github.com/ChristophHaag/mesa-mesa

там меса плюс пара патчей + найн из иксита, semi-interesting туда не мержится, но разве оно сейчас сильно от апстирма отличается?

Novell-ch ★★★★★
()
Ответ на: комментарий от Novell-ch

О классная ветка. Аж глаза красным цветом загорелись.

steemandlinux ★★★★★
() автор топика
Ответ на: комментарий от steemandlinux

Но как найти коммиты, на которых кодовые базы совпадают?

Разве Git не должен сделать это автоматом?

EXL ★★★★★
()
Ответ на: комментарий от steemandlinux

Git сам должен найти общего родителя трёх веток и слить их применив стратегию octopus. Это в теории, когда разные (три) команды программистов работают каждый над своим и в другие файлы не лезут. На практике, уверен, придётся разрешать конфликты.

EXL ★★★★★
()
Последнее исправление: EXL (всего исправлений: 1)
Ответ на: комментарий от steemandlinux

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

Novell-ch ★★★★★
()
Ответ на: комментарий от steemandlinux

ну ошибки в мерже идут от glsl компилятора месы, посмотри какие большие изменени в нем были в течении недели

Novell-ch ★★★★★
()

Создаёшь репозиторий, добавляешь и фетчишь remotes.

git init
git remote add n0 git://anongit.freedesktop.org/mesa/mesa
git remote add n1 https://github.com/iXit/Mesa-3D
git remote add n2 https://github.com/airlied/mesa
git fetch n1 # не обязательно, но с github быстрее качается
git fetch --all

На этом моменте можешь открыть gitk n0/master n1/master n2/semi-interesting и посмотреть, как они между собой связаны.

Гит при мердже сам ищет общий коммит, но можно его отдельно найти:

git merge-base n0/master n1/master
git merge-base n0/master n2/semi-interesting

Создаёшь ветку merges, и мержишь в неё:

git checkout n0/master
git checkout -b merges
git merge n1/master # смерджилось без проблем
git merge n2/semi-interesting # а вот тут конфликты пошли

Судя по сообщению к коммиту f4e499ec79147f4172f3669ae9dafd941aaeeb65 (из n0/master), правки из n2/semi-interesting уже есть в n0/master, так что эту ветку и не надо мерджить.

NeXTSTEP ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.