如何防止SVN更新存储库中已有的目录

Kir*_*rby 13 svn ignore

我不认为这不是一个标准的svn忽略问题.

我有一个存储库,里面有一个我不想要的巨大目录.因为别人使用存储库这样做,我不能只从树中删除它.但是,每次我做svn时我都不想重新下载这个目录.我可以理解ignore会阻止我上传到svn的目录,但我怎么能告诉svn我不想让它重新下载已经在存储库中的特定目录.

我所做的...

svn up
rm badDirectory
Run Code Online (Sandbox Code Playgroud)

然后未来svn up重新下载它.我想防止这种情况.

谢谢!

编辑:好的.我希望SVN有一个内置选项,我还没有注意到.我希望避免不得不"破解"颠覆的不足之处,但下面的选择似乎是可接受的选择.

再次编辑以解决几条评论:

是否有特殊原因导致您无法签出该文件夹并保留该文件夹?没有磁盘空间(可能因为你可以退房)?安全原因?

我可以查看该文件夹.整个svn存储库大约291兆...它的290个在这个"坏"目录中.基本上,其他一些控制存储库的人(因此可以决定那里的内容)会在那里放置一个真正不需要存在的目录.我并不是说这是关于政策和使用svn的"正确和正确"方式的问题.我只是想知道是否有技术解决方案.

您能否更好地描述存储库的树结构?是否存在与错误目录相同级别的文件,或仅存在其他目录? -

基本结构:

repository root
 - good dir 1
    - plenty of subdirs in all of these directories
 - good dir 2
 - good dir X
 - bad dir 1
 - bad dir 2
 - bad dir X 
 - good file 1
 - good file 2
 - good file X
Run Code Online (Sandbox Code Playgroud)

小智 18

我和稀疏的结账路线一样,与斯特凡提到的一样.区别在于我排除了整个目录.

这是我为排除整个目录及其所有子目录所做的工作.注意:不需要的目录已经在我的磁盘上,所以我先删除它.

$ rm -rf unwanted-directory
$ svn checkout url/to/repo/unwanted-directory unwanted-directory --depth empty
$ cd root/of/my/tree
$ svn update
< - unwanted-directory未从存储库获取

作为参考,我们的树中有一个'prototype'目录,里面有一堆实验代码.由于我不在这个领域工作,所以我没有兴趣在我的多个开发树中使用1G来源.


Ste*_*fan 10

你可以做一个稀疏的结账:

svn co url/to/repo mywc --depth=files
Run Code Online (Sandbox Code Playgroud)

这将获得一个只包含其中的文件的wc,没有子文件夹.您现在可以获得所需的所有文件夹

svn up url/to/repo/subfolder1 --set-depth infinity 
svn up url/to/repo/subfolder2 --set-depth infinity 
svn up url/to/repo/subfolder3 --set-depth infinity 
...
Run Code Online (Sandbox Code Playgroud)

  • 很棒,正是我想要的.此外,它可以通过Tortoise SVN在不需要的文件夹上进行"更新到修订"并将深度设置为"仅此项目"或"排除". (4认同)

Kir*_*rby -2

所以我只是想出了我认为对这个问题最快的答案。由于 SVN 没有办法自动忽略我不想更新的目录...

这是我现有的目录结构:

根 -> goodDir 1 -> goodDir 2 等等

我已经从结账中删除了坏目录。我无法从根目录执行“svn up”,因为它会尝试重新检查坏目录。

但是,以下命令效果很好:

  ls | xargs svn up
Run Code Online (Sandbox Code Playgroud)

简短、甜蜜、简单且容易记住。