[發(fā)明專利]一種基于Git的代碼行生命周期追溯方法及電子裝置有效
| 申請(qǐng)?zhí)枺?/td> | 202110013631.7 | 申請(qǐng)日: | 2021-01-06 |
| 公開(公告)號(hào): | CN112698866B | 公開(公告)日: | 2022-06-17 |
| 發(fā)明(設(shè)計(jì))人: | 朱家鑫;陳偉;吳國全;竇文生;魏峻 | 申請(qǐng)(專利權(quán))人: | 中國科學(xué)院軟件研究所 |
| 主分類號(hào): | G06F8/71 | 分類號(hào): | G06F8/71 |
| 代理公司: | 北京君尚知識(shí)產(chǎn)權(quán)代理有限公司 11200 | 代理人: | 陳艷 |
| 地址: | 100190 *** | 國省代碼: | 北京;11 |
| 權(quán)利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 基于 git 代碼 生命周期 追溯 方法 電子 裝置 | ||
本發(fā)明公開了一種基于Git的代碼行生命周期追溯方法及電子裝置,其提取Git倉庫中的每一個(gè)commit的信息;根據(jù)commit的ID及相應(yīng)父commit的ID,建立commit組成的有向無環(huán)圖,按廣度優(yōu)先順序遍歷該有向無環(huán)圖,依據(jù)commit的代碼變更內(nèi)容,跟蹤提取并記錄代碼文件行的變更歷史信息;對(duì)于一個(gè)commit中的一個(gè)文件的一行待查詢代碼,依據(jù)代碼文件行的變更歷史信息記錄,得到該行待查詢代碼的產(chǎn)生、位移或消亡的commit的信息。本發(fā)明追溯了行粒度的代碼生命周期數(shù)據(jù),包括代碼行的產(chǎn)生點(diǎn)、位移點(diǎn)、消亡點(diǎn);能夠追溯到代碼行在多個(gè)分支上的完整變更歷史;給定任意commit快照中的任意文件的任意行都能直接返回其全部生命周期數(shù)據(jù)。
技術(shù)領(lǐng)域
本發(fā)明涉及軟件代碼變更歷史追溯領(lǐng)域,尤其涉及一種基于Git的代碼行生命周期追溯方法及電子裝置。
背景技術(shù)
版本控制是軟件開發(fā)中的一種重要實(shí)踐方法,軟件項(xiàng)目使用版本控制系統(tǒng)記錄軟件代碼變更的歷史,包括每一次變更的開發(fā)者、時(shí)間、代碼變更的內(nèi)容。
Git是當(dāng)前最流行的版本控制系統(tǒng),Git中使用了commit來記錄每一次的代碼變更,每個(gè)commit有一個(gè)唯一的ID,commit之間有父子關(guān)系,表示commit的邏輯先后順序,這些父子關(guān)系將一個(gè)版本庫中的commit連接成為一張有向無環(huán)圖。
Git中代碼變更的內(nèi)容的格式與Linux系統(tǒng)中diff工具的unified format相同。
Git等版本控制系統(tǒng)在記錄代碼變更時(shí),以commit為基本單元追溯代碼的變更歷史,commit中又包含了變更的代碼文件和文件中變更的行,當(dāng)開發(fā)者或者研究者想要對(duì)代碼行的生命周期,即一行代碼從在代碼庫中出現(xiàn)到消失的歷程開展研究時(shí),無法直接獲取相關(guān)數(shù)據(jù),即無法獲取Git版本庫中代碼行生命周期數(shù)據(jù)。
發(fā)明內(nèi)容
為解決上述問題,本發(fā)明提供一種基于Git的代碼行生命周期追溯方法及電子裝置,通過遍歷Git中的commit并跟蹤提取代碼文件行的變更歷史信息,給出代碼文件中每一行的產(chǎn)生、位移和消亡點(diǎn)。
本發(fā)明的技術(shù)內(nèi)容包括:
一種基于Git的代碼行生命周期追溯方法,其步驟包括:
1)提取Git倉庫中的每一個(gè)commit的信息,其中所述commit的信息包括:commit的ID、相應(yīng)父commit的ID、commit的作者、commit的時(shí)間、commit的描述和commit的代碼變更內(nèi)容;
2)根據(jù)commit的ID及相應(yīng)父commit的ID,建立commit組成的有向無環(huán)圖,按廣度優(yōu)先順序遍歷該有向無環(huán)圖,依據(jù)commit的代碼變更內(nèi)容,跟蹤提取并記錄代碼文件行的變更歷史信息,其中所述代碼文件行的變更歷史信息包括:
a)文件,包含一個(gè)或多個(gè)該文件被創(chuàng)建的commit;
b)文件被創(chuàng)建的commit,包含零個(gè)或多個(gè)行;
c)行,包含一個(gè)或多個(gè)行發(fā)生位移時(shí)的commit;
d)行發(fā)生位移時(shí)的commit,包含上一次位移時(shí)的commit的ID和位移后的行號(hào);
3)對(duì)于一個(gè)commit中的一個(gè)文件的一行待查詢代碼,依據(jù)代碼文件行的變更歷史信息記錄,得到該行待查詢代碼的產(chǎn)生、位移或消亡的commit的信息,其中所述該行待查詢代碼的產(chǎn)生、位移或消亡的commit的信息包括:commit的ID、commit的作者、commit的時(shí)間和commit的描述。
進(jìn)一步地,使用Git命令:git log--pretty=format:%H;%P;%an;%ae;%at;%s;%b,獲取commit的ID及相應(yīng)父commit的ID、commit的作者、commit的時(shí)間和commit的描述。
該專利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專利權(quán)人授權(quán)。該專利全部權(quán)利屬于中國科學(xué)院軟件研究所,未經(jīng)中國科學(xué)院軟件研究所許可,擅自商用是侵權(quán)行為。如果您想購買此專利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/202110013631.7/2.html,轉(zhuǎn)載請(qǐng)聲明來源鉆瓜專利網(wǎng)。
- 一種基于Git隨時(shí)發(fā)布代碼的實(shí)現(xiàn)方法
- 一種基于GIT的下載完成關(guān)機(jī)方法
- 一種基于云管理平臺(tái)的管理方法及系統(tǒng)
- 一種基于git的系統(tǒng)自動(dòng)化持續(xù)構(gòu)建的方法
- 基于git的企業(yè)級(jí)文檔中心實(shí)現(xiàn)方法
- 基于git的代碼管理方法、裝置、設(shè)備和存儲(chǔ)介質(zhì)
- 基于Git的變電站二次回路信息模型的版本管理方法
- 一種用Git原生Clone命令克隆指定Commit的方法
- 用于GaN開關(guān)的時(shí)間可編程失效安全下拉電路
- 導(dǎo)航地圖數(shù)據(jù)管理方法、設(shè)備及存儲(chǔ)介質(zhì)
- 遙控器代碼格式結(jié)構(gòu)及其收發(fā)信方法及裝置
- 在虛擬機(jī)中驗(yàn)證代碼模塊的方法及裝置
- 一種用于代碼的管理方法及裝置
- 虛擬代碼提供系統(tǒng)、生成裝置、驗(yàn)證裝置、提供方法
- 一種自動(dòng)化代碼質(zhì)量檢查方法及系統(tǒng)
- 代碼掃描方法、裝置、計(jì)算設(shè)備及計(jì)算機(jī)存儲(chǔ)介質(zhì)
- 用于更新代碼的方法和裝置
- 前端代碼打包方法、裝置、電子設(shè)備及存儲(chǔ)介質(zhì)
- 一種代碼審查服務(wù)同步方法、裝置及計(jì)算機(jī)設(shè)備
- 一種高效智能源代碼安全管理平臺(tái)
- 擴(kuò)展人工任務(wù)生命周期的方法、組件和系統(tǒng)
- 設(shè)備生命周期的監(jiān)測方法及相關(guān)裝置
- 一種用于為用戶提供知識(shí)信息的方法與設(shè)備
- 一種產(chǎn)品生命周期的識(shí)別方法和裝置
- 從產(chǎn)品生命周期到設(shè)計(jì)和制造的數(shù)據(jù)反饋環(huán)路
- VNF實(shí)例化生命周期分析方法和系統(tǒng)
- 基于區(qū)塊鏈的疫苗全生命周期管理方法及系統(tǒng)
- 商品生命周期管理方法、裝置和計(jì)算機(jī)設(shè)備
- 用于存儲(chǔ)器子系統(tǒng)的介質(zhì)管理記錄器
- 一種生命周期事件處理方法、裝置及電子設(shè)備





