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

标签 mercurial perforce dvcs perfarce

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

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

我选择的起始版本只是当前头部版本后面的一些更改列表 - 尝试没有起始版本的完整克隆不起作用,但这是一个单独的问题,我可能会单独写。

在克隆过程中,我收到以下错误:

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

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

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

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

abort: no p4 changelist revision found

我验证了我有有效的 P4 登录票,P4 已启动,等等,一切正常。

所以我的猜测是,Perfarce 将上次从 P4 同步到的变更列表存储在某处,并且第一次中止发生在该信息写出之前。如果我尝试从 P4 执行拉取操作,我也会收到相同的错误。假设我的理论是正确的,有没有办法在本地 Perfarce 配置中重建这些信息?

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

最佳答案

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

我做了更多的挖掘,并与原作者 Frank Kingswood 取得了联系,解决方案是首先确保您的仓​​库导入没有错误。一旦完成,Perfarce 的工作绝对是一种享受。

最初的导入中止是由于我的使用情况造成的。在遵循其他地方找到的各种说明(包括 Stack Overflow)之后,我尝试使用 hg clone 的目标参数来获取正确的存储库名称。但看起来导入的成功对 Perforce 客户端规范根目录和作为 hg clone 的最后一个参数给出的目标文件夹之间的交互很敏感。

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

根据 Perforce 中的文件,如果您有重叠,它可能会起作用,但您可能会在将来给自己带来一大堆麻烦。

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

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

希望这可以帮助其他尝试尝试 Mercurial 水域的人。

更新 Frank 更新了 Perfarce 扩展以更好地捕获这种情况。从 Perfarce repository 获取最新信息.

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

相关文章:

mercurial - TortoiseHg Workbench 图形符号的含义

Mercurial:包括预提交更改的文件

authentication - Perforce:在多个用户之间共享登录帐户/客户端规范有什么副作用吗?

git - Git有没有办法让 future 的 merge 忽略分支之间pom文件中的版本号差异?

perforce - 在客户端工作区中查找除 p4 更改 cmd 之外的最大更改列表

git - 像 perforce 一样具有 "pending changesets"的 DRCS(git、bzr、merc)?

git - 使用 PlasticSCM(或任何 DVCS 客户端)连接到 TFS

performance - 为什么我的hgweb服务器这么慢?