2012-04-26 14 views
20

Tôi muốn tạo một tệp bản vá kiểu SVN cho httpd.conf để tôi có thể dễ dàng áp dụng nó cho các máy chủ khác.Làm thế nào để tạo và áp dụng bản vá SVN?

Nếu tôi làm

cd /root 
diff -Naur /etc/httpd/conf/httpd.conf_original /etc/httpd/conf/httpd.conf > httpd.patch 
cp /etc/httpd/conf/httpd.conf_original /etc/httpd/conf/httpd.conf 
patch < httpd.patch 

tôi nhận được:

can't find file to patch at input line 3 
Perhaps you should have used the -p or --strip option? 
The text leading up to this was: 
-------------------------- 
|--- /etc/httpd/conf/httpd.conf_original 2012-04-26 13:36:08.331068438 +0200 
|+++ /etc/httpd/conf/httpd.conf 2012-04-26 14:27:36.857075085 +0200 
-------------------------- 
File to patch: 

Câu hỏi

Tôi đang làm gì sai?

Trả lời

32

Theo mặc định, patch bỏ qua phần thư mục của tên tệp đích; nó chỉ tìm kiếm "httpd.conf" trong thư mục làm việc hiện tại của bạn. Nếu bạn muốn nó sử dụng đường dẫn đầy đủ, bạn phải tự hỏi một cách rõ ràng để làm như vậy với các tùy chọn -p:

patch -p0 < httpd.patch

(Số sau -p nói với nó bao nhiêu mức độ để loại bỏ từ con đường filename; -p N dải tắt tất cả mọi thứ lên đến và bao gồm cả số slash N. các dấu gạch chéo đầu tiên là số 1, vì vậy -p0 có nghĩa là "không tước bất cứ điều gì".)

Nói chung, bạn có thể là tốt hơn hết không dựa vào có đường dẫn đầy đủ trong tệp vá, mặc dù; bản vá sẽ hữu ích hơn nếu nó hoạt động ngay cả đối với các tệp trong một bố cục thư mục khác. Bạn luôn có thể cd vào thư mục chứa tệp trước khi chạy bản vá (và sử dụng đường dẫn đầy đủ để tìm tệp bản vá, nếu cần, thay vào đó).

30

Sử dụng svn patch.

Trường hợp 1: sử dụng /usr/bin/patch:

svn diff > $TMPDIR/mypatchfile.patch 
cd myOtherCheckOut 
patch -p0 < $TMPDIR/mypatchfile.patch 

Áp dụng những thay đổi của bạn tốt nếu không có thêm/tập tin đã xóa thông qua svn add hoặc svn delete

Trường hợp 2: sử dụng svn patch:

svn diff > $TMPDIR/mypatchfile.patch 
cd myOtherCheckOut 
svn patch $TMPDIR/mypatchfile.patch 

Bài hát cũng đã thêm và xóa các tệp.

Lưu ý rằng không phải ca khúc svn move s và rename s

3

Nếu bạn đang sử dụng TortoiseSVN có một dễ sử dụng giao diện để tạo và áp dụng một bản vá.

Để tạo:

Nhấp chuột phải vào thư mục -> TortoiseSVN -> Tạo vá

Bạn sẽ được nhắc nhở để chọn một tập tin đầu ra

Để áp dụng:

Nhấp chuột phải vào thư mục -> TortoiseSVN -> Áp dụng bản vá

Bạn sẽ được nhắc nhở với một giao diện để chọn (các) tệp để áp dụng các bản vá cho và hợp nhất nếu cần.