Itsumo sobani, itsumo hitori
Добрый день.
Использую Mercurial для контроля версий. Номожет это и не важно.
Суть в том, что я использую некоторые опенсорс библиотеки и внёс в них свои личные правки. Как лучше поддерживать актуальность библиотек (обновляться из ихних удалённых mercurial-репозиториев) и при этом хранить историю своих правок?
Пока мысль создать в клоне свою ветку, затягивать изменения снаружи и мержить в свою ветку. Прокатит ли это вообще? Есть способ лучше и более автоматический?
Естественно, коммитить мои изменния в общий репозиторий мне врядли кто даст и нужны они вероятно тока мне.
Использую Mercurial для контроля версий. Номожет это и не важно.
Суть в том, что я использую некоторые опенсорс библиотеки и внёс в них свои личные правки. Как лучше поддерживать актуальность библиотек (обновляться из ихних удалённых mercurial-репозиториев) и при этом хранить историю своих правок?
Пока мысль создать в клоне свою ветку, затягивать изменения снаружи и мержить в свою ветку. Прокатит ли это вообще? Есть способ лучше и более автоматический?
Естественно, коммитить мои изменния в общий репозиторий мне врядли кто даст и нужны они вероятно тока мне.
Вообще имхо лучше мердж еще потому что может быть конфликт новой версии с твоим допиливанием.... так что только ручками, только хардкор=)
во вторых, на самом деле все скорее всего не так уж страшно, если ты перелопатил не всю библиотеку а подправил пару классов, то мердж у тебя пройдет без конфликтов, так что 2 мин работы.
Тогда апдейтить становится просто – мне без разницы что изменилось и даже не заморачиваюсь мержем. Просто прогоняю тесты либы после каждого апдейта. И если что провалилось – либо дорасширение, либо откат. А если не провалились, то оно и внимания не стоит.
Если нет тестов или библиотека уже внутри так изменена, что не отделить мух от котлет, то тогда остаётся только ручной мердж, какой и описали сами в посте, увы. Ведь автор библиотеки о вашем коде внутри библиотеки ничего не знает и запросто может его сломать банальным рефакторингом.
К тому же, обновлять или не обновлять – спорный вопрос. Если всё жёстко завязано на библиотеку, то должны быть достаточно весомые изменения чтобы её обновлять. Фризить либу не всегда, но часто остаётся выгоднее как по силам, так и по времени, чем обновлять.
Чтение чейнджлогов наше всё.
Но при этом как минимум одна библиотека активно развивается и фиксится и надо её обновлять. Особенно когда автор фиксит баги, которые я сам нашёл и они мне мешают.
Не, у меня всё более тривиально. У меня пара фиксов, мешающих мне собрать библиотеку и кучка правок против варнингов. Я свой проект собираю со всякими -Wall итд и мне хидера библиотеки выдают тонну варнингов.
Писать в рассылку с патчем. Или пулл реквест.
Если патч не противоречит идеологии проекта и нужен не только отправляющему, то скорее всего его примут.