基于git源代碼沖突的文件合并方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及文件編輯領(lǐng)域,尤其是涉及一種基于git源代碼沖突的文件合并方法及系統(tǒng)。
【背景技術(shù)】
[0002]目前,當(dāng)有多人同時對源代碼項目文件進(jìn)行修改時,經(jīng)常會由于不同的修改方式,以產(chǎn)生不同的新增文件,導(dǎo)致項目文件同一行新增不同內(nèi)容。這回直接導(dǎo)致合并工具無法自動合并修改后的新增文件。
[0003]現(xiàn)有專利(申請?zhí)?201210390805.2)公開了一種網(wǎng)絡(luò)同步方法和裝置,所述方法包括步驟:監(jiān)控客戶端計算機(jī)中的源文件目錄,收集源文件目錄中發(fā)生的變化事件;根據(jù)所述變化事件發(fā)生的時間順序,獲得初始變化事件序列;根據(jù)預(yù)設(shè)規(guī)則,將所述初始變化事件序列中的冗余事件進(jìn)行合并,生成有效變化事件序列;根據(jù)所述有效變化事件序列,向云端存儲服務(wù)器發(fā)送同步請求。該專利基于網(wǎng)絡(luò)對源文件進(jìn)行合并,同時針對時間的先后順序?qū)崿F(xiàn)有序合并,以凸顯時序上的差異。但仍沒有對一個文件中涉及到的同一位置中出現(xiàn)的新增行的合并。
【發(fā)明內(nèi)容】
[0004]本發(fā)明所要解決的技術(shù)問題是:
[0005]為了解決上述技術(shù)問題,本發(fā)明采用的技術(shù)方案為:提供一種基于git源代碼沖突的文件合并方法,包括如下步驟:
[0006]S1:分別獲取對第一文件的修改信息,以生成第二文件及第三文件;
[0007]S2:合并上述三份文件,生成沖突文件;
[0008]S3:參照第一文件,檢測所述沖突文件中的新增行,并刪除合并標(biāo)記;
[0009]S4:對所述沖突文件進(jìn)行編譯檢查,獲得第四文件。
[0010]為了解決上述技術(shù)問題,本發(fā)明提供一種基于git源代碼沖突的文件合并系統(tǒng),包括:
[0011]修改模塊,用于分別獲取對第一文件的修改信息,以生成第二文件及第三文件;
[0012]合并模塊,用于合并上述三份文件,生成沖突文件;
[0013]刪除模塊,用于參照第一文件,檢測所述沖突文件中的新增行,并刪除合并標(biāo)記;
[0014]結(jié)果模塊,用于對所述沖突文件進(jìn)行編譯檢查,獲得第四文件。
[0015]本發(fā)明的有益效果在于:區(qū)別于現(xiàn)有技術(shù),本發(fā)明通過編譯檢查進(jìn)行修改文件的自動合并,可以避免在源代碼項目配置文件中由于新增文件導(dǎo)致的沖突。可操作性強(qiáng)。
【附圖說明】
[0016]圖1為本發(fā)明方法實施例一的流程示意圖;
[0017]圖2為本發(fā)明方法實施例二的流程示意圖;
[0018]圖3為本發(fā)明的具體實施例的參考圖;
[0019]圖4為本發(fā)明系統(tǒng)實施例三的結(jié)構(gòu)框圖;
[0020]圖5為本發(fā)明系統(tǒng)實施例四的結(jié)構(gòu)框圖。
【具體實施方式】
[0021]為詳細(xì)說明本發(fā)明的技術(shù)內(nèi)容、所實現(xiàn)目的及效果,以下結(jié)合實施方式并配合附圖予以說明。
[0022]本發(fā)明最關(guān)鍵的構(gòu)思在于:通過編譯檢查代碼,實現(xiàn)自動合并。
[0023]請參照圖1,本發(fā)明實施例一提供一種基于git源代碼沖突的文件合并方法,包括如下步驟:
[0024]S1:分別獲取對第一文件的修改信息,以生成第二文件及第三文件;
[0025]S2:合并上述三份文件,生成沖突文件;
[0026]S3:參照第一文件,檢測所述沖突文件中的新增行,并刪除合并標(biāo)記;
[0027]S4:對所述沖突文件進(jìn)行編譯檢查,獲得第四文件。
[0028]區(qū)別于現(xiàn)有技術(shù),本發(fā)明通過編譯檢查進(jìn)行修改文件的自動合并,可以避免在源代碼項目配置文件中由于新增文件導(dǎo)致的沖突,且可操作性強(qiáng)。
[0029]如圖2所示,在實施例一的基礎(chǔ)上,本發(fā)明實施例二中步驟S2具體為:
[0030]S21:參照第一文件,分別逐行比較第二文件與第三文件,檢測出新增行;
[0031]S22:使用合并工具將第二文件及第三文件中的新增行合并到第一文件的對應(yīng)位置中,生成沖突文件。
[0032]其中,步驟S3具體為:
[0033]S31:參照第一文件,分別逐行檢測沖突文件中的新增行,以定位合并標(biāo)記;
[0034]S32:刪除沖突文件的合并標(biāo)記。
[0035]其中,步驟S4具體為:
[0036]S41:調(diào)用編譯命令對所述沖突文件進(jìn)行編譯檢查;
[0037]S42:判斷編譯檢查是否通過;
[0038]若是,則執(zhí)行S43:確認(rèn)合并成功,標(biāo)記所述沖突文件為第四文件;
[0039]反之,則執(zhí)行S44:確認(rèn)合并失??;并返回執(zhí)行步驟SI。
[0040]區(qū)別于現(xiàn)有技術(shù),本發(fā)明參照第一文件,在生成的沖突文件中一一比對新增行,在合并的時候,將對應(yīng)的新增行添加到第一文件對應(yīng)的位置。若出現(xiàn)同樣的新增行,兩個文件的新增內(nèi)容不完全相同,則會出現(xiàn)標(biāo)記,如下例子所示。這里,沒有比對周期,只是觸發(fā)合并代碼,自動合并。在這種情況下,有可能出現(xiàn)合并無法進(jìn)行,因此需要定位到標(biāo)記后,將其刪除,最后使用編譯器對代碼進(jìn)行編譯檢查,若檢查通過,則表示合并正確。因此采用這種方式可以避免在源代碼項目配置文件中由于新增文件導(dǎo)致的沖突,實際可操作性強(qiáng)。
[0041]舉個例子,如圖3所示,在一個具體的實施例中,可選擇版本I文件作為原始文件,即第一文件,版本2文件、版本3文件都是對應(yīng)在版本I文件上所做的修改,即第二文件及第三文件。版本2文件及版本3文件都是在版本I的對應(yīng)位置出現(xiàn)新增行,分別是“〈item〉/文件l〈/item>”、“〈item>/文件2〈/item>”在通過合并工具,如例子所示的git merge命令合并成臨時文件3(即沖突文件)。這里,應(yīng)當(dāng)理解的是,合并工具可以是除了 git自帶的git merge命令外,還可以是一些文件的比對工具,例如Araxis Merge等。
[0042]在生成臨時文件3后,由于新增行內(nèi)容不完全相同,因此出現(xiàn)了合并標(biāo)記:“〈〈〈〈〈〈〈HEAD” 和“= = = = = = =”和 “>>>>>>>master”,參照圖 3 所示,版本 2 文件、版本3文件分列與版本I文件的左右側(cè),因此出現(xiàn)的〈〈〈〈〈〈〈及 >>>>>>> 符號標(biāo)記,這些是用于與版本I文件的名稱進(jìn)行區(qū)分定位。其中的HEAD或master是版本2文件及版本3文件的文件名?!?= = = = = = = ”是兩個不同內(nèi)容新增行的分隔符。
[0043]當(dāng)計算機(jī)檢測到上述含有合并標(biāo)記格式的行時,可自動刪除合并標(biāo)記,則最后生成合并的文件,即第四文件。具體地,可使用微軟的編譯工具進(jìn)行編譯檢查,如對最終合并文件MyApp.csproj進(jìn)行編譯檢查。可使用編譯腳本MSBuildMyApp.csproj/t:Clean/P:Configurat1n = Debug ;/p:Platform = x86 ;TargetFrameworkVers1n = v3.50 如果執(zhí)行編譯腳本成功,則表示合并正確,否則表示合并失敗。