乌龟SVN:如何更新文件夹但不更新其子文件夹?

12

这可能是一个有简单解决方案的问题,但我对使用Tortoise SVN并不熟悉。

我有一个一段时间前检出的工作目录:

/folder
   file1
   file2
   /subfolder1
   /subfolder2
现在我想要做的就是只针对/ folder文件夹中的文件,而不是它的子文件夹,进行 SVN UPDATE我的工作目录。我该怎么做?
请注意,在SVN服务器存储库上,/ folder现在包含新文件 file3 file4 ,我希望在SVN UPDATE后在工作目录中看到它们。 编辑因为可能不清楚:在SVN UPDATE期间,子文件夹绝不能被SVN触碰,我不希望SVN接触它们。 我尝试使用 Greg 的答案,但它不起作用,并且警告:在更新期间,您的工作副本中的subfolder1和subfolder2将被删除
谢谢。
3个回答

27

你可以使用以下命令使 SVN 非递归更新:

svn update --depth=files

--depth参数可以使用以下参数:emptyfilesimmediatesinfinity

如果你想使用GUI而不是命令行来完成这个操作,你可以使用 更新至修订版本 ,它可以在这里找到:

alt text

然后选择 Head 修订版本,你可以指定更新的递归程度: alt text

在你的情况下,选择 包括子文件夹在内的直接子级 是最合适的。


我在提问之前尝试过这个,但是它没有起作用,它删除了子文件夹,不知道为什么。我再试一次,等会儿告诉你。 - Marco Demaio
如果您想同时带上子文件夹,请选择“仅包括子文件夹和文件”。 - Greg
刚刚再试了一次,我选择了“仅文件子项”,文件已经更新并且SVN服务器上的新文件也被检出,但问题是工作副本中的所有子文件夹都被删除了! - Marco Demaio
@Greg:如果我选择“包括文件夹的直接子项”,问题就会再次出现,但这次是在子文件夹中包含的文件中,这些文件在更新期间被删除。我不知道这是否是正确的方法。我不需要更新子文件夹,我希望SVN根本不要触及子文件夹,我将在未来更新它们,我希望它只更新主文件夹及其所有文件,而不触及/删除子文件夹。 - Marco Demaio
你可以尝试使用 immediatesempty 属性执行命令行更新命令,然后告诉我们它们产生了什么影响? - Greg
@Greg:我使用Tortoise,因为我不知道去哪里使用命令行,svn.exe甚至不在WINDOWS PATH中。 - Marco Demaio

11

通常我从“检查修改”对话框中进行部分更新。我启动它,点击“检查仓库”以获取可用的更新,然后右键单击我想要获取的确切项目。


1
谢谢!这个完美无缺!这就是完美的答案!我不知道为什么人们一直在点赞Greg的回答,虽然它详细说明了问题,但是它是错误的。 - Marco Demaio

1

使用TortoiseSVN的更新到特定版本代替更新。将HEAD指定为要更新到的版本(或任何您想要更新到的版本),然后勾选“仅更新顶层文件夹”的框。

如果您通过TortoiseSVN发出SVN命令或者使用命令行SVN客户端,则Greg的解决方案可以正常工作。


没有“仅更新顶层文件夹”的选项,也许你指的是“仅此项目”。我正在使用TortoiseSVN 1.6.10 Build 19898,你的版本是多少? - Marco Demaio

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接