macOS 中 Cornerstone 的"Clean"操作和终端的"svn cleanup"命令无效了怎么办?

说明:下文中的
“工作拷贝” 即 “Working Copy”,
“仓库” 即 “Repository”,
“清理” 即 “Clean” 或 “Cleanup”

一、出现问题的场景描述

  1. 一次在无线网络条件不佳的环境中办公。
  2. 大约是我向“工作拷贝A”提交一些资源的操作尚未结束,又对同一仓库中的“工作拷贝B”进行了更新操作。
  3. “工作拷贝B”的更新迟迟不能完成,卡在了某个进度。
  4. 我决定强制重启 Cornerstone,然后重新更新“工作拷贝B”。
  5. 强制退出时,Cornerstone 给了我一段提示:

Canceling Activities...
Cornerstone is waiting for background activities to end.
Network issues might be causing activities to temporarily block while waiting for a response from the server.

大致意思是:

正在取消进程……
Cornerstone 正在等待后台进程结束。
网络问题可能造成进程临时阻塞,直到服务器出现响应。

我点击了“Quit Now”(“立即退出”),如下图:

screenshot-cornerstone-quit-now.png
  1. Cornerstone 进一步给了我一个警告:

Quitting without waiting for activities to complete may result in data loss and is not recommended.
Are you sure you want to quit?

大致意思是:

未等待进程结束的退出操作可能导致数据丢失,不建议这么做。
您确定要退出吗?

我点击了“Quit Anyway”(“确定退出”),如下图:

screenshot-cornerstone-quit-anyway.png
  1. 重新打开 Cornerstone 后,发现无法对“工作拷贝B”使用常用功能了,“更新”、“提交”、“解决冲突”等都不行了,连“清理”功能都禁用了,大约仅剩下“在访达中打开”和“删除”功能了。

二、尝试一些修复方法

说明:如果您只关心最终的解决方法,那么此小节对您无关紧要,请直接前往第三小节查看。

我曾在 Windows 操作系统中遇到过 SVN 被锁(locked)的情况,当时同事告诉我只要安装了 TortoiseSVN 软件,就能在工作拷贝的文件夹上右击,然后使用 “Clean up...” 功能清理后就没问题了;也告诉我常见的 SVN 被锁的问题,基本都可以用 “Clean up...” 方法解决。

不幸的是 Cornerstone 已经不允许我使用“清理”功能了,我想也许 mac 终端键入 svn “清理”命令的方式还能用,就决定试试。

我打开 mac 终端,切换到“工作拷贝B”的根目录下,键入了如下命令并执行:

svn cleanup

mac 终端给了我一些错误:

svn: E155037: Cleanup with an older 1.7 client before upgrading with this client
svn: E155037: Previous operation has not finished; run 'cleanup' if it was interrupted

大致意思是:

svn: E155037: 在升级客户端之前,使用早期 1.7 版本的客户端进行了清理操作
svn: E155037: 之前的操作尚未结束;如果之前的操作是意外中断,运行 'cleanup' 命令

看来使用 mac 终端执行 svn “清理”命令的方式也无效了。

当然还有一种粗暴的方式可以解决我的问题,那就是删除“工作拷贝B”,重新从仓库中拉取资源。

如果只针对我的“工作拷贝B”来说,这并不麻烦。工作拷贝中只是些项目上的文档,我基本也不会修改这些文档,只是查阅使用。

可是假如我以后又碰到了这个场景,且出现问题的是我频繁操作的用来存放代码的工作拷贝,那就比较麻烦了。我要把本地未提交的代码先做好备份,再从仓库重新拉取代码,然后把我未提交的代码放到新的工作拷贝中,想想就觉得麻烦。又或者这个工作拷贝资源量很多,重新拉取肯定很耗费时间。

抱着“怕麻烦”的心理,我开始在网络上查找类似的问题,终于发现了下面这个修复思路。👇

如果您的电脑可以显示隐藏文件夹和文件,您会发现工作拷贝的根目录下有一个 .svn 文件夹,里面有一个 wc.db 文件,如下图:

screenshot-svn-database-file.png

大约是这个文件记录了您的 SVN 操作,一些情况下(例如:强制退出 Cornerstone)会导致文件尚未记录完成,所以 SVN 决定上个锁,禁止您对这个工作拷贝的后续操作,其中也包括禁止您使用“清理”功能。

如果我能修改这个 wc.db 文件,删除那些未完成的记录,应该就能正常操作我的“工作拷贝B”了。

想要修改 wc.db 文件,您需要一个 SQLite 软件。如果您使用 macOS,那么系统本身已经帮您预安装了,可直接使用;如果您使用 Windows 操作系统,那么需要先下载适合您系统的安装包,然后安装此软件,官方下载地址是:https://www.sqlite.org/download.html

三、解决方法

  1. 假设您出问题的工作拷贝路径是:/Users/xiaoming/work/working-copy,打开 mac 终端,键入下面的命令并执行,进入此工作拷贝的根目录:
cd /Users/xiaoming/work/working-copy
  1. 键入下面的命令并执行,查找未完成的记录:
sqlite3 .svn/wc.db "select * from work_queue"

例如查找到的记录如下:

88|(file-install 63 path/to/fileA.rp 1 0 1 1)
89|(file-install 64 path/to/fileB.rp 1 0 1 1)

可以看出在此工作拷贝中,对“文件A”和“文件B”的操作尚未完成。

  1. 键入下面的命令并执行,删除未完成的记录:
sqlite3 .svn/wc.db "delete from work_queue"

如果一切顺利,mac 终端什么都不会输出,心安理得。


如果您使用 Windows 操作系统,解决方法与上述 macOS 的基本相同。在安装了 SQLite 软件后,只需要先通过 cmd 命令行工具切换到出问题的工作拷贝路径,然后依次键入并执行下面的命令即可:

sqlite3.exe .svn/wc.db "select * from work_queue"
sqlite3.exe .svn/wc.db "delete from work_queue"

说明:暂未验证 Windows 操作系统下上述方法是否有效,如果您验证有效,请告诉我。

四、问题已经解决了

此时回到 Cornerstone ,已经允许您对工作拷贝执行“更新”、“提交”、“解决冲突”、“清理”等操作了。

然而,如果您此时直接对工作拷贝执行“更新”等操作,Cornerstone 会提醒您当前工作拷贝仍然处于锁定的状态,所以记得先“清理”一下工作拷贝。

这个解决方法比从仓库中重新拉取资源好得多了,不是吗?

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,847评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,208评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,587评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,942评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,332评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,587评论 1 218
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,853评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,568评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,273评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,542评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,033评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,373评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,031评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,073评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,830评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,628评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,537评论 2 269

推荐阅读更多精彩内容