1

我来自Visual SourceSafe背景,所以请多多包涵。我正在尝试实现TortoiseSVN范式转变。顺便说一句,我有VisualSVN,但我没有用它来制造我现在遇到的这个问题。

他们都有一个共同点,那就是他们都需要消息框的自由帮助,以达到“嘿,我要从某个位置吹走大量文件。这样可以吗?”的效果。

我正在工作和在家中编写代码。我是唯一的开发者。在办公室的工作日结束时,我做了一个检查,呃,Commit我在白天所做的所有更改。那工作得很好。

当我回到家时,我想做的只是相当于在 VSS中获取。我只是想用更新的存储库中的文件替换任何本地文件。就这样。我希望没有什么复杂的。

所以我Update在我的顶级工作文件夹上做了一个(顺便说一下,这个词在方向上是模棱两可的)。抱怨一堆文件有冲突。请注意,我不想合并,我想用存储库中的内容覆盖本地。所以现在我的外壳覆盖图标是,呃,是彩虹的所有颜色。

所以然后我用谷歌搜索并阅读答案是做 aCheck Out然后 a Revert。所以我从存储库浏览器的根文件夹中进行了检查,然后 TortoiseSVN 开始删除我工作目录中的几乎所有文件!然后它说好的,任务完成,太好了,这就是你想要的,你打赌!

好的,任何人都可以以对旧 VSS 用户有意义的方式解释这一点吗?我没有阅读 200 页的书(也许我的答案在第 176 页的第 3 段),但我做了谷歌,并且有很多关于恢复用户意外删除的文件的点击,但没有解释 TortoiseSVN 的删除行为.

概括:

  1. 为什么这样做?
  2. 当我下班回家时,我怎样才能可靠地执行Get操作?
4

1 回答 1

3

在我看来,您可能遇到了这样一种情况:您的工作副本是一个科学怪人混合的文件目录,该目录早于您使用 SVN 和“正确的”SVN 工作副本。您必须进行结帐然后还原的事实让我感到很奇怪,因为结帐将始终为您提供干净的工作副本,而不会更改文件。我怀疑您签出了一个非空目录,通常不建议这样做(在某些情况下这样做是有意义的,但我认为在这种情况下不是这样)。

我认为您需要做的是签出一个新目录。然后,您应该有一个没有更改的原始工作副本。checkout 目录应该是创建的新目录的名称。我怀疑您已经删除了路径的最后一位以强制签出到当前目录。这是一个具体的例子:

  • 您要结帐的网址是http://server/svn/trunk
  • 您已经有一个目录c:\source,其中包含其他项目。在资源管理器中右键单击并选择 SVN Checkout。
  • 输入 URL 并在目录字段中输入c:\source\trunk。如果您要进入,c:\source那么 SVN 会尝试将现有内容与结帐中的内容合并,这很少是您想要的。

一旦你有了一个原始的工作副本,你就不应该得到你所看到的惊喜。当您更新时,您只会遇到冲突,即其他人更改了文件,而您自己更改了文件。除非您手动将文件复制到已独立添加到 SVN 的工作副本中,否则对正确工作副本的更新永远不会破坏您创建的任何文件。

于 2012-08-09T08:35:21.990 回答