1.create patch
使用create patch可
以生成一個(gè)或者多個(gè)修改過(guò)的文件和當(dāng)前版本差異的patch(支持目錄樹(shù))
通常情況下,create patch將
修改保存為.patch或.diff文件
可以將.patch或.diff文件的內(nèi)容復(fù)制出來(lái),發(fā)給需要審查的人
.patch或.diff文件中記錄了發(fā)生這個(gè)patch的版本號(hào)以及具體修改的內(nèi)容
針對(duì)某個(gè)文件或某幾個(gè)文件的若干種修改,可以生成多個(gè).patch或.diff文件
2.apply patch
可以將.patch或.diff文件應(yīng)用到對(duì)應(yīng)版本的項(xiàng)目,就像打補(bǔ)丁一樣
同一個(gè)項(xiàng)目/文件夾下,可以選擇應(yīng)用需要的patch
通常來(lái)說(shuō),應(yīng)用一個(gè)patch時(shí)文件版本和生成這個(gè)patch時(shí)文件的版本是一致的;如果不一致,也可以強(qiáng)制應(yīng)用,svn會(huì)自動(dòng)進(jìn)行diff(這時(shí)候需要手動(dòng)合并)
linux下,可以使用系統(tǒng)的patch命令來(lái)應(yīng)用patch,eg: patch -p0
<xxx.patch
3.使用
暫時(shí)不需要提交或不允許提交的修改,可以選擇create patch來(lái)保存修改的內(nèi)容
選擇create patch來(lái)
保存修改的內(nèi)容并且提交patch,通過(guò)審查后,(在服務(wù)器端)應(yīng)用patch
當(dāng)一個(gè)功能有多種解決方案時(shí),可以生成多個(gè)patch,(提交后)分別經(jīng)過(guò)測(cè)試,再
決定應(yīng)用哪個(gè)patch
多個(gè)功能分別需要改同一個(gè)文件的不同地方(即沒(méi)有同一行),可以做成多個(gè)patch,
應(yīng)用patch的順序沒(méi)有要求(在linux下應(yīng)用也一樣成功,只是會(huì)生成多個(gè).orig文
件)
多個(gè)連續(xù)性的功能,他們修改的文件都與一個(gè)base作patch,例:p1在v1的
基礎(chǔ)上開(kāi)發(fā)v2,生成v2和v1之間的patch1;p2在v2的基礎(chǔ)上開(kāi)發(fā)v3,生成v3和v1之間的patch2,這樣只要應(yīng)用patch2也就應(yīng)用
了patch1。
4.帶來(lái)的問(wèn)題
一個(gè)較早的patch,在經(jīng)過(guò)多輪提交后,如果想再要應(yīng)用,需要嚴(yán)格的diff
如果兩個(gè)patch分別改了同一行代碼,應(yīng)用第一個(gè)patch后要再應(yīng)用第二個(gè)patch時(shí),
仍然需要diff。如果在linux下,會(huì)產(chǎn)生沖突,生成.orig和.rej兩個(gè)文件(此時(shí)仍然需要手動(dòng)進(jìn)行比較合并)
第3部分提到的連續(xù)性,要準(zhǔn)確的預(yù)見(jiàn)到,比較困難
第3部分提到的多個(gè)連續(xù)的功能,后做的功能的某個(gè)文件更新了先做的功能的內(nèi)容,但先做的功能可能還涉及到其他文件,容易造成漏更新文件的情況