2011-03-24 26 views
5

Mục đích của plugin hg mq là để có thể thực hiện các cam kết hoàn hảo cho kho lưu trữ của bạn, không gây nhầm lẫn với những thay đổi bạn đã thực hiện trong ADHD vắng mặt của bạn gây ra rambling thông qua mã của bạn;Việc cần làm khi bạn có quá nhiều thay đổi trong một bản vá duy nhất trong một hg mq hàng đợi bản vá?

Ví dụ:

Tôi đang xử lý lỗi x khi tôi nhận thấy lỗi y và bắt đầu thực hiện thay thế. Tại thời điểm này bạn có nghĩa vụ phải tạo ra một bản vá mới trong hàng đợi vá để không nhầm lẫn những thay đổi khi nó được hg qfinish cam kết vào kho lưu trữ của bạn.

Giả sử trong một phút bạn quên tạo bản vá mới và trong quá trình hg qrefresh. Sau đó, sau đó nhận ra sai lầm của bạn, bạn muốn tách các thay đổi từ một miếng vá đó thành hai bản vá.

Tôi nhận thấy rằng nó phải làm với việc chỉnh sửa tệp vá của bạn (và tệp vá mới) trong hàng đợi để tách các thay đổi thành các bản vá riêng biệt và các cam kết sau này. Tuy nhiên, tôi chưa có kỹ năng chỉnh sửa các tập tin vá lỗi khác.

Tôi có thể tìm hiểu về điều này ở đâu? Và làm thế nào có thể đi về điều này?

Trả lời

0

Tôi có bí danh vỏ, viq="vim $(hg root)/.hg/patches/", mà tôi chỉ sử dụng cho những tình huống này!

Tôi sẽ chỉ chạy viq để kéo lên các bản vá, sau đó chỉnh sửa bằng tay phần khác và di chuyển các đoạn vào các bản vá khác nếu thích hợp.

Tôi thích điều này hơn các phương pháp tương tác (ví dụ: git add -i) vì tôi không cảm thấy an toàn khi thực hiện lời nhắc tương tác khi tôi làm việc từ trình soạn thảo của mình (Tôi biết rằng trình chỉnh sửa của tôi tạo bản sao lưu, hoàn tác nhỏ, v.v ...).

+0

Tôi không làm rõ trong bài viết của mình nhưng, tôi biết các tệp bản vá ở đâu, nó chỉ là tôi không thực sự tốt về các đặc điểm chỉnh sửa tệp vá. – leeand00

+0

Ah, xin lỗi - tôi không có ý nói rằng bạn không biết họ đang ở đâu. Tôi chỉ nói rằng, với tất cả các tùy chọn tôi biết, đây là cách tôi thích làm điều đó. –

+0

Ngoài ra, miễn là bạn đang chỉnh sửa ở [cấp độ hunk] (http://en.wikipedia.org/wiki/Diff#Unified_format), nó thực sự dễ dàng - bạn có thể di chuyển hunks xung quanh tuy nhiên bạn muốn, chỉ cần quá lâu như là tiêu đề chính xác (tức là, '--- a/foo \ n +++ b/foo') là một nơi nào đó phía trên các khối di chuyển. –

3

Tùy chọn khác (giả sử nó chạy trên nền tảng của bạn) là phiên bản 2.0 của TortoiseHG. Tiện ích Shelve 'không thích hợp' cho phép di chuyển khối và tệp giữa các bản vá hoặc vào thư mục làm việc. Nó có sẵn cho Windows, Linux và có thể là OSX.

http://tortoisehg.bitbucket.io/

2

Bạn có thể kích hoạt các record extension, thêm vào .hgrc những dòng sau:

[extensions] 
hgext.record = 

Bạn có thể xóa bản vá hiện tại của bạn với

hg qrefresh nothing 

(lưu ý rằng "nothing "chỉ là một chuỗi ngẫu nhiên: các đối số cho qrefresh là danh sách các tệp phải được bao gồm trong hiện tại bản vá, vì vậy mọi thứ không phải là tên của tệp đã sửa đổi sẽ làm - tôi thường sử dụng "0")

Bây giờ với hg qrecord <patchName> bạn có thể chọn tương tác mà những thay đổi phải đi trong bản vá mới. Những thay đổi còn lại có thể được thêm vào một bản vá khác với qnew hoặc một số khác qrecord. Cuối cùng, bạn có thể sử dụng qpop, qfold hoặc chỉnh sửa .hg/patches/series để hợp nhất và sắp xếp lại các bản vá.

+0

Nghe có vẻ khá thú vị ... Tôi sẽ phải xem xét điều đó. * cheerers! * – leeand00

+1

Ngoài ra 'hg qcrefresh' (một phần của phần mở rộng crecord) cho phép bạn chọn từng dòng, nếu các bản vá tự động quá thô. –

Các vấn đề liên quan