Як розділити та редагувати патчі?


10

Іноді мені потрібно розділити великий патч на менші (непересічні), наприклад, на кожну окрему функцію.

Зазвичай я це роблю за допомогою стандартних команд vim yank / dd та комутації розділених вікон.

Але чи є якісь інструменти / vim-трюки, які допоможуть у подібному редагуванні?

Наприклад, підтримка таких команд, як: перемістіть 3 наступні повні хунки до відкритого праворуч файлу патча


Ви також можете подивитися на unix.stackexchange.com/questions/618/how-to-merge-patches
Maciej Piechotka

1
До речі, як же люди відповідають на питання, але не вважають його корисним / достатньо зрозумілим для його голосування?!? ;)
maxschlepzig

Відповіді:


7

Можливо, ви захочете заглянути в пачулі [1]. Для частини vim я написав невеликий плагін vim, який допомагає при навігації в патчах: diff_navigator [2].

[1] http://cyberelk.net/tim/software/patchutils/

[2] http://www.vim.org/scripts/script.php?script_id=2361


1
diff_navigatorURL, по- видимому vim.org/scripts/script.php?script_id=2361 Emacs має подібні риси в Ediff режимах і SMerge
Ріккардо Murri

2
Чи можете ви розширити свою відповідь, щоб зробити її всебічнішою? Додаючи приклад, як використовувати яку утиліту з встановлених пачули, щоб розділити великий патч на непересічні, було б чудово ...
maxschlepzig

5

Я думаю, що це не в темі, але я все-таки думаю, що це корисно.

Якщо ви використовуєте git для своєї розробки, ви можете легко розділити цілі зміни на більш дрібні "хунки", які втілюють в собі одну функцію. У кінцевому підсумку ви можете виконувати одну фіксацію на функцію і можете використовувати git's git-format-patchдля створення (і навіть підписування та належного атрибуту) патчів, я окреслив, як це зробити тут


3

Мій Suse має splitdiffутиліту, яка працює так:

$ splitdiff -a tmp.179639.patch
Wrote >tmp.179639.patch.part001
Wrote >tmp.179639.patch.part002

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.