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

svn判斷通過(guò)svnkit,獲取最新的revision以及判

系統(tǒng) 3099 0

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

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

????問(wèn)題1:如何獲得指定svn路徑的最新revsion

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

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

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

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

???? svn和判斷

????問(wèn)題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();
  

????問(wèn)題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寫(xiě)入list這個(gè)變量

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

     }

}
  

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

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

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

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

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


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

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

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

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

【本文對(duì)您有幫助就好】

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

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 夹江县| 东宁县| 富蕴县| 鲁山县| 天镇县| 永清县| 怀来县| 漯河市| 晋宁县| 高青县| 景宁| 饶平县| 夏河县| 澎湖县| 金门县| 丘北县| 吴川市| 呼和浩特市| 格尔木市| 永兴县| 通江县| 梨树县| 承德县| 土默特右旗| 时尚| 井冈山市| 仪征市| 慈利县| 海伦市| 丹阳市| 临漳县| 彩票| 保德县| 台山市| 新源县| 凤台县| 江津市| 澄江县| 南安市| 泾阳县| 中方县|