Svn Subversion-签出父目录

Svn Subversion-签出父目录,svn,version-control,tortoisesvn,Svn,Version Control,Tortoisesvn,在我的存储库中,假设我有: Animal Dog Beagle Hound ... 假设我把狗签出到一个工作目录,我意识到,哎呀,我真的想签出动物 我可以删除我的工作副本、狗目录和签出动物,但有没有办法不删除并再次签出 如果我的Dog工作副本将Animal作为父文件夹,并且我在不删除Dog的情况下签出Animal,则会得到类似“subversion无法添加目录版本,相同名称已存在”的结果 我也在用乌龟。谢谢。您正在寻找,它会更新您的工作副本以反映新路径。不过,

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

Animal
  Dog
     Beagle
     Hound
     ...
假设我把狗签出到一个工作目录,我意识到,哎呀,我真的想签出动物

我可以删除我的工作副本、狗目录和签出动物,但有没有办法不删除并再次签出

如果我的Dog工作副本将Animal作为父文件夹,并且我在不删除Dog的情况下签出Animal,则会得到类似“subversion无法添加目录版本,相同名称已存在”的结果


我也在用乌龟。谢谢。

您正在寻找,它会更新您的工作副本以反映新路径。不过,修改过的文件不会被触动。在OrtoiseSVN中,右键单击并从关联菜单中选择“切换…”


svn switch
更常见的用例是在从同一点开始的分支之间切换,这样您就可以对同一代码拥有不同的视图。但您可以在存储库中的任意路径之间切换。

这不可能直接实现

最简单的方法是删除您的工作副本并对
动物进行新签出


如果您想保留
Dog
中的任何更改,请将
Dog
移动到一个临时位置,签出
Animal
,然后将
Dog
复制回
Animal
目录。

我发现避免从svn服务器下载磁盘上已有的内容,然后使用
--depth empty
完成更新或签出。比如:
svnco——深度空动物;镉动物;svn更新--深度空狗

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

这个“
--depth empty
”阻止svn下载实际内容,但svn会创建子目录(在本例中为
Dog
),svn会在
Animal/.svn/entries
中为
Dog
子目录添加一个条目

然后用您已有的副本替换Dog子目录


您可以通过敲打
Dog
中的某个文件并在
Animal
目录中执行
svn更新
来检查此功能是否有效。应该从svn服务器上下拉被破坏的文件。

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

为此,您只需从“Dog”(子)目录中删除
.svn
目录,然后在父目录上执行
svn更新
。它将使现有文件成为
版本化的
副本,并将从SVN服务器下载
Dog
目录的增量内容。

请注意:您应该具有与SVN目录结构相同的确切目录结构。

再次删除和签出有什么问题?如果您已经做了更改,请提交更改,然后重新开始。这不是问题。我就是这么做的,而且很管用。我只是想知道是否有更好的方法,或者有更正确的方法。但是我的父目录Animal不在版本控制之下,所以我不能切换到它,至少不能从Tortoise切换到它。也许是通过命令行?我很困惑。如果不受版本控制,您的存储库中怎么会有动物?那是打字错误吗?我做了一个复制(分支)来创造动物。在我的工作副本中,Animal没有.svn目录。它是一个与存储库文件夹同名的文件夹。因此,我的工作目录与存储库结构完全相同,但我逐条检查。希望这是有意义的。不起作用:然后你得到
更新。“:跳过了“trunk”-在13370修订版中发现了一个妨碍工作的副本。冲突摘要:跳过的路径:1
Animal
中执行
svn up
时。已经很长时间了,所以我不确定问题出在哪里。SVN应该制作动物和狗的目录,不是吗?因此,不应妨碍工作副本。另一个想法是,SVN可能从'13年起发生了变化,所以这个技巧不再有效。