自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

在VSS中監(jiān)視你的軟件配置和管理數(shù)據(jù)庫

運維 數(shù)據(jù)庫運維
軟件配置管理,也叫SCM,是一個軟件組織質(zhì)量改進(jìn)碰到的第一個瓶頸,本文將為大家提供一些建議來突破這一瓶頸。

軟件配置管理,也叫SCM,是一個軟件組織質(zhì)量改進(jìn)碰到的第一個瓶頸,因為SCM的核心是進(jìn)度控制和風(fēng)險管理,而這兩項是所有迫切需要進(jìn)行質(zhì)量改進(jìn)的軟件組織的最大弱點。

SCM的殘酷現(xiàn)實

但是在改進(jìn)過程中,我們會碰到太多的阻力,其中一個重要的阻力是配置管理流程的執(zhí)行問題。開發(fā)人員認(rèn)為配置管理約束了他們的自由的創(chuàng)作,配置管理員也不知道如何進(jìn)行配置管理活動。這些情況在中小型軟件企業(yè)中普遍存在。

管理層不能狠下決心結(jié)合配置管理來做好進(jìn)度和風(fēng)險的控制,配置管理的流程和制度名存實亡,配置管理員在這樣的環(huán)境下,可能很難想象自己除了寫寫無聊的配置管理計劃和報告之外,究竟要做些什么工作。

另一方面,由于配置管理流程沒有真正建立起來,測試人員也在發(fā)牢騷,因為他們永遠(yuǎn)也不知道開發(fā)人員在什么時候又改動了一行代碼,結(jié)果導(dǎo)致他們測試的遺漏,或者是開發(fā)人員一時興起,把大部分控件的名稱改成更好聽的名字,結(jié)果導(dǎo)致測試人員的自動化腳本需要重新錄制。

VSS是大部分中小軟件企業(yè)都在使用的配置管理工具。把它稱為配置管理工具實在有點勉強,因為缺乏構(gòu)建管理、流程管理等功能,充其量也不過是個源代碼控制工具。但是就是這樣一個小工具,卻是我們大部分人用在配置管理活動中的核心工具。

在這樣“殘酷”的環(huán)境中,真的就只能互相埋怨,被迫接受現(xiàn)實了嗎?不,基于VSS,我們還是可以主動的獲取很多信息來真正幫助我們。

VSS的編程接口

VSS提供了2種類型的編程接口,命令行,自動化接口。VSS的SS.exe通過命令行調(diào)用,支持大部分的VSS界面操作的功能。例如通過Checkin 和Checkout命令來簽入、簽出文件。

VSS還提供了一個自動化編程接口IVSS,IVSS是一個基于COM的自動化接口集合,通過Microsoft.VisualStudio.SourceSafe.Interop命名空間暴露給用戶使用。它提供了操作VSS數(shù)據(jù)庫的接口。例如,通過IVSSDatabase接口訪問和登錄VSS數(shù)據(jù)庫。

每日配置管理簡報

既然,VSS提供了方便的編程接口,那么我們能否利用它來幫助我們進(jìn)行配置管理活動呢?答案是肯定的。其中一個簡單的活動是配置管理記錄的自動生成。

我們可以在每天晚上下班后運行一個小程序,自動登錄到VSS,獲取當(dāng)天開發(fā)人員對VSS做的任何改動。并記錄到文件中,作為配置管理記錄,并且發(fā)送到項目組各成員的郵箱中,這樣測試人員也可以在每天早上上班的時候知道昨天開發(fā)人員進(jìn)行了哪些更改,是否需要取版本進(jìn)行回歸測試,回歸測試的策略也可以方便地根據(jù)配置管理記錄來進(jìn)行設(shè)計。

Surveillant

我把這樣一個小程序叫做Surveillant,也就是監(jiān)視者的意思,當(dāng)然還有監(jiān)督者、密探的意思。我想配置管理員和測試人員會喜歡這樣一個名字的。但是我并沒有其它的企圖,只是通過這樣一個小程序幫助有需要的人方便地、自動化地獲取需要的信息。

用C#來寫這樣一個小程序,我們可以有兩個選擇,一種是調(diào)用命令行的方式,一種是使用VSS的自動化編程接口。

命令行的方式比較簡單,使用SS的History命令即可,例如:

History $/vss_test -R -Yusername,password –Vd2007-10-18;23:59:59~2007-10-18;00:00:00 -O@C:\report.txt;
在C#的代碼里只要把其中的項目路徑、用戶帳號、日期等替換掉,再通過啟動一個命令行進(jìn)程來執(zhí)行它即可。使用這種命令行方式的前提是把SSDIR環(huán)境變量設(shè)置好了,也就是說把要連接的VSS數(shù)據(jù)庫的srcsafe.ini文件所在的路徑設(shè)置成環(huán)境變量了。

如果是用VSS的自動化編程接口,首先要加入對Microsoft.VisualStudio.SourceSafe.Interop.dll的引用。然后建立一個vss數(shù)據(jù)庫實例的引用,用Open方法登錄:

                VSSDatabase vssDatabase = new VSSDatabase();
                vssDatabase.Open(SSDIR, userName, passWord);

然后通過get_VSSItem方法指定需要獲取變更歷史的源代碼項目路徑,返回一個IVSSItem對象:

IVSSItem vssFolder = vssDatabase.get_VSSItem(projectPath, false);

