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

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

我选择的起始版本仅是当前主要版本之后的几个变更列表-尝试没有startrev的完整克隆是行不通的,但这是一个单独的问题,我可能会单独写一遍。

在克隆期间,出现以下错误:
"abort:untracked file in working directory differs from requested revision on 'MAIN/apps/Win32/BenchMark/Jamfile'”

但是,检查磁盘上显示的内容后,实际上似乎已成功克隆了所有文件。提到的文件与Peforce中的文件相同,并且在克隆过程之前,lwnthg文件夹为空。 “hg状态”显示了许多尚未提交的文件-我猜是因为克隆异常终止了吗?所以我 promise 了他们,所有人看上去都很棒。

我对文件进行了一些编辑,将它们毫无问题地提交给本地存储库。我喜欢Mercurial的可爱;)

但是,当我将更改推回Perforce时,出现以下错误:
abort: no p4 changelist revision found

我确认我有一个有效的P4登录票,P4已启动,等等,一切都很好。

因此,我的猜测是Perfarce将上次从P4同步到的变更列表存储在某个位置,并且第一次中止发生在该信息被写出之前。如果我尝试从P4进行拉动操作,也会遇到相同的错误。假设我的理论是正确的,是否有任何方法可以在本地Perfarce配置中重建此信息?

注意'Perfarce'不是错字。链接到Perforce的是name of the Mercurial extension。如果将其更改为“Perforce”,该问题将失去部分含义。感谢您尝试清除问题的帮助,但始终值得首先查看事实:)

最佳答案

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

我做了更多的挖掘工作,并与原始作者Frank Kingswood取得了联系,而解决方案是确保仓库的进口一开始就没有错误。完成此操作后,Perfarce会发挥绝对的作用。

最初的导入中止取决于我的使用情况。在遵循其他地方(包括堆栈溢出)中找到的各种说明之后,我试图使用hg clone的destination参数来获取正确的 repo 名称。但是,似乎导入成功对Perforce客户端规范根目录和目标文件夹之间的交互非常敏感,该目标文件夹是hg clone的最后一个参数。

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

如果重叠,它可能会起作用,具体取决于Perforce中的文件,但将来可能会遇到很多麻烦。

建议将文件夹分开放置。我的问题是我不想将hg文件夹的默认文件夹名称用作Perforce客户端规范名称-如果您不提供目标文件夹,这就是该操作。但是,可能是由于错误所致,如果您确实提供了目标文件夹,则它必须与客户端规范根目录匹配。由于这种行为,我以为文件夹实际上必须相同。

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

希望这可以帮助其他试图将脚趾浸入 Mercurial 水域的人。

更新
弗兰克(Frank)更新了Perfarce扩展名,以更好地解决此问题。从Perfarce repository获取最新信息。

关于mercurial - Perfarce克隆失败后,我可以重建Perforce/Mercurial链接吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5376656/

10-11 17:31