LINUX.ORG.RU

Как правильно делать патчи?

 , ,


0

2

Например, у меня форк проекта с github. Наложено очень много патчей - есть дополнительные файлы, некоторые сильно отредактированы из существующих. Выходит новая версия минорная, изменинения небольшие. Приходится все файлы добавлять вручную (которые добавлены), изменённые файлы открывать вручную и искать место, заменять код. При этом содержание некоторых файлов может незначительно меняться, значит номер строки с кодом будет другой. Как правильнее и быстрее делать всё это?

★★★★★

Делай контекстный патч.

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

Внезапно, merge/rebase?

Я почитал про слияние/перемещение в гите. Но не совсем понимаю, как правильно сделать. Есть основная ветка проекта (master), есть ответвление (patched). Я правильно понял, что если сделаю

$ git checkout patched
$ git rebase master
То если на 1 файл был уже наложен патч в patched, сохранится новый патч из master и наложится старый из patched?

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

Так понятно?

$ git log --graph master
* 41b436c Patch on master
* 66b9113 Init
$ git log --graph patch 
* 79c1d5b Patch on patch
* 66b9113 Init

$ git checkout patch 
Switched to branch 'patch'
$ git rebase master
First, rewinding head to replay your work on top of it...
Applying: Patch on patch

$ git ll --graph master
* 41b436c Patch on master
* 66b9113 Init
$ git ll --graph patch 
* 19c39cb Patch on patch
* 41b436c Patch on master
* 66b9113 Init

Но тебе, лучше юзать merge:

$ git log --graph master
* 41b436c Patch on master
* 66b9113 Init
$ git log --graph patch 
* 79c1d5b Patch on patch
* 66b9113 Init

$ git checkout patch 
Switched to branch 'patch'
$ git merge master

$ git log --graph master
* 41b436c Patch on master
* 66b9113 Init
$ git log --graph patch 
*   11e1d5b Merge branch 'master' into patch
|\  
| * 41b436c Patch on master
* | 5fb5b55 Patch on patch
|/  
* 66b9113 Init

Rebase для линейной истории больше нужен.

EXL ★★★★★
()
Ответ на: комментарий от EXL
*   11e1d5b Merge branch 'master' into patch
|\  
| * 41b436c Patch on master
* | 5fb5b55 Patch on patch
|/  
* 66b9113 Init

Спасибо, именно такой результат нужен.

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

кстати, гуёвая утилита gitk из комплекта, даёт визуальное и очень наглядное представление всех изменений, не знал про неё.

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

Я обычно git'ом рулю из консоли, а blame и diff смотрю в IDE. Мне удобно так.

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

Есть ещё git gui, в нём наглядно коммиты делать. Особенно когда хочешь изменения на несколько патчей разбить.

i-rinat ★★★★★
()
Последнее исправление: i-rinat (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.