删除的文件在 SVN 中放在哪里?

Where do deleted files go in SVN?

我刚刚使用 svn --force delete path/folder copy 删除了一些文件。然而,foldercopy 之间的 space 让它认为它必须删除多个东西,所以现在它删除了我原来的文件夹。

我还没有对我的原始文件夹进行版本控制,所以所有的更改都没有了。幸运的是,我没有在那个特定的文件夹中进行太多更改,所以如果我最终做了同样愚蠢的事情,这主要是为了将来使用:如何还原或恢复以前未提交的文件?我在哪里可以找到这些文件?他们没有被移到我的垃圾桶。

它们被删除了,很简单。不幸的是,documentation for the delete command 只说了这个:

Files (and directories that have not been committed) are immediately removed from the working copy unless the --keep-local option is given.

为了证明,我们必须查看 SVN 源代码,其中 svn_io_remove_file2 eventually calls apr_file_remove,其中:

  • 如果你在 Windows invokes DeleteFile. This method just deletes the file; if the programmers wanted to send it to the Recycle Bin, they'd instead have to use SHFileOperation 并传递 FOF_ALLOWUNDO 标志。
  • 如果您使用的是 *nix(包括 Mac OS),invokes unlink,它会执行以下操作:

    ... the file is deleted and the space it was using is made available for reuse

注意:我会对代码中的点做更深入的 link,但是可通过网络访问的 SVN 和 APR 存储库不允许行级 link荷兰国际集团:(