Làm thế nào để phân chia và chỉnh sửa các bản vá?


10

Đôi khi tôi cần chia một miếng vá lớn thành những miếng nhỏ hơn (tách rời), ví dụ cho mỗi tính năng riêng biệt đi kèm.

Thông thường tôi làm điều đó thông qua các lệnh vim yank / dd tiêu chuẩn và chuyển đổi cửa sổ chia nhỏ.

Nhưng có một số công cụ / vim-thủ thuật để giúp với loại chỉnh sửa như vậy?

Ví dụ: hỗ trợ cho các lệnh như: di chuyển 3 khối hoàn chỉnh tiếp theo sang tệp vá mở phải


Bạn cũng có thể muốn tìm kiếm trên unix.stackexchange.com/questions/618/how-to-merge-patches
Maciej Piechotka

1
BTW, tại sao mọi người trả lời câu hỏi nhưng không thấy nó hữu ích / đủ rõ ràng để bỏ phiếu?!? ;)
maxschlepzig

Câu trả lời:


7

Bạn có thể muốn xem qua patchutils [1]. Về phần vim, tôi đã viết một plugin vim nhỏ giúp điều hướng trong các bản vá: diff_navigator [2].

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

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


1
Các diff_navigatorURL là rõ ràng vim.org/scripts/script.php?script_id=2361 Emacs có nhiều tính năng tương tự trong ediff chế độ và SMerge
Riccardo Murri

2
Bạn có thể mở rộng câu trả lời của bạn để làm cho nó toàn diện hơn? Thêm một ví dụ về cách sử dụng tiện ích nào từ patchutils được thiết lập để chia một bản vá lớn thành các phần khác nhau sẽ rất tuyệt ...
maxschlepzig

5

Hơi lạc đề, tôi đoán nhưng tôi vẫn nghĩ nó hữu ích.

Nếu bạn sử dụng git để thực hiện sự phát triển của mình, bạn có thể dễ dàng chia toàn bộ các thay đổi của mình thành các "khối" nhỏ hơn, thể hiện mỗi tính năng. Bạn kết thúc với một cam kết cho mỗi tính năng và có thể sử dụng git's git-format-patchđể tạo các bản vá (và thậm chí ký và thuộc tính đúng), tôi đã phác thảo cách thực hiện điều đó tại đây


3

My Suse đã sử dụng splitdiffnhững công việc như thế này:

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

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.