#p#

利用這個對象來遞歸地訪問項目中的所有源代碼文件。在這里我用一個叫g(shù)etVssHistory的遞歸方法來實現(xiàn)訪問所有項目源代碼文件在指定的日期范圍內(nèi)的版本歷史:

public void getVssHistory(ref StringBuilder result,IVSSItem vssFolder,DateTime from,DateTime to)
        {

            IVSSItems items = vssFolder.get_Items(true);

            foreach (IVSSItem item in items)

            {

                //判斷是文件還是目錄

                if (item.Type != 0)

                {

                    IVSSVersions versions = item.get_Versions(1);

                    foreach (IVSSVersion version in versions)

                    {

//如果是在指定時間范圍內(nèi)的版本,則納入返回結(jié)果

                       if ((version.Date > from) && (version.Date < to))

                        {

                            result.AppendLine(item.Spec + " ( version "

+ version.VersionNumber.ToString() + " ):"

+ version.Date + " , " + version.Action

+ " by " + version.Username + "\n");

                        }

                    }

                }

                else

                {

                   //如果是目錄,還需要遞歸下去

                    getVssHistory(ref result,item, from, to);

                }

            }

        }

 

可以充分利用IVSS的對象模型,獲取更多你需要的信息。例如所有當(dāng)前處于簽出狀態(tài)的文件,某個VSS用戶的權(quán)限,等等。

把小程序納入每日構(gòu)建的執(zhí)行框架中,或者就簡單地利用Windows的任務(wù)計劃每天晚上定時執(zhí)行,獲取當(dāng)天的VSS配置庫的更改信息,或者其它需要的信息,在第二天早上把這份小小的報告放在每個人的郵件中,每個人都能從這些報告中獲得需要的信息。

程序的使用

完整的程序源代碼可以到我的搏客下載 http://www.51testing.com/?141783/action_viewspace_itemid_64835.html

其實這樣一個程序?qū)τ陂_發(fā)人員也是非常有用的,我們經(jīng)常發(fā)現(xiàn)自己的bug修改好了,但是過幾天又被reopen了,原因是改好的程序又被某個魯莽的家伙覆蓋了。如果每天都能知道其他人在昨天做了什么更改,尤其是清楚是否對自己的“敏感地帶”動了手腳的話,很多源代碼控制的問題也就能及早發(fā)現(xiàn)并修正了。

但是更重要的是要把這些記錄作為溝通的信息。作為配置管理員,即使是在不規(guī)范的配置管理流程中,也需要做好配置庫的更改記錄和審計工作,當(dāng)發(fā)現(xiàn)某些文件的更改非常頻繁,或多人頻繁交替更改同一個文件時應(yīng)該主動問個究竟;當(dāng)測試人員發(fā)現(xiàn)昨天存在源代碼的更改時,應(yīng)該主動聯(lián)系更改的開發(fā)人員,具體了解更改的內(nèi)容,更改涉及的范圍是什么,是否需要及時進(jìn)行測試,對自動化測試腳本是否有影響,等等。

流程的改進(jìn)是一個循序漸進(jìn)的過程,如果改進(jìn)比較緩慢,或者停滯不前,不要等待某個人來搭救我們,自己先想想,有什么東西可以做的,不要依賴流程,更不要互相埋怨,畢竟流程是為了幫助我們建立正確的做事方式,減低出錯的機會,而要想做對事情,前提是建立起正確的思維。

【編輯推薦】

  1. 數(shù)據(jù)庫跨平臺遷移方法淺析
  2. C#連接數(shù)據(jù)庫和更新數(shù)據(jù)庫
  3. 細(xì)說如何遷移Analysis Services數(shù)據(jù)庫
責(zé)任編輯:book05 來源: it168
相關(guān)推薦

2013-10-08 09:54:41

數(shù)據(jù)庫安全數(shù)據(jù)庫管理

2023-11-02 10:32:27

GoGORM

2009-03-25 18:11:57

監(jiān)視鏡像數(shù)據(jù)庫

2024-10-12 12:58:45

2023-10-29 17:15:57

2009-06-04 20:48:15

Eclipse中安裝VEclipse中配置V

2023-03-20 16:00:56

數(shù)據(jù)庫管理系統(tǒng)

2009-04-22 09:42:07

SQL Server監(jiān)視鏡像

2023-12-29 22:39:25

Golang應(yīng)用程序數(shù)據(jù)庫

2018-02-11 09:00:00

軟件部署監(jiān)控

2022-02-28 07:37:02

Java配置參數(shù)

2009-07-06 15:57:56

獲取數(shù)據(jù)庫連接JSP

2011-05-12 11:01:07

MySQL數(shù)據(jù)庫緩存

2023-08-01 14:35:00

關(guān)系數(shù)據(jù)庫排列

2022-06-08 17:24:13

數(shù)據(jù)庫管理工具

2022-09-08 10:07:24

云數(shù)據(jù)庫數(shù)據(jù)庫

2024-11-25 06:45:00

數(shù)據(jù)庫OLAPOLTP

2018-01-02 08:47:59

SQLlite數(shù)據(jù)庫附加分離

2013-05-21 14:41:42

數(shù)據(jù)包分析內(nèi)聯(lián)監(jiān)控

2011-11-08 21:54:05

Windows 監(jiān)控
點贊
收藏

51CTO技術(shù)棧公眾號