專(zhuān)利名稱(chēng):源文件的比較裝置及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及源文件編輯和比4交」技術(shù)領(lǐng)域,更具體的i兌,涉及在 修改某軟件的某版本源文件后,將修改加入到該軟件的其他版本中 的技術(shù)。
背景技術(shù):
源代碼是計(jì)算機(jī)軟件學(xué)中的術(shù)語(yǔ),它是用計(jì)算機(jī)語(yǔ)言寫(xiě)成的字 符串,是軟件的實(shí)現(xiàn)方式;源文件是保存源代碼的文件。為了便于 閱讀,源代碼是一4于行#:組織起來(lái),然后某些4于組成了相對(duì)獨(dú)立的 一個(gè)功能塊,于是就有了結(jié)構(gòu)、函數(shù)、過(guò)程、類(lèi)等由數(shù)行代碼組成 的有機(jī)體,本文把這個(gè)有機(jī)體簡(jiǎn)單叫做組織,各個(gè)組織的共同特點(diǎn) 之一是都有 一個(gè)名稱(chēng);另外還有一些組織外的多4亍的宏定義和注釋?zhuān)?它們沒(méi)有一個(gè)名稱(chēng),但是它們也是由多行代碼組成的 一個(gè)有機(jī)體, 本文把這些也歸入組織,它們的名字就用第一4亍替代。組織外的包 含語(yǔ)句、全局變量定義、單行宏和單行注釋等就簡(jiǎn)單稱(chēng)為非組織。 當(dāng)今的軟件功能強(qiáng)大,系統(tǒng)復(fù)雜,經(jīng)常需要很多程序員在很長(zhǎng)的時(shí) 間段里對(duì)源代碼進(jìn)行反復(fù)修改。通常某個(gè)程序員在修改軟件時(shí),需 要耳又得該軟件的某個(gè)版本的源代碼,^修改完成后,需要一奪修改保存 到該版本和其他需要的版本中去,此時(shí)就要用到文件的比較合并。
目前已經(jīng)有了很多文件的比較合并工具,他們大都是以行為單 位進(jìn)行比較。其實(shí)現(xiàn)方式是先將待比較的兩個(gè)文件打開(kāi),將其內(nèi)容讀入比較窗口中,從第一行開(kāi)始,逐行比較,將有差異的、對(duì)方?jīng)]
有的4亍標(biāo)i己出來(lái)。這種4安行比專(zhuān)交的方法存在以下弊端
1. 當(dāng)兩個(gè)文件相差比較大時(shí),標(biāo)記會(huì)非常多,其中很多標(biāo)記 是和這次合并沒(méi)有關(guān)系的。例如,在1.0的片反本上增加、刪除、》務(wù) 改了某些函數(shù)的文件Al.l,需要將這些改動(dòng)也合入到2.0版本的源 文件A2.0中,Al.l在修改前和B2.0文件已經(jīng)差別很大了,而這次 合入又只能合本次改動(dòng)的代碼,逐行比較的繁多標(biāo)記對(duì)合代碼來(lái)i兌 是一種嚴(yán)重的干擾;
2. 通常對(duì)源文件的改動(dòng)者卩是以組織為單〗立的,當(dāng)需要比4交兩 個(gè)版本差異的時(shí)候,由于采用的是逐行比較,改動(dòng)的組織不能一目 了然的出i見(jiàn)在讀者眼前;以及
3. 當(dāng)文件比l交大時(shí),完全讀入兩個(gè)文件到內(nèi)存將占有過(guò)多的 系統(tǒng)資源。在大的文件中找該合的改動(dòng)也會(huì)是相當(dāng)?shù)馁M(fèi)神,加重了 合并代碼的負(fù)擔(dān)。
因此,需要一種源文件的比4支的解決方案,能夠解決上述相關(guān) 技術(shù)中的問(wèn)題。
發(fā)明內(nèi)容
本發(fā)明的目的在于減輕程序員在合代碼時(shí)的負(fù)擔(dān),減少比較大 文件時(shí)占用的內(nèi)存并提供一種比較各版本的源文件差異的工具。
根據(jù)本發(fā)明的一個(gè)方面,提供了一種源文件的比較裝置,包括 源文件組織提取模塊,用于分別從待比較的第一源文件和第二源文 件中提取組織,并將提取的組織的名稱(chēng)及其描述信息分別存儲(chǔ)到第 一緩沖區(qū)和第二緩沖區(qū)中,以及將第 一 源文件和第二源文件中的非 組織分別存儲(chǔ)到第一緩沖區(qū)和第二緩沖區(qū)中;組織比較模塊,用于200810085720. 根據(jù)存儲(chǔ)在第一緩沖區(qū)和第二緩沖區(qū)中的組織的名稱(chēng)及其描述信息 將待比較的組織分別讀取到第一緩沖區(qū)和第二緩沖區(qū)中,并以組織 為單位對(duì)待比較的組織進(jìn)行比較,以及將比較結(jié)果分別存儲(chǔ)到第一
緩沖區(qū)和第二緩沖區(qū)中;以及行比較模塊,用于以行為單位對(duì)第一
緩沖區(qū)和第二緩沖區(qū)中的非組織進(jìn)行比較,以及在組織比較結(jié)果表 明一皮比4交的組織不同時(shí),對(duì)^皮比4交的組織進(jìn)4亍展開(kāi)并以4亍為單位對(duì) 展開(kāi)的組織的內(nèi)容進(jìn)行比較,并將比較結(jié)果存儲(chǔ)到第 一緩沖區(qū)和第 二ll沖區(qū)中。
上述裝置還包括顯示,莫塊,用于顯示組織比4交結(jié)杲和行比專(zhuān)交 結(jié)果;緩沖區(qū)管理模塊,用于管理第一緩沖區(qū)和第二緩沖區(qū),并為 源文件組織提取模塊、組織比較模塊、行比較模塊、以及顯示模塊 提供接口;文件保存才莫塊,用于保存修改的源文件;以及^f務(wù)改及合并 才莫塊,用于對(duì)比較后的第一源文件和第二源文件進(jìn)行修改或合并。
源文件組織提取模塊包括提取單元,用于分別從待比較的第 一源文件和第二源文件中提取組織;第一存儲(chǔ)單元,用于將提取單 元提取的組織存儲(chǔ)到第一緩沖區(qū)和第二緩沖區(qū)中,以及將第一源文 件和第二源文件中的非組織分別存儲(chǔ)到第 一緩沖區(qū)和第二緩沖區(qū)中。
組織比較模塊包括讀取單元,用于根據(jù)存儲(chǔ)在第一緩沖區(qū)和 第二緩沖區(qū)中的組織的名稱(chēng)及其描述信息將待比較的組織分別讀取 到第一緩沖區(qū)和第二緩沖區(qū)中;比4交單元,用于以組織為單位對(duì)祠r 比較的組織進(jìn)行比較;以及第二存儲(chǔ)單元,用于將比較結(jié)果分別存 儲(chǔ)到第 一緩沖區(qū)和第二緩沖區(qū)中。
行比較模塊包括非組織比較單元,用于以行為單位對(duì)第一緩 沖區(qū)和第二緩沖區(qū)中的非組織進(jìn)行比較;組織展開(kāi)單元,用于在組 織比較結(jié)果表明被比較的組織不同時(shí),對(duì)被比較的組織進(jìn)行展開(kāi);行比較單元,用于以行為單位對(duì)展開(kāi)的組織的內(nèi)容進(jìn)行比較;以及 第三存儲(chǔ)單元,用于將比較結(jié)果存儲(chǔ)到第一緩沖區(qū)和第二緩沖區(qū)中。第三存儲(chǔ)單元還用于在被比較的第一源文件和第二源文件之一 具有另 一個(gè)源文件沒(méi)有的內(nèi)容,或第 一源文件和第二源文件之一 的 內(nèi)容與另 一個(gè)源文件的內(nèi)容不同時(shí),分別對(duì)存在差異的內(nèi)容做以標(biāo) 記并將其分別存儲(chǔ)到其所在的第一緩沖區(qū)和第二緩沖區(qū)中。根據(jù)本發(fā)明的另一個(gè)方面,提供了一種源文件比較方法,包括 以下步驟建立第一緩沖區(qū)和第二緩沖區(qū),將第二源文件的組織的 名稱(chēng)及其描述信息以及第 一源文件的非組織存入第 一緩沖區(qū),以及 將第二源文件的組織的名稱(chēng)及其描述信息以及第二源文件的非組織存入第二緩沖區(qū);根據(jù)存儲(chǔ)在第 一緩沖區(qū)和第二緩沖區(qū)中的組織的 名稱(chēng)及其描述信息將待比較的組織分別讀取到第一緩沖區(qū)和第二緩 沖區(qū)中,并以組織為單位對(duì)4寺比4交的組織進(jìn)4亍比4交,以及在組織比 較結(jié)果表明被比較的組織不同時(shí),以行為單位對(duì)被比較的組織的內(nèi)容進(jìn)行比較,并將比較結(jié)果分別存儲(chǔ)到第一緩沖區(qū)和第二緩沖區(qū)中; 以及以行為單位對(duì)第 一緩沖區(qū)和第二緩沖區(qū)中的非組織進(jìn)行比較, 并將比較結(jié)果分別存儲(chǔ)到第一緩沖區(qū)和第二緩沖區(qū)中。將比較結(jié)果分別存儲(chǔ)到第 一緩沖區(qū)和第二緩沖區(qū)中的步驟還包括以下步驟在被比較的第 一源文件和第二源文件之一具有另 一個(gè) 源文件沒(méi)有的內(nèi)容,或第 一源文件和第二源文件之一的內(nèi)容與另一 個(gè)源文件的內(nèi)容不同時(shí),分別對(duì)存在差異的內(nèi)容估文以標(biāo)記并將其分 別存儲(chǔ)到其所在的第 一緩沖區(qū)和第二緩沖區(qū)中。上述方法還包括以下步驟對(duì)比4交后的第 一 源文件和/或第二源 文件進(jìn)4H務(wù)改或合并;以及顯示比4交結(jié)果。上述方法還包括以下步驟當(dāng)被比較的兩個(gè)組織相同時(shí),將組 織的內(nèi)容直4妻4妄行進(jìn)4亍顯示。上述方法還包括以下步驟當(dāng)保存比較后的第 一源文件和/或第 二源文件時(shí),以其j也文件名備〗分比4交前的第 一源文件和/或第二源文 件,并分別以比較前的第 一源文件和/或第二源文件的文件名保存比 專(zhuān)交后的第 一 源文件和/或第二源文件。上述方法還包括以下步驟當(dāng)回退時(shí),將備^f分的第一源文件和/ 或第二源文件的文件名改回為其原文件名。在上述方法中,組織的描述信息包括組織在源文件中的位置。采用本發(fā)明與現(xiàn)在的以行為單位比較方法相比源文件的比較 結(jié)果將不在混亂。首先出現(xiàn)屏幕上的是組織的比4交結(jié)果,點(diǎn)擊組織 的名稱(chēng),組織內(nèi)容的比4交結(jié)果就立刻出現(xiàn)在屏幕上。這樣^皮比4交的 源文件的哪些組織有差異,組織的差異是什么就分層的清晰的出現(xiàn) 在程序員面前,而不必再?gòu)男斜容^結(jié)果的眾多差異中去辛苦的尋找 組織,再尋找組織間的差異。另外,在比較大文件時(shí),本方法將不 再打開(kāi)完全讀入整個(gè)文件,而只是在需要纟喿作組織時(shí),才將組織的 內(nèi)容讀入內(nèi)存,這才羊節(jié)省了內(nèi)存開(kāi)支。本發(fā)明的其它特征和優(yōu)點(diǎn)將在隨后的i兌明書(shū)中闡述,并且,部 分地從說(shuō)明書(shū)中變得顯而易見(jiàn),或者通過(guò)實(shí)施本發(fā)明而了解。本發(fā) 明的目的和其他優(yōu)點(diǎn)可通過(guò)在所寫(xiě)的說(shuō)明書(shū)、權(quán)利要求書(shū)、以及附 圖中所特別指出的結(jié)構(gòu)來(lái)實(shí)現(xiàn)和獲得。
此處所說(shuō)明的附圖用來(lái)提供對(duì)本發(fā)明的進(jìn)一步理解,構(gòu)成本申i青的一部分,本發(fā)明的示意性實(shí)施例及其i兌明用于解釋本發(fā)明,并 不構(gòu)成對(duì)本發(fā)明的不當(dāng)限定。在附圖中圖1示出了根據(jù)本發(fā)明實(shí)施例的源文件的比較裝置的框圖;圖3示出了根據(jù)本發(fā)明的一個(gè)實(shí)施例的源文件的比較方法的流 禾呈圖;以及圖4示出了根據(jù)本發(fā)明實(shí)施例的比較合并的具體操作過(guò)程示意圖。
具體實(shí)施方式
下面將結(jié)合附圖來(lái)詳細(xì)說(shuō)明本發(fā)明的實(shí)施例。圖1示出了根據(jù)本發(fā)明實(shí)施例的源文件的比較裝置的框圖。參 照?qǐng)D1,根據(jù)該實(shí)施例的源文件的比壽交裝置100包括源文件組織 才是取才莫塊102,用于分別從待比較的第一源文件和第二源文件中4是 取組織,并將提取的組織的名稱(chēng)及其描述信息分別存儲(chǔ)到第一緩沖 區(qū)和第二緩沖區(qū)中,以及將第 一 源文件和第二源文件中的非組織分 別存儲(chǔ)到第一緩沖區(qū)和第二緩沖區(qū)中;組織比較模塊104,用于根 據(jù)存儲(chǔ)在第 一緩沖區(qū)和第二緩沖區(qū)中的組織的名稱(chēng)及其描述信息將 待比較的組織分別讀取到第一緩沖區(qū)和第二緩沖區(qū)中,并以組織為 單位對(duì)待比較的組織進(jìn)行比較,以及將比較結(jié)果分別存儲(chǔ)到第 一緩 沖區(qū)和第二緩沖區(qū)中;以及行比較模塊106,用于以行為單位對(duì)第 一緩沖區(qū)和第二緩沖區(qū)中的非組織進(jìn)行比較,以及在組織比較結(jié)果織比4交結(jié)果和4亍 比較結(jié)果;緩沖區(qū)管理模塊110,用于管理第一緩沖區(qū)和第二緩沖 區(qū),并為源文件組織提取模塊、組織比較模塊、行比較沖莫塊、以及 顯示模塊提供接口;文件保存模塊112,用于保存修改的源文件;以 及修改及合并模塊,用于對(duì)比較后的第一源文件和第二源文件進(jìn)行 》務(wù)改或合并。源文件組織提取模塊包括提取單元,用于分別從待比較的第 一源文件和第二源文件中提取組織;第一存儲(chǔ)單元,用于將提取單 元提取的組織存儲(chǔ)到第 一緩沖區(qū)和第二緩沖區(qū)中,以及將第 一 源文 件和第二源文件中的非組織分別存儲(chǔ)到第 一緩沖區(qū)和第二緩沖區(qū)中。組織比較模塊包括讀取單元,用于根據(jù)存儲(chǔ)在第一緩沖區(qū)和 第二緩沖區(qū)中的組織的名稱(chēng)及其描述信息將待比4交的組織分別讀取^ 到第一緩沖區(qū)和第二緩沖區(qū)中;比較單元,用于以組織為單位對(duì)待 比較的組織進(jìn)行比較;以及第二存儲(chǔ)單元,用于將比較結(jié)果分別存 儲(chǔ)到第 一緩沖區(qū)和第二緩沖區(qū)中。行比較模塊包括非組織比較單元,用于以行為單位對(duì)第一緩 沖區(qū)和第二緩沖區(qū)中的非組織進(jìn)行比較;組織展開(kāi)單元,用于在組 織比較結(jié)果表明被比較的組織不同時(shí),對(duì)被比較的組織進(jìn)行展開(kāi); 行比4交單元,用于以行為單位對(duì)展開(kāi)的組織的內(nèi)容進(jìn)4亍比4交;以及 第三存儲(chǔ)單元,用于將比較結(jié)果存儲(chǔ)到第一緩沖區(qū)和第二緩沖區(qū)中。13第三存儲(chǔ)單元還用于在被比較的第一源文件和第二源文件之一 具有另 一 個(gè)源文件沒(méi)有的內(nèi)容,或第 一 源文件和第二源文件之一 的 內(nèi)容與另 一個(gè)源文件的內(nèi)容不同時(shí),分別對(duì)存在差異的內(nèi)容^f故以標(biāo) 記并將其分別存儲(chǔ)到其所在的第 一緩沖區(qū)和第二緩沖區(qū)中。圖2示出了根據(jù)本發(fā)明實(shí)施例的源文件的比較方法的流程圖參照?qǐng)D2,根據(jù)該實(shí)施例的源文件比較方法,包括以下步驟步驟S202, 建立第 一緩沖區(qū)和第二緩沖區(qū),將第 一 源文件的組織的名稱(chēng)及其描 述信息以及第 一 源文件的非組織存入第 一 緩沖區(qū),以及將第二源文 件的組織的名稱(chēng)及其描述信息以及第二源文件的非組織存入第二緩 沖區(qū);步驟S204,根據(jù)存儲(chǔ)在第一緩沖區(qū)和第二緩沖區(qū)中的組織的 名稱(chēng)和描述信息將待比較的組織分別讀取到第 一緩沖區(qū)和第二緩沖 區(qū)中,并以組織為單〗立^N寺比4交的《且織進(jìn)4亍比專(zhuān)交,以及在《且織比4交 結(jié)果表明被比較的組織不同時(shí),以行為單位對(duì)邱皮比較的組織的內(nèi)容 進(jìn)行比較,并將比較結(jié)果分別存儲(chǔ)到第一緩沖區(qū)和第二緩沖區(qū)中; 以及步驟S206,以行為單位對(duì)第一緩沖區(qū)和第二緩沖區(qū)中的非組織 進(jìn)行比較,并將比較結(jié)果分別存儲(chǔ)到第一緩沖區(qū)和第二緩沖區(qū)中。將比較結(jié)果分別存儲(chǔ)到第一緩沖區(qū)和第二緩沖區(qū)中的步驟還包 括以下步驟在一皮比較的第一源文件和第二源文件之一具有另一個(gè) 源文件沒(méi)有的內(nèi)容,或第 一源文件和第二源文件之一 的內(nèi)容與另一 個(gè)源文件的內(nèi)容不同時(shí),分別對(duì)存在差異的內(nèi)容估文以標(biāo)記并將其分 別存儲(chǔ)到其所在的第 一緩沖區(qū)和第二緩沖區(qū)中。上述方法還包括以下步驟對(duì)比較后的第 一源文件和/或第二源 文件進(jìn)行修改或合并;以及顯示比4交結(jié)果。上述方法還包括以下步驟當(dāng)^C比較的兩個(gè)組織相同時(shí),將組 織的內(nèi)容直接按行進(jìn)行顯示。上述方法還包括以下步-銀當(dāng)保存比較后的第 一源文件和/或第二源文件時(shí),以其他文件名備份比較前的第 一源文件和/或第二源文 件,并分別以比4交前的第 一源文件和/或第二源文件的文件名4呆存比 較后的第 一 源文件和/或第二源文件。上述方法還包括以下步艱《當(dāng)回退時(shí),將備4分的第一源文件和/ 或第二源文件的文件名改回為其原文件名。在上述方法中,組織的描述信息包括組織在源文件中的位置。下面結(jié)合圖3來(lái)描述本發(fā)明的另一個(gè)實(shí)施例。本實(shí)施例以組織 為單位來(lái)進(jìn)行源文件的比較。在該實(shí)施的系統(tǒng)構(gòu)成如圖1所示。顯 示模塊主要為用戶(hù)提供一個(gè)能清晰體現(xiàn)組織和行比較結(jié)果的界面; 源文件組織提取模塊主要從文件中提取組織,將非組織全部存入緩 沖區(qū)中,組織就只將組織的名稱(chēng)及其組織的描述信息存入緩沖區(qū)中; 組織比較模塊主要以組織為單位進(jìn)行比較,并且將比較結(jié)果存入也 存入緩沖區(qū)中;行比較模塊用于緩沖區(qū)中的非組織比較和組織一M 開(kāi)時(shí)的比較;緩沖區(qū)管理模塊主要管理各個(gè)緩沖區(qū),為其他模塊提 供方便的操作接口 ;文件保存模塊主要保證修改的源文件能及時(shí)保 存,并且能回退。如圖3所示,本實(shí)施例的實(shí)現(xiàn)包括以下步驟步驟S302,設(shè)置可視化的比較界面,將界面主要分為左右的2 個(gè)可編輯窗口 ,分別用于顯示兩個(gè)纟皮比4交文件的組織的名稱(chēng)和組織 外的一切內(nèi)容。界面也需要提供一些方〗更的對(duì)應(yīng)4亍或組織的刪除、 添加、插入等纟乘作4安4旦;步驟S304,以讀方式打開(kāi)兩個(gè)待比較的源文件,建立兩個(gè)緩沖 區(qū),分別將源文件非組織全部讀入到《爰沖區(qū)中,將組織的名稱(chēng)和組 織在文件中的位置等信息存入到緩沖區(qū)中;步驟S306:比較緩沖區(qū)內(nèi)容,如果是非組織,就按非組織實(shí)際 大小比壽交;組織就通過(guò)組織在原文件中位置讀入組織內(nèi)容到IC沖區(qū) 后整塊比較,有差異的,對(duì)方?jīng)]有的,都在緩沖區(qū)中做好記號(hào),并 且保存到緩沖區(qū)中。顯示到編輯窗口時(shí),用區(qū)別于相同部分的顯示 方式將起顯示出來(lái)。用戶(hù)點(diǎn)擊組織的名稱(chēng)時(shí),如果組織不一樣,就 將組織內(nèi)容按行比較,將結(jié)果保存到緩沖區(qū)中,并且顯示到窗口中; 組織一樣,就直接按行將組織顯示到窗口中;步驟S30S,當(dāng)編輯窗口時(shí),及時(shí)將編輯結(jié)果存入緩沖區(qū)中,如 果需要,可以將緩沖區(qū)備份到硬盤(pán)上;以及步驟S310,當(dāng)要保存某個(gè)文件時(shí),創(chuàng)建一個(gè)新文件,才艮據(jù)原文 件和緩沖區(qū)中的內(nèi)容來(lái)填寫(xiě)新文件,填寫(xiě)完后,將原文件備份,并 將新文件名改為原文件名。當(dāng)需要回退時(shí),再將備4分文件改為原文 件名。下面結(jié)合圖4來(lái)i羊細(xì)i兌明本發(fā)明的另一個(gè)實(shí)施例。該實(shí)施例是 以標(biāo)準(zhǔn)C語(yǔ)言+GTK實(shí)現(xiàn),在LINUX類(lèi)平臺(tái)平臺(tái)下的具體應(yīng)用。本實(shí)例包括以下步驟步驟一,建立圖形化界面,創(chuàng)建方便文件的選擇和比4交結(jié)果才乘 作的各種^t妄紐和菜單,并將主窗口分為左右兩半。當(dāng)用戶(hù)選才奪的是 目錄比專(zhuān)交時(shí),先將雙方目錄下的所有文件名以初M亍的方式顯示在左 右主窗口中,將有差異或?qū)Ψ經(jīng)]有的文件用藍(lán)色顯示區(qū)別出來(lái);步驟二,當(dāng)選定了要比較的兩文件后,按塊將文件依次讀入緩 沖區(qū)中,并依次才是出組織和非組織,將他們分別存于緩沖區(qū) BUF—BUNCH—A、 BUF—BUNCH—B中。緩沖區(qū)由串組成,每個(gè)串 以十六個(gè)字節(jié)的為串頭,以'\0,字符為串尾。串頭結(jié)構(gòu)如下struct bunch—head {unsigned int: offset; /*本串在文4牛中偏移量*/ unsigned int *edit—addr;嚴(yán)本串的編輯結(jié)果i爰沖區(qū);也土止*/ unsigned int *insert—addr;/承本串后插入串的纟爰沖區(qū);也址*/ unsigned short int len;/承長(zhǎng)度,如果是組織指組織的大小*/ unsigned char bunch—type;/*串類(lèi)型*/unsigned char compare—result;/*比專(zhuān)交結(jié)果0才目同,1不同, 2對(duì)方?jīng)]有,最高位為1表示將該串刪除*/};串類(lèi)型有如下值弁include語(yǔ)句為1;全局變量為2;函數(shù)聲明 為3; 單4于注釋為4;單4于宏為5;其他非組織為6;結(jié)構(gòu)或類(lèi)為 20;函數(shù)為21;多行宏為22;多行注釋為23等。對(duì)于非組織,將整個(gè)非組織體都存到一個(gè)串中,對(duì)于組織,只 將組織的名稱(chēng)存入一個(gè)串中,比較時(shí),組織需要從文件中讀取內(nèi)容 到纟爰沖區(qū)4妄塊比4交,比專(zhuān)交結(jié)果存入串頭的compare_result中,然后 才艮才居compare—result和bunch—type分不同的顏色一奪lt沖區(qū)內(nèi)容顯示 到界面上;步驟三,建立兩個(gè)工作緩沖區(qū)WORK—BUF—A, WORK—BUF_B 分別用于存放兩文件的當(dāng)前編輯內(nèi)容。等待用戶(hù)4喿作,4妻到命令后, 清除WORK—BUF 。如果是插入命令,將插入結(jié)果放入WORK—BUF 中,并且同步顯示在界面上,當(dāng)用戶(hù)離開(kāi)這個(gè)才乘作時(shí),建立一個(gè)》爰 存,卄夸該i爰存的i也i止寫(xiě)入bunch_head的insert—addr中,并且在頭四如果是更改命令,從bunch_head 中判斷該從那里取(edit—addr為空且為非組織時(shí)則/人BUF—BUNCH 中,為空且為組織時(shí)offset和len 乂人文4牛中取,不為空則乂人edit—addr 指向的地址取)內(nèi)容,取得后將拷貝到WORK—BUF中后,如果是 組織就將組織的按行比較結(jié)果顯示在界面上,等待編輯,并且同步 更改顯示內(nèi)容,當(dāng)用戶(hù)離開(kāi)這個(gè)操作時(shí),建立一個(gè)緩存,將該緩存 的》也址寫(xiě)入bunch_head的edit_addr中,并且在頭四個(gè)字節(jié)中存入 bunch—head地址,如果原來(lái)有緩存,需要將其釋放掉;如果是刪除 命令,在bunch—head中訂夸compare—result的最高為置1, 并耳又消在 界面上的顯示。圖4顯示了該步驟的邏輯流程;步 一驟四,存文件時(shí),首先創(chuàng)建 一 個(gè)空文件,4姿順序讀 BUF—BUNCH中的串,4艮據(jù)bunch—head將文件內(nèi)容一 串串寫(xiě)入新 文件。具體方法為首先判斷edit—addr和insert—addr是否為空,不 為空,則先將他們指定的內(nèi)容寫(xiě)入新文件,為空且為非組織,就將 串中的內(nèi)容寫(xiě)入新文件,為空且為組織就從offset處讀取len的長(zhǎng)度可。通過(guò)該實(shí)施例可以看到,在進(jìn)行源文件比4交時(shí),可以將組織差 異明白的顯示在界面上,提高了程序員在比較合并代碼時(shí)的工作效過(guò)的內(nèi)容到內(nèi)存中,從而節(jié)約了系統(tǒng)資源,使系統(tǒng)能夠同時(shí)打開(kāi)更 多的文件,方便比較合并代碼時(shí)清楚改動(dòng)了那些文件。以上所述僅為本發(fā)明的優(yōu)選實(shí)施例而已,并不用于限制本發(fā)明, 對(duì)于本領(lǐng)域的技術(shù)人員來(lái)說(shuō),本發(fā)明可以有各種更改和變化。凡在 本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等, 均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1. 一種源文件的比較裝置,其特征在于,包括源文件組織提取模塊,用于分別從待比較的第一源文件和第二源文件中提取組織,并將提取的所述組織的名稱(chēng)及其描述信息分別存儲(chǔ)到第一緩沖區(qū)和第二緩沖區(qū)中,以及將所述第一源文件和所述第二源文件中的非組織分別存儲(chǔ)到所述第一緩沖區(qū)和所述第二緩沖區(qū)中;組織比較模塊,用于根據(jù)存儲(chǔ)在所述第一緩沖區(qū)和所述第二緩沖區(qū)中的所述組織的名稱(chēng)及其描述信息將待比較的所述組織分別讀取到所述第一緩沖區(qū)和所述第二緩沖區(qū)中,并以組織為單位對(duì)待比較的所述組織進(jìn)行比較,以及將比較結(jié)果分別存儲(chǔ)到所述第一緩沖區(qū)和所述第二緩沖區(qū)中;以及行比較模塊,用于以行為單位對(duì)所述第一緩沖區(qū)和所述第二緩沖區(qū)中的所述非組織進(jìn)行比較,以及在所述組織比較結(jié)果表明被比較的所述組織不同時(shí),對(duì)被比較的所述組織進(jìn)行展開(kāi)并以行為單位對(duì)展開(kāi)的所述組織的內(nèi)容進(jìn)行比較,并將比較結(jié)果存儲(chǔ)到所述第一緩沖區(qū)和所述第二緩沖區(qū)中。
2. 根據(jù)權(quán)利要求1所述的裝置,其特征在于,還包括顯示模塊,用于顯示組織比較結(jié)果和行比較結(jié)果;緩沖區(qū)管理模塊,用于管理所述第 一緩沖區(qū)和所述第二緩沖區(qū),并為所述源文件組織揭:耳又模塊、所述組織比專(zhuān)交模塊、所 述行比較模塊、以及所述顯示模塊提供接口;文件保存模塊,用于保存修改的源文件;以及修改及合并才莫塊,用于對(duì)比較后的所述第一源文件和所述第二源文件進(jìn)4于<奮改或合并。
3. 4艮據(jù)權(quán)利要求2所述的裝置,其特征在于,所述源文件組織才是 取模塊包括^是取單元,用于分別從待比較的第一源文件和第二源文4牛 中揭_耳又組織;第一存儲(chǔ)單元,用于將所述提取單元^R取的組織存儲(chǔ)到所 述第一緩沖區(qū)和所述第二緩沖區(qū)中,以及將所述第一源文件和 所述第二源文件中的非組織分別存儲(chǔ)到所述第 一 緩沖區(qū)和所 述第二緩沖區(qū)中。
4. 根據(jù)權(quán)利要求2所述的裝置,其特征在于,所述組織比較模塊 包括讀取單元,用于根據(jù)存儲(chǔ)在所述第一緩沖區(qū)和所述第二緩 沖區(qū)中的所述組織的名稱(chēng)和所述描述信息將待比較的所述組 織分別讀取到所述第一緩沖區(qū)和所述第二緩沖區(qū)中;比壽交單元,用于以組織為單位對(duì)待比4交的所述纟且織進(jìn)4亍比 較;以及第二存儲(chǔ)單元,用于將比較結(jié)果分別存儲(chǔ)到所述第一緩沖 區(qū)和所述第二緩沖區(qū)中。
5. 根據(jù)權(quán)利要求2所述的裝置,其特征在于,所述行比較模塊包 括非組織比較單元,用于以行為單位對(duì)所述第 一緩沖區(qū)和所 述第二緩沖區(qū)中的所述非組織進(jìn)行比庫(kù)交;組織展開(kāi)單元,用于在所述組織比較結(jié)果表明被比較的所 述組織不同時(shí),對(duì)一皮比4交的所述組織進(jìn)4亍展開(kāi);行比較單元,用于以行為單位對(duì)展開(kāi)的所述組織的內(nèi)容進(jìn)4亍比纟交;以及第三存儲(chǔ)單元,用于將比較結(jié)果存儲(chǔ)到所述第一緩沖區(qū)和 所述第二緩沖區(qū)中。根據(jù)權(quán)利要求5所述的裝置,其特征在于,所述第三存儲(chǔ)單元 還用于在被比較的所述第一源文件和所述第二源文件之一具 有另 一個(gè)源文件沒(méi)有的內(nèi)容,或所述第一源文件和所述第二源 文件之一的內(nèi)容與另 一個(gè)源文件的內(nèi)容不同時(shí),分別對(duì)存在差 異的內(nèi)容估文以標(biāo)記并將其分別存儲(chǔ)到其所在的所述第一^爰沖 區(qū)和所述第二緩沖區(qū)中。
6 一種源文件比4交方法,其特4正在于,包4舌以下步艱《建立第 一 緩沖區(qū)和第二緩沖區(qū),將所述第 一 源文件的組織 的名稱(chēng)及其描述信息以及所述第 一 源文件的非組織存入所述 第一緩沖區(qū),以及將所述第二源文件的組織的名稱(chēng)及其描述信 息以及所述第二源文件的非組織存入所述第二緩沖區(qū);
7 根據(jù)存儲(chǔ)在所述第一緩沖區(qū)和所述第二緩沖區(qū)中的所述 組織的名稱(chēng)及其描述信息將待比較的所述組織分別讀取到所 迷第一緩沖區(qū)和所述第二緩沖區(qū)中,并以組織為單位對(duì)4寺比4交 的所述組織進(jìn)行比較,以及在組織比較結(jié)果表明被比較的組織 不同時(shí),以4亍為單位對(duì)^皮比4交的所述組織的內(nèi)容進(jìn)4亍比4交,并 將比較結(jié)果分別存儲(chǔ)到所述第 一援沖區(qū)和所述第二緩沖區(qū)中; 以及以行為單位對(duì)所述第 一緩沖區(qū)和所述第二緩沖區(qū)中的所 述非組織進(jìn)行比較,并將比較結(jié)果分別存儲(chǔ)到所述第一緩沖區(qū) 和所述第二緩沖區(qū)中。
8. 根據(jù)權(quán)利要求7所述的方法,其特征在于,所述將比較結(jié)果分 別存儲(chǔ)到所述第 一緩沖區(qū)和所述第二緩沖區(qū)中的步驟還包4舌 以下步艱《在被比壽交的所述第一源文件和所述第二源文件之一具有 另 一個(gè)源文件沒(méi)有的內(nèi)容,或所述第一源文件和所述第二源文 件之一的內(nèi)容與另 一個(gè)源文件的內(nèi)容不同時(shí),分別對(duì)存在差異 的內(nèi)容做以標(biāo)記并將其分別存儲(chǔ)到其所在的所述第一緩沖區(qū) 和所述第二緩沖區(qū)中。
9. 根據(jù)權(quán)利要求8所述的方法,其特征在于,還包括以下步-驟對(duì)比較后的所述第 一源文件和/或所述第二源文件進(jìn)行{奮 改或合并;以及顯示所述比4交結(jié)果。
10. 根據(jù)權(quán)利要求9所述的方法,其特征在于,還包括以下步驟當(dāng)被比較的兩個(gè)組織相同時(shí),將所述組織的內(nèi)容直接^^亍 進(jìn)行顯示。
11. 根據(jù)權(quán)利要求IO所述的方法,其特征在于,還包括以下步-驟當(dāng)保存比較后的所述第 一 源文件和/或所述第二源文件 時(shí),以其他文件名備4分比較前的所述第一源文件和/或所述第 二源文件,并分別以比4交前的所述第一源文件和/或所述第二 源文件的文件名保存比較后的所述第 一 源文件和/或所述第二 源文件。
12. 根據(jù)權(quán)利要求11所述的方法,其特征在于,還包括以下步驟當(dāng)回退時(shí),將備4分的所述第 一 源文件和/或所述第二源文 件的文〗牛名改回為其原文4牛名。
13. 根據(jù)權(quán)利要求7至12中的任一項(xiàng)所述的方法,其特征在于, 所述組織的描述信息包括所述組織在所述源文件中的位置。
全文摘要
本發(fā)明公開(kāi)了源文件比較裝置和方法,該方法包括將第一源文件的組織的名稱(chēng)及其描述信息以及第一源文件的非組織存入第一緩沖區(qū),將第二源文件的組織的名稱(chēng)及其描述信息以及第二源文件的非組織存入第二緩沖區(qū);根據(jù)存儲(chǔ)在第一緩沖區(qū)和第二緩沖區(qū)中的組織的名稱(chēng)和描述信息將待比較的組織分別讀取到第一緩沖區(qū)和第二緩沖區(qū)中,并以組織為單位對(duì)待比較的組織進(jìn)行比較,在組織比較結(jié)果表明被比較的組織不同時(shí),以行為單位對(duì)被比較的組織的內(nèi)容進(jìn)行比較,并將比較結(jié)果分別存儲(chǔ)到第一緩沖區(qū)和第二緩沖區(qū)中;以行為單位對(duì)第一緩沖區(qū)和第二緩沖區(qū)中的非組織進(jìn)行比較,并將比較結(jié)果分別存儲(chǔ)到第一緩沖區(qū)和第二緩沖區(qū)中。本發(fā)明節(jié)約了系統(tǒng)資源。
文檔編號(hào)G06F9/44GK101533346SQ200810085720
公開(kāi)日2009年9月16日 申請(qǐng)日期2008年3月13日 優(yōu)先權(quán)日2008年3月13日
發(fā)明者賴(lài)周建 申請(qǐng)人:中興通訊股份有限公司