一種基于svn的配置審計(jì)信息自動(dòng)統(tǒng)計(jì)方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及配置管理技術(shù)領(lǐng)域,尤其涉及一種基于SVN的配置審計(jì)信息自動(dòng)統(tǒng)計(jì)方法。
【背景技術(shù)】
[0002]配置管理是指通過技術(shù)或行政手段對(duì)軟件產(chǎn)品及其開發(fā)過程和生命周期進(jìn)行控制規(guī)范的一系列措施,其目的是記錄軟件產(chǎn)品的演化過程,并確保開發(fā)人員在軟件生命周期中各個(gè)階段都能得到產(chǎn)品的精確配置信息。配置管理中重要的一項(xiàng)內(nèi)容就是跟蹤每個(gè)變更的創(chuàng)造者、時(shí)間和原因,以便迅速定位問題。
[0003]目前大部分軟件產(chǎn)品的配置管理主要通過Subvers1n (簡(jiǎn)稱SVN)來(lái)實(shí)現(xiàn),在每次提交變更時(shí)SVN會(huì)產(chǎn)生一次版本,而變更的記錄則分散放置在各日志文件中。目前基于SVN的配置管理審計(jì)方法主要是利用SVN本身提供的日志導(dǎo)出功能,將日志文件導(dǎo)出到本地后再進(jìn)行二次加工,但是基于SVN本身提供的日志導(dǎo)出功能進(jìn)行配置審計(jì)信息統(tǒng)計(jì)存在以下冋題:
1)必須提供申請(qǐng)用戶及密碼,同時(shí)受用戶權(quán)限的限制。SVN本身提供的日志導(dǎo)出功能是基于申請(qǐng)者的用戶權(quán)限,即申請(qǐng)者僅能訪問及提取出權(quán)限內(nèi)的日志內(nèi)容,將版本、操作者、時(shí)間、消息、文件狀態(tài)等信息采集后,再寫入到單個(gè)日志文件中。如果申請(qǐng)者沒有對(duì)SVN倉(cāng)庫(kù)中所需要訪問目錄的訪問權(quán)限,則無(wú)法導(dǎo)出這些目錄的日志。例如,SVN版本庫(kù)在創(chuàng)建trunk文件夾時(shí),默認(rèn)只對(duì)創(chuàng)建者的用戶分配了讀寫權(quán)限,而其他用戶沒有對(duì)trunk文件夾的讀取權(quán)限,如果使用其他用戶申請(qǐng)讀取SVN日志時(shí),不能獲取完整的SVN日志。而通常配置管理并沒有固定的管理員用戶,因而無(wú)法實(shí)現(xiàn)隨時(shí)獲取全版本的日志;
2)在實(shí)際應(yīng)用中的統(tǒng)計(jì)工作量大、統(tǒng)計(jì)效率低。對(duì)于保密性強(qiáng)的項(xiàng)目由于不允許存在可訪問全局的用戶,因而必須要使用多個(gè)權(quán)限不同的賬號(hào)執(zhí)行多次導(dǎo)出日志以獲取完整的SVN日志;對(duì)于大型軟件(例如數(shù)百萬(wàn)行代碼)和大型團(tuán)隊(duì)(例如數(shù)百名用戶)來(lái)說(shuō),當(dāng)需要審查統(tǒng)計(jì)SVN的配置管理信息,或者需要對(duì)產(chǎn)品某個(gè)時(shí)間段的代碼提交情況進(jìn)行跟蹤時(shí),也只能通過以手動(dòng)方式導(dǎo)出所有SVN的相關(guān)日志信息,然后再進(jìn)行處理,導(dǎo)致需要耗費(fèi)大量的時(shí)間和人力資源;對(duì)于跨度時(shí)間長(zhǎng)的日志,SVN需要大量的時(shí)間進(jìn)行提取和解析;
3)統(tǒng)計(jì)方法固定,每次僅能根據(jù)申請(qǐng)者的需要進(jìn)行一種方式的統(tǒng)計(jì),當(dāng)統(tǒng)計(jì)申請(qǐng)者需要更新統(tǒng)計(jì)條件時(shí),則需要重新導(dǎo)出多種符合條件的日志文件進(jìn)行統(tǒng)計(jì)分析。
【發(fā)明內(nèi)容】
[0004]本發(fā)明要解決的技術(shù)問題就在于:針對(duì)現(xiàn)有技術(shù)存在的技術(shù)問題,本發(fā)明提供一種實(shí)現(xiàn)方法簡(jiǎn)單、應(yīng)用范圍廣、不需要依賴于用戶權(quán)限且統(tǒng)計(jì)效率高、統(tǒng)計(jì)方式靈活的基于SVN的配置審計(jì)信息自動(dòng)統(tǒng)計(jì)方法。
[0005]為解決上述技術(shù)問題,本發(fā)明提出的技術(shù)方案為:
一種基于SVN的配置審計(jì)信息自動(dòng)統(tǒng)計(jì)方法,步驟包括: O文件提取:在指定的統(tǒng)計(jì)時(shí)間段內(nèi)查詢SVN服務(wù)器上版本庫(kù)信息,篩選出當(dāng)前統(tǒng)計(jì)時(shí)間段與上一次統(tǒng)計(jì)時(shí)間段之間所有的變更操作所對(duì)應(yīng)的原始日志文件,并復(fù)制一份篩選得到的原始日志文件;
2)文件解析:分別對(duì)復(fù)制得到的各原始日志文件進(jìn)行解析,從每個(gè)原始日志文件中獲取包括變更操作所對(duì)應(yīng)的操作對(duì)象、操作時(shí)間、文件路徑以及文件操作狀態(tài)的變更操作信息;
3)信息統(tǒng)計(jì):統(tǒng)計(jì)每個(gè)原始日志文件獲取得到的變更操作信息,得到當(dāng)前統(tǒng)計(jì)時(shí)間段內(nèi)的變更操作以及變更操作與操作對(duì)象、操作時(shí)間、文件路徑、文件操作狀態(tài)之間的操作對(duì)應(yīng)關(guān)系并存儲(chǔ)至統(tǒng)計(jì)數(shù)據(jù)庫(kù)中。
[0006]作為本發(fā)明的進(jìn)一步改進(jìn),所述步驟I)的具體步驟為:
1.1)在指定的統(tǒng)計(jì)時(shí)間段內(nèi)啟動(dòng)查詢SVN服務(wù)器上版本庫(kù)信息的程序;
1.2)從用于存放版本庫(kù)信息的版本庫(kù)記錄表中查詢是否存在所要操作的版本庫(kù),如果存在,則獲取版本庫(kù)記錄表中所要操作的版本庫(kù)對(duì)應(yīng)的編號(hào)并發(fā)送至統(tǒng)計(jì)數(shù)據(jù)庫(kù)中,轉(zhuǎn)入執(zhí)行步驟1.3);如果不存在,為所要操作的版本庫(kù)分配對(duì)應(yīng)的編號(hào)并發(fā)送至統(tǒng)計(jì)數(shù)據(jù)庫(kù)中,轉(zhuǎn)入執(zhí)行步驟1.3);
1.3)定位版本庫(kù)內(nèi)存儲(chǔ)原始日志文件的原始日志文件夾,篩選出其中在當(dāng)前統(tǒng)計(jì)時(shí)間段與上一次統(tǒng)計(jì)時(shí)間段之間所有的變更操作所對(duì)應(yīng)的原始日志文件;所述原始日志文件包括記錄有變更操作所對(duì)應(yīng)的操作對(duì)象、操作時(shí)間的第一原始日志文件,以及記錄有變更操作所對(duì)應(yīng)的文件路徑、文件操作狀態(tài)的第二原始日志文件;
1.4)將篩選得到的原始日志文件復(fù)制至指定的臨時(shí)目錄位置下,且當(dāng)所有篩選出的日志文件都復(fù)制完成后添加復(fù)制完成標(biāo)識(shí)。
[0007]作為本發(fā)明的進(jìn)一步改進(jìn),所述步驟I)中還包括鎖定SVN服務(wù)器以阻止版本庫(kù)接收變更操作的步驟。
[0008]作為本發(fā)明的進(jìn)一步改進(jìn),所述步驟2)的具體步驟為:
2.1)周期檢測(cè)所述臨時(shí)目錄位置下文件,當(dāng)檢測(cè)到復(fù)制完成標(biāo)識(shí)時(shí),轉(zhuǎn)入執(zhí)行步驟2.2);
2.2)將所述臨時(shí)目錄位置下所有的原始日志文件進(jìn)行排序,并根據(jù)排序后的原始日志文件建立一個(gè)文件順序列表;
2.3)根據(jù)建立的所述文件順序列表依次對(duì)各原始日志文件進(jìn)行解析,對(duì)每個(gè)原始日志文件進(jìn)行解析時(shí),獲取各原始日志文件對(duì)應(yīng)的版本號(hào)信息,并從第一原始日志文件中獲取變更操作所對(duì)應(yīng)的操作對(duì)象、操作時(shí)間信息,以及從第二原始日志文件中獲取變更操作所對(duì)應(yīng)的文件路徑、文件操作狀態(tài)信息,將獲取的信息分別發(fā)送至統(tǒng)計(jì)數(shù)據(jù)庫(kù);直至完成所有原始日志文件的解析,生成解析完成標(biāo)識(shí);
2.4)當(dāng)檢測(cè)到解析完成標(biāo)識(shí)時(shí),清除臨時(shí)目錄位置下的所有文件并退出。
[0009]作為本發(fā)明的進(jìn)一步改進(jìn):所述步驟2.3)中采用關(guān)鍵詞搜索的方法獲取第一原始日志文件中變更操作所對(duì)應(yīng)的操作對(duì)象、操作時(shí)間;所述步驟2.3)中采用關(guān)鍵詞搜索的方法獲取第二原始日志文件中變更操作所對(duì)應(yīng)的文件路徑、文件操作狀態(tài)。
[0010]作為本發(fā)明的進(jìn)一步改進(jìn),所述步驟3)的具體步驟為:
3.1)預(yù)先在統(tǒng)計(jì)數(shù)據(jù)庫(kù)中建立變更操作記錄表以及變更路徑記錄表,所述變更操作記錄表用于存放用戶提交的變更操作,所述變更路徑記錄表用于存放變更操作對(duì)應(yīng)的文件路徑;
3.2)統(tǒng)計(jì)數(shù)據(jù)庫(kù)接收所述步驟I)得到的版本庫(kù)編號(hào)并寫入所述版本庫(kù)記錄表中;統(tǒng)計(jì)數(shù)據(jù)庫(kù)接收接收所述步驟2)解析得到的變更操作所對(duì)應(yīng)的操作賬號(hào)、操作時(shí)間,并根據(jù)當(dāng)前版本庫(kù)的編號(hào)寫入所述變更操作表中對(duì)應(yīng)位置;所述統(tǒng)計(jì)數(shù)據(jù)庫(kù)接收解析得到的變更操作所對(duì)應(yīng)的變更操作文件路徑、文件操作狀態(tài),并根據(jù)當(dāng)前版本庫(kù)的編號(hào)寫入變更路徑表中對(duì)應(yīng)位置;
3.2)根據(jù)所述變更操作記錄表、變更路徑記錄表以及所述版本庫(kù)記錄表、用于存放SVN版本庫(kù)中的賬號(hào)和用戶對(duì)象之間映射關(guān)系的用戶記錄表,得到當(dāng)前時(shí)間段內(nèi)統(tǒng)計(jì)的各變更操作以及各變更操作與版本庫(kù)、操作對(duì)象、操作時(shí)間、文件路徑、文件操作狀態(tài)的操作對(duì)應(yīng)關(guān)系O
[0011]作為本發(fā)明的進(jìn)一步改進(jìn),所述步驟3)后還包括審計(jì)報(bào)告生成步驟4),具體步驟為:
4.1)當(dāng)接收到終端需要對(duì)SVN服務(wù)器上版本庫(kù)信息進(jìn)行審計(jì)的統(tǒng)計(jì)請(qǐng)求時(shí),連接所述統(tǒng)計(jì)數(shù)據(jù)庫(kù)并獲取統(tǒng)計(jì)數(shù)據(jù)庫(kù)中不同時(shí)間段內(nèi)的變更操作以及所述操作對(duì)應(yīng)關(guān)系;
4.2)根據(jù)獲取得到的變更操作以及操作對(duì)應(yīng)關(guān)系按照所述統(tǒng)計(jì)請(qǐng)求生成版本庫(kù)信息的審計(jì)報(bào)告輸出至終端。
[0012]與現(xiàn)有技術(shù)相比,本發(fā)明的優(yōu)點(diǎn)在于:
1)本發(fā)明通過獲取變更操作對(duì)應(yīng)的原始日志文件進(jìn)行解