日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

svn判斷通過svnkit,獲取最新的revision以及判

系統(tǒng) 2871 0

新手發(fā)帖,很多方面都是剛?cè)腴T,有錯(cuò)誤的地方請大家見諒,歡迎批評指正

????在java下,已經(jīng)有一個(gè)非常壯大的工具,svnkit,為我們封裝了非常全面的svn操作類。但是,筆者在應(yīng)用時(shí),就碰到兩個(gè)問題,還是略微琢磨了一陣子,才想到解決辦法(我應(yīng)用的是1.x版本的svnkit,不清楚2.x版本的,是否有更直接的方法)

????問題1:如何獲得指定svn路徑的最新revsion

????問題2:判斷某svn路徑下,某個(gè)revsion號(hào)是否存在

????講這兩個(gè)問題前,首先要理清Repository及revsion的概念。svn的核心是Repository(版本庫),很多信息都是基于全部Repository來做記錄的;revision則記錄了每一次的commit操作,每當(dāng)我們做一次commit操作,這個(gè)Repository的revsion就會(huì)增加1。所以revsion有時(shí)候也被稱為svn版本號(hào),因?yàn)橥ㄟ^這個(gè)revsion,可以指向具體某一次svn的變革。好吧,說了那么多,其實(shí)就是想說明圖1的意思,

????假設(shè)你有一個(gè)Repository的svn路徑是root/r,該Repository下有子路徑root/r/r1,那么,如果你用svnkit來獲得root/r/r1的最新revsion,它返回的是root/r的最新revsion,而不是root/r/r1的。你用其他工具,查看的歷史變革記錄,最新revsion明顯是5,但svnkit返回給你的,卻可能是7,就是這個(gè)原因。

????圖1:對于r1目錄,它是屬于上一層的repository的,因此它的以后revision,也是7

???? svn和判斷

????問題1:

????基于圖1,直接獲得r1的revision,不能返回我們想要的值,而應(yīng)該用getCommittedRevision()這個(gè)方法

????代碼節(jié)選

    rSVNURL epositoryBaseUrl = SVNURL.parseURIEncoded(svnPath);

SVNInfo info = client.doInfo(repositoryBaseUrl, SVNRevision.HEAD, SVNRevision.HEAD);

result = info.getCommittedRevision().getNumber();
  

????問題2:

????基于圖1,用svnkit,指定svn路徑為root/r/r1,revision為7,還是會(huì)有返回值,不會(huì)報(bào)錯(cuò)。這時(shí)候應(yīng)該用另外一種思緒,如果7這個(gè)revision,是屬于另外一個(gè)目錄的變革,那么root/r/r1路徑下,revsion為7的日記,就會(huì)是空的,這種情況,便可認(rèn)為,7這個(gè)revisin,在root/r/r1下,是不存在的。

????代碼節(jié)選

????類SimpleISVNLogEntryHandler,將svn log寫入list這個(gè)變量

????每日一道理
悲觀的人,先被自己打敗,然后才被生活打敗;樂觀的人,先戰(zhàn)勝自己,然后才戰(zhàn)勝生活。悲觀的人,所受的痛苦有限,前途也有限;樂觀的人,所受的磨難無量,前途也無量。在悲觀的人眼里,原來可能的事也能變成不可能;在樂觀的人眼里,原來不可能的事也能變成可能。悲觀只能產(chǎn)生平庸,樂觀才能造就卓絕。從卓絕的人那里,我們不難發(fā)現(xiàn)樂觀的精神;從平庸的人那里,我們很容易找到陰郁的影子。
    public class SimpleISVNLogEntryHandler implements ISVNLogEntryHandler

{

     public List<SVNLogEntry> list = new ArrayList<SVNLogEntry>();





     @Override

     public void handleLogEntry(SVNLogEntry logEntry) throws SVNException

     {

          System.out.println(logEntry.getDate());

          list.add(logEntry);

     }



}
  

????判斷變革日記是否為空

    try

{

     SimpleISVNLogEntryHandler handler = new SimpleISVNLogEntryHandler();

     SVNRevision r = SVNRevision.create(revisionNum);

     repositoryBaseUrl = SVNURL.parseURIEncoded(svnPath);

     logClient.doLog(repositoryBaseUrl, new String[] {}, r, r, r, false, false, true, 1, new String[] {}, handler);

     if (null != handler.list && handler.list.size() > 0)

     {

          result = Constant.REVISION_EXIST;

     }

     else

     {

          result = Constant.REVISION_NOT_EXIST;

     }





}

catch (SVNException e)

{

     logger.error("SvnManageOperation.isFileExit error", e.getMessage());

     logger.error("error code:" + e.getErrorMessage().getErrorCode().getCode());

     if (e.getErrorMessage().getErrorCode().getCode() == 160006)

     {

          result = Constant.REVISION_NOT_EXIST;

     }

}
  

????說明1:revisionNum下,沒有l(wèi)og,那么handler.list.size() == 0

????說明2:如果該revisionNum在全部Repository都不存在,是會(huì)拋SVNException的,對應(yīng)的錯(cuò)誤碼160006表示revision不存在

文章結(jié)束給大家分享下程序員的一些笑話語錄: 剎車失靈
有一個(gè)物理學(xué)家,工程師和一個(gè)程序員駕駛著一輛汽車行駛在阿爾卑斯山脈 上,在下山的時(shí)候,忽然,汽車的剎車失靈了,汽車無法控制地向下沖去, 眼看前面就是一個(gè)懸崖峭壁,但是很幸運(yùn)的是在這個(gè)懸崖的前面有一些小樹 讓他們的汽車停了下來, 而沒有掉下山去。 三個(gè)驚魂未定地從車?yán)锱懒顺鰜怼?
物理學(xué)家說, “我覺得我們應(yīng)該建立一個(gè)模型來模擬在下山過程中剎車片在高 溫情況下失靈的情形”。
工程師說, “我在車的后備廂來有個(gè)扳手, 要不我們把車拆開看看到底是什么 原因”。
程序員說,“為什么我們不找個(gè)相同的車再來一次以重現(xiàn)這個(gè)問題呢?”

--------------------------------- 原創(chuàng)文章 By
svn和判斷
---------------------------------

svn判斷通過svnkit,獲取最新的revision以及判斷某個(gè)revsion是否存在


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會(huì)非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 红桥区| 苏尼特右旗| 田林县| 秦安县| 永定县| 夏津县| 河东区| 长兴县| 漳浦县| 乌兰察布市| 永定县| 弥渡县| 昌都县| 新兴县| 彭水| 浦北县| 阿城市| 肃北| 观塘区| 桂东县| 融水| 长垣县| 洛扎县| 连云港市| 五原县| 龙南县| 平罗县| 吉安县| 嘉祥县| 得荣县| 武功县| 青龙| 荥阳市| 南通市| 宜城市| 芮城县| 阿尔山市| 米林县| 广宁县| 清镇市| 濮阳县|