2012-07-19 37 views
2

我使用SVN ANT版本1.3.1,ANT 1.7.1,Java 1.6u和SVN回購是1.6(我認爲 - )SVN-ANT複製任務不起作用,CLI的svn副本,相同的參數

我有兩個SVN目標(我想知道在「複製」任務嘗試執行之前「提交」任務是否未完成,這就是爲什麼我會引用它作爲部分我的build.xml。)

我試圖將一個版本標記爲生產版本(看起來像一個相當普通的任務,依賴於SVN-ANT的ANT構建,對不對?)我可以在命令上執行以下操作line:

svn copy http://svnserver/svn/prod/Production/App \ 
    http://svnserver/svn/prod/Archive/App/1.5 \ 
    -m "Tagging Release of App as Version 1.5" 

,我得到的,當然

Committed revision 27. 

然而,當我嘗試:

<target name="check-in" > 
    <svn refid="svn.settings"> 
     <commit message="${application.name} - Committed to Prod" > 
      <fileset dir="${src.dir}"> 
       <include name= "**/*"/> 
      </fileset> 
     </commit> 
    </svn> 
</target> 

<target name="tag-version-number" depends="check-in" > 
    <svn refid="svn.settings"> 
     <copy 
      srcUrl="http://svnserver/svn/prod/Production/App/" 
      destUrl="http://svnserver/svn/prod/Archive/App/1.5/" 
      message="Tagging Release of App as Version 1.5"> 
     </copy> 
    </svn> 
</target> 

我找回奇怪的錯誤:

check-in: 

tag-version-number: 
     [svn] svn: File not found: revision 28, path '/Production/App/Production/App' 
     [svn] svn: '/svn/prod/!svn/bc/28/Production/summons' path not found: 404 Not Found (http://svnserver) 
     [svn] svn: File not found: revision 28, path '/Production/App/Production/App' 
     [svn] svn: '/svn/prod/!svn/bc/28/Production/summons' path not found: 404 Not Found (http:/svnserver) 
     [svn] <Copy> failed. 

BUILD FAILED 
C:\build\promote_prod.xml:210: Can't copy 

他們讓我覺得也許在嘗試訪問SVN回購路徑之前,提交併未完成?如果是這樣,我能做些什麼來確保它等待提交通過?在我添加這個新的「標籤版本號」目標之前,所有事情都做得很好(並且,對於記錄來說,這是構建腳本中目標「簽入」目標的唯一運行時間。)

問題別的?

+0

我不認爲提交是問題。一旦提交完成,它就會在服務器上運行。你使用哪個版本的svnant? – oers 2012-07-19 09:55:46

+0

@oers我正在使用SVNANT 1.3.1 - 關於添加到問題頂部的所有更多詳細信息,謝謝 – urbushey 2012-07-19 14:35:59

+1

與SVN服務器1.7.3和svnant 1.3.1有相同的問題。我得到的錯誤消息是相同的 - srcURL路徑的一部分在錯誤消息中重複。不幸的是,我沒有解決方案。 – mwhidden 2012-10-24 15:52:30

回答

4

您使用的是svn-kit嗎?如果是這樣,我今天遇到了同樣的問題,同時試圖將一些經過驗證的真正的構建腳本遷移到工作中的Jenkins新實例。在準備正式版本時,我們使用版本號進行標記,然後根據標籤獲取代碼來構建它。就像OP一樣,我覺得這一定是一個非常標準的用例。

順便說一句,運行ant與-v標誌和svnant將報告是否它的使用svnkit,javahl或回落到命令行:

[svn] Using svnkit 
    [svn] <Export> started ... 
    [svn] export -r HEAD https://foo.com/svn/project 

是最好的,我可以告訴大家,svnant 1.3。 1(以及它所依賴的svnkit版本)在SVN服務器1.7.x中無法100%運行。它工作正常,我們對某些命令,包括出口,但是,當它來到時使用SVN複製標記,我們得到上述同樣的錯誤:

22:06:48  [svn] copy -rHEAD https://foo.com/svn/project/trunk https://foo.com/svn/project/tags/tag3 
22:06:48  [svn] svn: File not found: revision 64, path '/project/trunk/project/trunk' 
22:06:48  [svn] svn: '/svn/project/!svn/bc/64/project/trunk' path not found: 404 Not Found (https://foo.com) 

值得慶幸的是,救世主就是在那裏被命名的光敏劑。超過要打開瀏覽器,頭一個新的標籤:從下載部分

https://github.com/opticyclic/svntask

抓住svntask-1.7-1.0.9.zip,然後按照安裝說明,主要是早晚的事情宣佈的taskdef的使用適當的類路徑。該任務的使用與底格里斯河的略有不同。特別是

<copy src="url" dst="url2" commitMessage="tmbg"/> 

,而不是

<copy srcUrl="url" destUrl="url2" message="flood"/>, 

,並不再支持新望svnsettings,所以你必須直接在標籤中指定的用戶名和密碼。

完成此操作後,svn copy應該可以正常工作,從而可以應用來自ant的標記。注:確保在執行期間,opticylic的svnant任務沒有看到任何舊的svnant庫。我以前在我的ant/lib中有svn相關的jar,所以爲了使用opticyclic的svnant必須刪除它們。

最後,我意識到svn export不幸被opticylic的svnant支持,但我們需要它爲我正在開發的版本。因此,我被迫讓自己的構建可以使用所有的svnant。 (重要!),只要你同時指定其類路徑的獨立,給他們一個新的名字,因爲它們都使用SVN作爲默認的標記名),你應該能夠做同樣的:

<path id="svnant.classpath"> 
     <fileset dir="lib/svnant"> 
      <include name="*.jar"/> 
     </fileset> 
</path> 
<typedef resource="org/tigris/subversion/svnant/svnantlib.xml" classpathref="svnant.classpath"/> 

<path id="svnant2.classpath"> 
      <fileset dir="lib/svn2"> 
       <include name="*.jar"/> 
      </fileset> 
</path> 
<taskdef name="svn2" classname="com.googlecode.svntask.SvnTask" classpathref="svnant2.classpath"/> 

在這裏,我讓tigris的svnant在給光環的標籤svn2時聲明默認的'svn'標籤名稱。以這種方式,我們可以在螞蟻腳本中調用。只要記住要注意,你正在使用在任何特定時刻使用的svnant所需的正確語法。

也許opticyclic會增加導出到他們的svnant,現在他們有一些新的粉絲。這將允許我們簡化上述操作,並簡單地使用新的svnant。

+0

我無法再訪問原來的項目來檢查這個的真實性,但它看起來很合理。我會給你答案,謝謝! – urbushey 2013-01-16 06:12:35

+0

@ bullfrog-jones你應該在GitHub上創建一個問題。我昨天才在這裏注意到這個帖子! SVN導出現在支持https://github.com/opticyclic/svntask/releases/tag/v1.1.0 – opticyclic 2014-03-25 05:34:50