Thursday, May 2, 2002

memo (Seize the moment): [轉載] 關於patch跟diff.....



patch就是修補的意思,當我們的程式出錯的時候,就需要
對程式做修補(patch)的動作。

diff是Unix上的一個指令,它可以比較兩個東西的不同處在哪兒...
利用diff我們可以做出patch檔來供修補之用。

Example:
oldwebget.pl是一個有bug的file,內容如下:
==============================================
#!/usr/bin/perl -w
$_ = shift(@ARGV);
$_ =~ s/<\w+>|<\W\w+>//g;
$_ =~ s/<.*>//g;
$_ =~ s/\s+//g;
^^^^^^^^^^^^^^
print;
===============================================


newwebget.pl是一個修正過後的file,
===============================================
#!/usr/bin/perl -w
$_ = shift(@ARGV);
$_ =~ s/<\w+>|<\W\w+>//g;
$_ =~ s/<.*>//g;
$_ =~ s/\s+//;
^^^^^^^^^^^^^^^
↑注意這邊的不同
print;
================================================

執行 diff oldwebget.pl newwebget.pl > patch.diff

會產生patch.diff的修補檔,內容可能如下:

===============================================
16c16
< $_ =~ s/\s+//g;
---
> $_ =~ s/\s+//;
===============================================

接下來你就可以用 patch oldwebget.pl 來修補oldwebget.pl了....


詳細情形請參考man diff 和 man patch...................

--

--





No comments: