我无法在现有存储库中运行 svn 命令。
运行svn status
结果如下:
gene@gene-ThinkPad-T60p:~/Dropbox/CDS$ svn status svn: 路径“.”似乎是 Subversion 1.7 或更高版本
工作副本的一部分。请升级您的 Subversion 客户端以使用此
工作副本。
经过一番谷歌搜索后,我认为正确的做法是运行svn upgrade
,(但这是一个转移注意力的借口,升级不会升级您安装的 SVN,而是升级项目中隐含的版本)。无论如何,1.6 版中不提供升级
gene@gene-ThinkPad-T60p:~/Dropbox/CDS$ svn upgrade
未知命令:“upgrade”
输入“svn help”查看用法。
我尝试更新 subversion(即命令行上的 svn) ,sudo apt-get update
然后尝试sudo apt-get upgrade
,但没有效果。我还尝试了sudo apt-get install subversion
,但没有效果。
我下载了源代码并尝试构建 subversion,但运行后出现此错误./configure
...截断...
/bin/grep -E 检查 ln -s 是否有效... 是 检查
BSD 兼容安装... /usr/bin/install -c configure:Apache
可移植运行时 (APR) 库配置 检查 APR... 否
configure:警告:未找到 APR 找不到 Apache 可移植运行时 (APR)
库。请在此系统上安装 APR 并
使用适当的 --with-apr 选项配置 Subversion。
您可能需要对 Apache 可移植运行时实用程序 (APRUTIL) 库执行类似操作,然后使用 --with-apr 和 --with-apr-util 选项
配置 Subversion。configure :错误:未找到合适的 APR
我已经在 SVN 的自述文件中读过几页关于 APR 实用程序的内容,但它似乎非常复杂。也许 APRUTIL 是用于安装 SVN 的服务器版本而不是客户端?
此命令sudo apt-get install libapache2-svn
表示我已经处于最新版本。
(编辑:)当我尝试时,sudo apt-get install subversion
它说我使用的是最新版本
正在读取软件包列表...完成
构建依赖关系树
正在读取状态信息...完成
Subversion 已经是最新版本。
升级了 0 个版本,新安装了 0 个版本,要删除 0 个版本,并且未升级 1 个版本。
但是,我当前的版本(基于svn --version
)是 svn,版本 1.6.17(r1128011),编译于 2013 年 6 月 26 日,20:44:02。这对我来说似乎是最近的,但根据网站,他们已经在使用 1.8 了。
在此先感谢您的帮助。
答案1
有一点曲折。你说你尝试了svn update
,但代码显示svn upgrade
失败了,然后你说“所以我试过了svn upgrade
”。
我的直觉告诉我你有一个工作副本1.7 版是从某处复制的,而 1.6 版的 subversion 无法处理它。最简单的解决方案是svn checkout
从repository
.
如果你真的需要降级你的工作副本从 1.7 到 1.6,那么你就有问题了, 恐怕。
APR 是为 Apache http 服务器开发的通用库,但所有 Subversion 程序都使用它。因此,您需要安装它才能构建任何 Subversion 软件。libapache-svn 则不同。
答案2
抱歉,我一开始就没能很好地提出这个问题。我要为自己辩解的是,这是因为我尝试了很多不同的方法来解决该问题,结果忘记了步骤。
但是,这里是为什么 SVN 命令不起作用以及为什么升级不起作用的答案。
我的问题是我使用 Dropbox 在计算机之间同步我的存储库,并且我不小心将 SVN 1.7 存储库放在了 SVN 1.6 机器上。
SVN 说我需要升级,但是 SVN 升级仅适用于 1.7,所以我收到错误“命令不存在”(不知何故 1.6 版本知道它应该存在,因为它在错误消息中!!!)
另一个复杂因素是我无法使用典型的 apt-get(更新/升级/安装)命令在这台机器上升级到 1.7,因为虽然默认的 PPA 资源,Ubuntu 12.04(LTS)没有可用的二进制文件。
要在 Ubuntu 12.04 中升级到 SVN 1.7,您需要添加新的 PPA。说明可在此处找到:在哪里可以找到 Subversion 1.7 二进制文件?
注意:查看上述链接中的多个答案。SVN 团队提供了一个 ppa,在撰写本文时,这并不是选定的答案
根据我读过的内容(以及我的个人经验),使用 Dropbox 可以跨机器同步 SVN 和 Git 项目,甚至可以跨操作系统同步。但是,这可能不是一个好主意,SVN 版本的更改给我带来了一些相当大的问题。现在,我的几个跟踪文件已在项目中被覆盖,我必须经历一个混乱的过程,再次签出整个项目并手动同步未版本控制的文件。被覆盖的文件被替换为具有原始名称但没有内容的空白文件(并且它们在 SVN 看来是最新版本,因此还原不会还原它们)。
是的,我知道保留未版本控制的文件并不理想,但我有充分的理由这样做。