设置Hg Subrepo时如何停止解析错误?

时间:2014-09-19 15:35:18

标签: mercurial

我在向本地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>

2 个答案:

答案 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抓住了第一个主要问题,我错过了更深层次