尝试签出 subrepo 时 hg update 出现问题

Trouble with hg update when trying to checkout subrepo

我有一个 hg 存储库svn 子存储库

我已经成功地将它克隆到某台机器上并提取了最新的修订版。然后我尝试将工作目录更新为修订版:

bwh1te@dev-machine:~/work/project_name$ hg pull
http authorization required
realm: HG Repository
user: bwh1te
password: 
pulling from https://hg.some-company.com/project_name
searching for changes
no changes found
bwh1te@dev-machine:~/work/project_name$ hg update -C RELEASE-2_50
abort: Получена ревизия 28463.

('Получена ревизия' 在俄语中的意思是 'Checked out revision') 因为什么而中止?修订已成功签出!所以由于某些未知原因我无法更新。

我也尝试单独检查 svn repo 并且它有效:

bwh1te@dev-machine:~/somestuff/subrepo$ svn co svn+ssh://svn.some-company.com/.../trunk
A    trunk/dev
A    trunk/dev/main.cfg.xml
...
 U   trunk
Checked out revision 28549.

所以:

  1. 可以单独检查 svn subrepo
  2. 我可以在另一台机器
  3. hg update这个repo
  4. 其他用户可以在同一台机器上hg update这个仓库
  5. Svn checkout 和 checkout as subrepo(而 hg update)returns 不同的变更集!

在哪里可以找到问题的根源?

问题出在 Subversion 输出中的俄文字母中。

关于我的环境的几句话。我的机器上有一个 Ubuntu Linux 12.04,在我的 bash 用户配置文件中有 LC_ALL=ru_RU.UTF-8。所以一些消息,比如来自 Subversion 的消息被翻译成当地语言,在本例中是俄语。我猜,Mercurial 解析了这条消息,它没有预料到一些非英文符号(only ASCII?only [A-Za-z0-9]?

我的team-mate(遇到了同样的问题并最终找到了解决方案)已经通过为svn创建额外的别名解决了这个问题:

#!/bin/bash
LC_ALL=C /usr/bin/svn $@

也许在 bash 用户配置文件中制作 LC_ALL= 就足够了。