在Perfarce克隆中止后,我可以重建Perforce / Mercurial链接吗?

时间:2011-03-21 10:56:06

标签: mercurial perforce dvcs perfarce

我遇到了Perfarce扩展的问题,我似乎无法通过。我最初通过以下方式克隆了我的P4仓库的一部分:

hg clone --startrev 71555 p4://perforce:1666/greg_nt_main-hg lwnthg

我选择了一个start rev,这只是目前主要版本背后的一些变更列表 - 尝试没有startrev的完整克隆不起作用,但这是一个单独的问题,我可能会单独写一下。

在克隆期间,我收到以下错误:

"abort:untracked file in working directory differs from requested revision on 'MAIN/apps/Win32/BenchMark/Jamfile'”

然而,在检查我的磁盘上出现的内容时,看起来所有文件实际上已成功克隆。提到的文件与Peforce中的文件相同,并且lwnthg文件夹在克隆过程之前为空。 'hg status'显示了许多尚未提交的文件 - 我猜是因为克隆已中止?所以我承诺了,所有人看起来都很棒。

我对我的文件进行了一些编辑,将它们提交到本地仓库而没有任何问题。我很享受Mercurial的可爱;)

但是当我将我的更改推回到Perforce时,我收到以下错误:

abort: no p4 changelist revision found

我确认我有一张有效的P4登录票,P4已经启动等等,一切正常。

所以我的猜测是,Perfarce存储了它最后同步到P4的更改列表的某个地方,并且第一次中止发生在此信息写出之前。如果我尝试从P4进行拉动操作,我也会得到同样的错误。假设我的理论是正确的,有没有办法在本地Perfarce配置中重建这些信息?

注意'Perfarce'不是拼写错误。链接到Perforce的是name of the Mercurial extension。如果你把它改成'Perforce',这个问题会失去一些意义。在尝试澄清问题时感谢帮助,但总是值得首先检查事实:)

1 个答案:

答案 0 :(得分:1)

要回答我自己的问题,答案似乎是否定的。

我已经做了一些挖掘工作并与原作者Frank Kingswood保持联系 - 解决方案是确保您的仓​​库进口首先没有错误。一旦完成,Perfarce就会绝对享受。

导入的原始中止取决于我的使用情况。按照其他地方发现的各种指令 - 包括Stack Overflow - 我试图使用hg clone的目标参数来获得正确的repo名称。但看起来导入的成功对Perforce客户端规范根目录与作为hg clone的最终参数给出的目标文件夹之间的交互很敏感。

基本上,请确保这些文件夹不重叠。

根据Perforce中的文件,如果你有重叠,可能可以工作,但你可能会在将来为自己设置一大堆麻烦。

建议将文件夹分开。我的问题是我不想将hg文件夹的默认文件夹名称作为Perforce客户端规范名称 - 如果您不提供目标文件夹,它就是这样做的。但是,可能由于某个错误,如果您提供了目标文件夹,那么它具有以匹配客户端规范根目录。由于这种行为,我假设文件夹实际上必须是相同的。

在Mercurial中,在创建repo后重命名顶级文件夹是安全的。因此,如果您不希望该名称由Perforce客户端规范的名称决定,那么您可以稍后重命名。这就是我采取的方法。

希望这有助于其他人试图在Mercurial水域中蘸脚趾。

<强>更新 Frank更新了Perfarce扩展以更好地捕获此案例。从Perfarce repository获取最新信息。