我正在用Ruby編寫一個程序,它必須在啓動時從SVN下載我的團隊軟件的最新版本。使用Ruby SVN綁定將本地工作區更新爲SVN倉庫'Head'
結帳功能(從Ruby SVN綁定)是我相信我想要使用的,因爲更新不會添加我的機器的本地「主幹」工作區中不存在的任何文件。結帳語句會更新不匹配HEAD的文件,和它會下載完全不存在的文件。實際上,在運行完全遞歸結帳之後,我希望能夠獲得最新的SVN存儲庫的完整副本。
根據這一API,結賬聲明基本上採用以下:
- 一個確切的SVN URL
- 本地根項目目錄
- 修訂(我將使用字符串「HEAD」 )
- 遞歸(整數1或0)
- 一個池對象(我不能確定這是什麼,但我認爲它不會影響我)
這裏是我寫的,是在SVN倉庫的每個文件迭代塊內部:
if status != NORMAL #any file that changed or is 'missing'
ctx.checkout(status.entry.url, ROOTDIR, 'HEAD', 0, nil) #update abnormal file to HEAD
end
作爲一個測試,我刪除一個目錄從我的本地工作區,並試圖將其與該還原命令。它會一直運行,直到它到達其中一個丟失的文件,此時它會產生一個錯誤:
`svn_client_checkout3':subversion/libsvn_fs_fs/tree.c:663:Svn :: Error :: FsNotFound:File not found:版本0,路徑'/trunk/project-gadfly/SocketServer/DiscoveryServer.cpp'(Svn :: Error :: FsNotFound)
我不明白爲什麼會引發這個錯誤,因爲我認爲結帳語句會看到該目錄(即文件)本地不存在,然後創建它。也許我做錯了什麼?
回想我所寫的內容,我認爲所有這些都是一個冗長的方式來提出以下一個簡單問題:如何將最新版本的SVN存儲庫加載到本地硬盤上,並使用SVN Ruby命令?
由於提前, 埃爾伍德·霍普金斯
哦,我的確在一些地方看過那個頁面上的Perl這個詞,但由於某種原因,我從來沒有質疑SVN綁定可能與Ruby不同。這解釋了一切。謝謝。 – 2012-07-23 15:28:23