我正在用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