1

这听起来可能很愚蠢,但有时我会遇到两个颠覆版本之间的版本冲突。我使用 sshfs 在开发服务器上挂载一个目录,然后使用本地 Vim 编辑代码。对于像更新、提交等颠覆性的东西。我在服务器上 ssh 并在那里做。但是,有时我会混淆我的 shell 并且不小心在挂载目录中的本地 shell 中进行更新或提交。Subversion 退出并出现错误,这很好。但是,当我尝试在我的 ssh 会话中的开发服务器上做同样的事情时,subversion 说工作目录/subversion 有一个错误的版本。服务器上的颠覆版本比我笔记本上的版本旧,所以我猜我的(较新)版本以某种方式升级了工作目录,因此它们与开发服务器上的旧版本不兼容。有时删除 .svn/lock 文件会有所帮助,但前提是我在笔记本上执行 subversion 命令后立即执行此操作。当我之后在开发服务器上执行命令时,锁定文件消失了,我看不到拯救结帐的方法。如果存储库不是那么大,这不会那么糟糕。特别是当我做了很多更改并且无法提交时。

我目前看到的唯一解决方案是将我更改的文件复制到某处,删除结帐,进行全新的结帐并将文件复制回来。

是否有更好的解决方案来挽救损坏的结帐和/或我的更改?

更新 Mikael Sundberg 链接的常见问题解答包含答案。我把它写在这里,因为他没有明确提到它。有一个脚本可以在安全的情况下降级升级的存储库:

http://svn.apache.org/repos/asf/subversion/trunk/tools/client-side/change-svn-wc-format.py

4

2 回答 2

1

也许这个常见问题条目可能会有所帮助: http ://subversion.tigris.org/faq.html#working-copy-format-change

于 2008-09-25T19:58:33.347 回答
0

我不确定我是否正确理解了您的问题,但这里有一些提示:

第一个提示——你尝试过 SVN Clean命令吗?

下一个可能对你没用:),但是很多用过CVS的人没有意识到SVN有这样的功能,所以我把它写下来。

如果您使用 Windows 和Tortoise SVN 客户端,您可以从上下文菜单(鼠标右键)中选择Show Log命令。当签入列表出现时,选择最后一个正确的,然后从上下文菜单命令中选择恢复到此版本

在其他情况下(不是 Windows 或 Tortoise SVN),请查看上述命令的命令行版本的文档。

下一个技巧可以帮助你避免混合你的贝壳。

你已经写过你使用 SSH shell——为了避免混合 shell 会话的问题,我总是为我登录的每个服务器(和帐户)使用不同的背景颜色(即,白色在黑色上用于开发,黄色在海军上用于测试服务器和生产服务器上的绿色黄色)。

这节省了我很多次:)。

于 2008-09-25T20:02:36.113 回答