如何修复"升级的" Subversion工作目录?

时间:2020-03-06 14:44:40  来源:igfitidea点击:

这听起来可能很愚蠢,但是有时我会遇到两个版本的Subversion之间的版本冲突。我使用sshfs在开发服务器上安装目录,然后使用本地Vim编辑代码。对于Subversion之类的东西,例如更新,提交等。我在服务器上ssh并在那做。但是,有时我混淆了我的外壳,并意外地在已安装目录中的本地外壳中进行了更新或者提交。 Subversion退出并显示错误,这很好。但是,当我尝试在ssh会话中在开发服务器上执行相同的操作时,subversion表示工作目录/ subversion的版本错误。服务器上的Subversion版本比笔记本电脑上的版本旧,因此我想我的(较新的)版本会以某种方式升级工作目录,因此它们与开发服务器上的旧版本不兼容。有时删除.svn / lock文件会有所帮助,但是只有在我在笔记本上执行了subversion命令之后立即删除它。之后,当我在开发服务器上执行命令时,锁定文件消失,并且我看不到任何方法来挽救结帐。如果存储库不是那么大,那也不会太糟。尤其是当我做了很多更改而无法提交时。

我目前看到的唯一解决方案是将更改过的文件复制到某个位置,删除结帐,执行全新的结帐,然后将文件复制回去。

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

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

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

解决方案

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

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

第一个技巧-我们是否尝试过SVN Clean命令?

下一个可能对我们没有用:),但是许多以前使用CVS的人没有意识到SVN具有这样的功能,因此我将其写下来。

如果我们使用Windows和Tortoise SVN客户端,则可以从上下文菜单中选择"显示日志"命令(鼠标右键)。当签到列表出现时,选择最后一个,然后从上下文菜单中选择命令,以还原到该修订版。

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

下一个技巧可以避免混合外壳。

我们已经写过使用SSH shell的方法,以避免混合shell会话时出现问题,我始终为每个服务器(和帐户)使用不同的背景色,然后我登录(例如,白色表示开发,黑色表示白色,测试服务器表示海军上的黄色)和黄色在生产服务器上为绿色)。

这为我节省了很多时间:)。