2013-10-30 16 views
11

Tôi đang cố gắng xem cách hợp nhất trong svn có thể được thực hiện dễ dàng như thế nào.svn: sử dụng vim để hợp nhất các xung đột

Điều này page đề cập rằng các công cụ bên ngoài có thể được sử dụng để hợp nhất. Có thể sử dụng vim làm công cụ hợp nhất bên ngoài không?

Một số yêu cầu bổ sung:

  1. tập tin nên được chia theo chiều ngang/chiều dọc để cung cấp cho một cái nhìn tốt hơn.
  2. Tiêu đề cửa sổ phải được đặt phù hợp.

ví dụ: như trong enter image description here

+1

@romainl: Google đã đưa tôi lên trang này, vì vậy tôi thực sự cảm ơn anh chàng. – ereOn

Trả lời

25

Bước 1:

Lưu kịch bản sau đây, ví dụ như: merger.sh:

#!/bin/sh 
# 


BASE=${1} 
THEIRS=${2} 
MINE=${3} 
MERGED=${4} 
WCPATH=${5} 

vimdiff $MINE $THEIRS -c ":botright split $MERGED" -c ":diffthis" -c "setl statusline=MERGED | wincmd W | setl statusline=THEIRS | wincmd W | setl statusline=MINE" 

Bước 2:

Sửa và thêm dòng sau:

merge-tool-cmd = /path/to/merger.sh 

Bước 3:

Khi bạn nhận được tùy chọn trong svn lệnh merge, chọn tùy chọn 'l' sau. Đây là khởi chạy công cụ bên ngoài để giải quyết xung đột.

Conflict discovered in 'main.h'. 
Select: (p) postpone, (df) diff-full, (e) edit, 
     (mc) mine-conflict, (tc) theirs-conflict, 
     (s) show all options: l 

Bước 4: Bây giờ vim sẽ được mở ở chế độ khác với 3 tệp - của tôi, của chúng và được hợp nhất. Thực hiện các thay đổi bắt buộc trong tệp được hợp nhất và lưu và thoát (:wqa).

Bước 5:

Bây giờ bên dưới tùy chọn sẽ xuất hiện một lần nữa, chọn 'r' (để chấp nhận các phiên bản sáp nhập) bây giờ.

Select: (p) postpone, (df) diff-full, (e) edit, 
      (mc) mine-conflict, (tc) theirs-conflict, 
      (s) show all options: r 
+1

Tôi yêu bạn rất nhiều ngay bây giờ .... điều này thật đẹp. – ldog

+1

Nếu thay đổi này là không cần thiết trên cơ sở lâu dài, nó cũng có thể được thực hiện bằng cách thiết lập biến môi trường SVN_MERGE =/path/to/merger.sh – Michael

+0

Làm thế nào tôi có thể sử dụng tập lệnh này để giải quyết một không gian làm việc lộn xộn với xung đột từ một svn cập nhật "? Tôi có một loạt các tập tin .r *, .mine, nhưng không chắc chắn làm thế nào để có được không gian làm việc của tôi trở lại trong trạng thái sạch một lần nữa. – Christopher

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