我在向本地hg存储库创建hg-subrepo时遇到了困难。
我创建了一个“核心”存储库,我想成为另一个存储库中的子存储库。我能够克隆目标中的“核心”仓库但是当我去创建/签入.hgsub文件时,我得到一个解析错误,禁止我提交文件。
PS C:\Temp\subrepo_experiments\target01> hg status
PS C:\Temp\subrepo_experiments\target01> hg clone C:\Temp\subrepo_experiments\core
destination directory: core
updating to branch default
resolving manifests
getting core_001.txt
getting core_002.txt
getting core_003.txt
3 files updated, 0 files merged, 0 files removed, 0 files unresolved
PS C:\Temp\subrepo_experiments\target01> echo core = C:\Temp\subrepo_experiments\core > .hgsub
PS C:\Temp\subrepo_experiments\target01> hg status
? .hgsub
PS C:\Temp\subrepo_experiments\target01> hg add .hgsub
adding .hgsub
PS C:\Temp\subrepo_experiments\target01> hg commit
hg: parse error at .hgsub:1: ■c o r e
PS C:\Temp\subrepo_experiments\target01>
答案 0 :(得分:3)
您用来创建.hgsub
文件的编辑器是否会产生令人厌恶的内容。它似乎使用16位UTF-16编码,并在前面有一个BOM(字节顺序标记)。使用创建UTF-8或ASCII文本而没有BOM的东西,你将处于良好的状态。您可以在输出中看到此问题:
hg: parse error at .hgsub:1: ■c o r e
它告诉你“嘿,前面有一段废话,然后是每个角色之间的一个不可打印的角色(在这种情况下为NUL / 0x00)!”
答案 1 :(得分:0)
您已经重新阅读了Subrepositories手册,更好 - 来自“Mercurial Kick Start Exercises”的Subrepositories,至少是介绍的第一章
你的错误是对子存储库右侧的错误定义。它必须是相对路径(对于contaner-repository的根目录)或URL(对于外部subrepo)。
如果core是subrepo_experiments的子目录(也就是主repo的根目录),则.hgsub将具有easieast形式
core = core
它将是一个功能齐全的存储库,其中包含子存储库
Kick Start的重复样本
z:\mainrepo>dir /B
.hg
subrepo
.hgsub
.hgsubstate
z:\mainrepo>dir subrepo /B
.hg
z:\mainrepo>type .hgsub
subrepo = subrepo
仅用于测试
z:\>hg clone mainrepo main-clone -v
updating to branch default
resolving manifests
getting .hgsub
getting .hgsubstate
2 files updated, 0 files merged, 0 files removed, 0 files unresolved
注意:Ry4an抓住了第一个主要问题,我错过了更深层次