Itsumo sobani, itsumo hitori
Добрый день.
Использую Mercurial для контроля версий. Номожет это и не важно.

Суть в том, что я использую некоторые опенсорс библиотеки и внёс в них свои личные правки. Как лучше поддерживать актуальность библиотек (обновляться из ихних удалённых mercurial-репозиториев) и при этом хранить историю своих правок?

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

Естественно, коммитить мои изменния в общий репозиторий мне врядли кто даст и нужны они вероятно тока мне.

@темы: Вопрос

Комментарии
18.09.2014 в 11:10

Ну, пробьешь ты головой стену. И что ты будешь делать в соседней камере?
ну я бы тупо мерджился каждый раз с апдейтом... но не уверен что это самый умный вариант.
Вообще имхо лучше мердж еще потому что может быть конфликт новой версии с твоим допиливанием.... так что только ручками, только хардкор=)
18.09.2014 в 11:31

Itsumo sobani, itsumo hitori
Я тоже не придумал пока ничего лучше мержа, но решил обратиться к коллективному разуму, т.к. я до сих пор работал тока в личном репозитории и не встречался с ситуацией чужих коммитов.
18.09.2014 в 11:41

Ну, пробьешь ты головой стену. И что ты будешь делать в соседней камере?
G-Shadow, еще во-первых, я бы подумал трижды нельзя ли это допиливание вынести как внешний модуль, но допускаю что есть кейсы когда это бессымслено
во вторых, на самом деле все скорее всего не так уж страшно, если ты перелопатил не всю библиотеку а подправил пару классов, то мердж у тебя пройдет без конфликтов, так что 2 мин работы.
18.09.2014 в 12:40

Миру - мир. А Вам - пломбир!
Нередко приходится допиливать библиотеки. Просто расширяю либу в отдельном месте (модуле/файле/usw).
Тогда апдейтить становится просто – мне без разницы что изменилось и даже не заморачиваюсь мержем. Просто прогоняю тесты либы после каждого апдейта. И если что провалилось – либо дорасширение, либо откат. А если не провалились, то оно и внимания не стоит.

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

К тому же, обновлять или не обновлять – спорный вопрос. Если всё жёстко завязано на библиотеку, то должны быть достаточно весомые изменения чтобы её обновлять. Фризить либу не всегда, но часто остаётся выгоднее как по силам, так и по времени, чем обновлять.
Чтение чейнджлогов наше всё.
18.09.2014 в 14:25

Itsumo sobani, itsumo hitori
Не, у меня всё более тривиально. У меня пара фиксов, мешающих мне собрать библиотеку и кучка правок против варнингов. Я свой проект собираю со всякими -Wall итд и мне хидера библиотеки выдают тонну варнингов.

Но при этом как минимум одна библиотека активно развивается и фиксится и надо её обновлять. Особенно когда автор фиксит баги, которые я сам нашёл и они мне мешают.
18.09.2014 в 15:16

G-Shadow,
Не, у меня всё более тривиально. У меня пара фиксов, мешающих мне собрать библиотеку и кучка правок против варнингов. Я свой проект собираю со всякими -Wall итд и мне хидера библиотеки выдают тонну варнингов.
Писать в рассылку с патчем. Или пулл реквест.
Если патч не противоречит идеологии проекта и нужен не только отправляющему, то скорее всего его примут.