Subversion - 签出父目录

时间:2009-08-30 14:24:59

标签: svn version-control tortoisesvn

在我的存储库中,假设我有这个:

Animal
  Dog
     Beagle
     Hound
     ...

让我们说我检查了狗到一个工作目录,我意识到,哎呀,我真的很想结帐动物。

我可以删除我的工作副本,Dog目录和结帐Animal,但是我可以这样做而不删除并再次签出吗?

如果我的Dog的工作副本将Animal作为父文件夹并且我在没有删除Dog的情况下结帐Animal,我会得到类似“subversion无法添加目录版本的同名已存在”的内容。

我也在使用乌龟。感谢。

4 个答案:

答案 0 :(得分:4)

这是不可能的。

最简单的方法是删除您的工作副本并对Animal进行新的结帐。

如果您要对Dog进行任何更改,请将Dog移至临时位置,结帐Animal,然后将Dog复制回Animal目录。

答案 1 :(得分:2)

您正在寻找 svn switch ,它会更新您的工作副本以反映新路径。但是,修改后的文件不会被触及。在TortoiseSVN中,右键单击并从上下文菜单中选择“切换...”。

svn switch更常见的用例是在源自同一点的分支之间切换,以便您可以拥有相同代码的不同视图。但是您可以在存储库中的任意路径之间切换。

答案 2 :(得分:0)

我发现避免从svn服务器下载我磁盘上已有的内容,然后使用--depth empty完成更新或结帐。类似于:svn co --depth empty Animal ; cd Animal ; svn update --depth empty Dog

无论如何,我们的想法是将Dog作为Animal/.svn/entries的目录。

这个“--depth empty”阻止svn下载实际内容,但svn确实创建了子目录(在本例中为Dog),而svn确实为{{1}添加了一个条目} Dog中的子目录。

然后将Dog子目录替换为您已有的副本。

您可以通过在Animal/.svn/entries中的某个位置搜索其中一个文件并在Dog目录中执行svn update来检查是否有效。应该从svn服务器中下载受损文件。

答案 3 :(得分:0)

是的,您可以映射父目录。

为此,您只需要从" Dog"删除 $timeout = 5; while (count($channel->callbacks)) { try{ $channel->wait(null, false , $timeout); }catch(\PhpAmqpLib\Exception\AMQPTimeoutException $e){ $channel->close(); $connection->close(); exit; } } 目录。 (子)目录并在父目录上执行.svn。它将使现有文件为SVN Update副本,并从SVN服务器下载Versioned目录的增量内容。

请注意:您应该具有精确的目录结构作为SVN目录结构。