我的mercurial主repo有一个问题。我的同事为依赖关系创建了一堆子存储库,从那时起,我就无法更新我的本地repo。我决定尝试在空目录中签出,但我有相同的错误:
hg clone https://user@bitbucket.org/company/repo
http authorization required
realm: Bitbucket.org HTTP
user: user
password:
destination directory: repo
requesting all changes
adding changesets
adding manifests
adding file changes
added 1116 changesets with 12636 changes to 2410 files
updating to branch default
cloning subrepo deps/gtest from https://bitbucket.org/company/gtest.git
abort: Le fichier spÚcifiÚ est introuvable
"Le fichier spÚcifiÚ est introuvable"的意思是"指定的文件找不到",但是消息是法文的,所以它一定来自Windows,因为如果它来自hg,它应该是英文的
下面是我使用——debug选项
时的结果updating: .hgignore 1/1274 files (0.08%)
getting .hgignore
updating: .hgsub 2/1274 files (0.16%)
getting .hgsub
updating: .hgsubstate 3/1274 files (0.24%)
getting .hgsubstate
subrepo merge 000000000000+ 4d1310a16bfd 000000000000+
subrepo deps/gtest: remote added, get https://bitbucket.org/springbeats/gtest.git:a6772271f71672e889776bfe49ec4efd9da036df:git
cloning subrepo deps/gtest from https://bitbucket.org/company/gtest.git
deps/gtest: git clone https://bitbucket.org/company/gtest.git C:UsersBobDocumentsNewdirrepodeps/gtest
abort: Le fichier spÚcifiÚ est introuvable
有人知道发生了什么事吗?
这里的主要问题是Bitbucket,它(在mercurery托管世界中没有人)不能支持和处理嵌套存储库(以及基于相同原因的子存储库),而不是子存储库的git特性。对于BB,子repo只能是superrepo的兄弟
为了避免这类问题,您必须使用额外的[subpaths]
hack,在Mercurial 2的Subrepository wiki页面上有描述。
确实,问题是hg找不到git。我刚意识到git不在我的PATH上,所以我修复了它,一切都工作了。
解决方法很简单,但是错误信息并不清楚。