2011-08-03 40 views
2

基本上这就是我想要做的:我想签出特定版本的代码,但如果该版本不可用,请检出最新版本。不知怎的,我无法如何做到这一点。几种方法我试过:svn在单一结帐中签出不同的版本?

  1. svn co <url> -r HEAD:75
    不工作;似乎不能使用版本范围结帐

  2. svn co <url>
    svn co <url> -r 75
    这划出不具有一个版本的75

基本上我希望它检出一个特定版本,原始文件要么获得该版本不存在的文件的最新版本,要么至少不删除现有的版本。

还有其他方法吗?

欣赏所有的帮助!

+0

我不认为这是可能的。你可以做类似的事情是我仍然从CVS错过的一个特性。 –

回答

0

一个SVN的优势在于,它被认为是原子那么它要么所有发生或它没有一个发生。没有任何中间步骤“事情”的工作。

更重要的是,由于SVN的版本号基于整个存储库而不是文件级别,因此如果您需要每个文件的最新版本,您只需抓住头部即可。根据定义,这将是最新的一切。

如果您担心某些文件/功能是半完整的并可能会破坏您的部署,那么分支将让您的生活更轻松。只需创建一个新分支并在那里进行实验性开发,直到您准备好合并为止。它不像Git那么容易,但99%的时间真的不算太差。

+0

这是我的问题:我的项目是由许多子项目和一个共同的代码目录组成的。子项目依赖于通用代码。但签入是针对通用代码和子项目独立处理的。现在我想要的是,对于子项目proj1,可以使用版本75进行检查,可以从通用代码中获得75 fot proj1和HEAD,因为通用代码中没有版本75。基本上,如果SVN发现一个文件版本75,检查出来,否则检查头。 – Rahul

0

如果只是获取文件的副本而不是在SVN工作目录中是可以接受的,那么您可以使用svn export命令将两个不同版本在彼此顶部提取到相同的位置目录:

svn export -r HEAD 
svn export -r 75 

r75副本应该覆盖HEAD修订版中对于已存在文件的任何内容。免责声明:我没有测试这个。

+0

这解决了一个组的问题,但并非全部。我仍然想找出一个解决方案(如果可能的话)以某种方式让这个工作在SVN工作目录。 – Rahul