如何从 svn 工作副本中取消某些文件(或文件夹)的版本?

How to unversion some files (or folders) from a svn working copy?

起初我应该说我不是在寻找关于 svn:ignoresvn rm --keep-local 的解决方案,我不想取消整个工作副本,现在只有 1 .svn 工作副本文件夹,所以 svn export 或删除 .svn 文件夹也不是我想要的答案。

我想要的是unversion(unlink,untrack...我不确定该用哪个词)工作副本下的一些项目已经签出或更新了。

我也在 TortoiseSVN 中尝试过“取消版本并添加到忽略列表”,但它看起来像是 svn:ignoresvn rm --keep-lock 的组合命令。将文件添加到 ignore-on-commit 更改列表要好得多,但我无法通过这种方式添加文件夹。

让我详细说明。

我在存储库中有 2 个文件。

repo-url
  a.txt
  b.txt

退房。

>svn co --depth empty repo-url wd
>cd wd
>svn up a.txt

现在只有 a.txt 被签出,如果我将 b.txt 添加到 wd 文件夹,svn 会识别它是未版本化的。

>echo abc>b.txt
>svn st
?     b.txt
>del b.txt
>svn st

如果我不小心更新了 b.txt,这个文件是由 svn 控制的。如果我在本地删除这个文件,svn 会将工作副本标记为已修改。

>svn up b.txt
>del b.txt
>svn st
!     b.txt

我找不到一个简单的命令来将我的工作副本恢复到更新前的状态 b.txt。目前我的解决方案是删除 .svn/wc.db/NODES 中的相关行,但我害怕折叠工作副本。

似乎有效。

svn up --set-depth=exclude b.txt