3

(我真的不在乎这是否是我的错,而是为什么事情会发生,当然......)

我在远程服务器上的 SVN 中有一个 rails 站点。在我的本地副本上,我做了一个切换(svn switch http://whatever/branch。),然后事情变得非常奇怪,该站点无法正常工作。我终于找到了它,结果发现构建的一部分(特别是 app/config 目录)指向了错误的分支。请注意:

  • 我从不使用 SVN 命令行以外的任何东西进行切换
  • 我只在安装的根目录下切换
  • 我总是以 root 身份切换(sudo -s),并且我确信在整个树上正确设置了权限(chmod -R 777)

关于工作目录的一部分如何最终指向错误位置的任何想法?在我的记忆中,这不是第一次工作目录的某个子目录指向错误的地方......为什么会发生这种情况?

4

2 回答 2

7

在官方 Subversion 常见问题解答中有一整节有关切换问题的内容。它说:

在某些情况下,工作副本中存在未版本化(并且可能被忽略)的项目,svn switch 可能会出错。切换停止,工作副本半切换。

他们的建议是只从干净的工作副本切换。

另一件事是混合修订工作副本

基本上这意味着您的工作副本中的文件可以(并且通常是)来自不同的修订版。

以下是SVN 红皮书对此的评价(我强调):

例如,假设您有一个完全处于修订版 10 的工作副本。您编辑文件 foo.html,然后执行 svn 提交,这会在存储库中创建修订版 15。提交成功后,许多新用户会期望工作副本完全处于修订版 15,但事实并非如此!在版本 10 和 15 之间的版本库中可能发生了任何数量的更改。客户端对版本库中的这些更改一无所知,因为您还没有运行 svn update,并且 svn commit 不会拉下新的更改。另一方面,如果 svn commit 自动下载最新的更改,那么将整个工作副本设置为修订版 15 是可能的——但是我们将打破“推”和“拉”的基本规则剩下的单独行动。因此,Subversion 客户端可以做的唯一安全的事情就是将一个文件——foo.html——标记为修订版 15。工作副本的其余部分保持在修订版 10。只有运行 svn update 才能下载最新的更改,并且整个工作副本标记为修订版 15。

于 2009-05-26T22:37:44.833 回答
-1

对不起,如果你知道你在做什么,但听起来你不知道。(或者问题不清楚)。如果您包含相关目录中svn status的结果,我们可以走得更远。

svn switch

(svn帮助切换)

用于切换存储库,这不应该是通用工作流程的一部分。

于 2009-05-26T22:31:51.087 回答