Gre*_*eld 5 mercurial perforce dvcs perfarce
我遇到了Perfarce扩展的问题,我似乎无法通过.我最初通过以下方式克隆了我的P4仓库的一部分:
hg clone --startrev 71555 p4://perforce:1666/greg_nt_main-hg lwnthg
Run Code Online (Sandbox Code Playgroud)
我选择了一个start rev,这只是目前主要版本背后的一些变更列表 - 尝试没有startrev的完整克隆不起作用,但这是一个单独的问题,我可能会单独写一下.
在克隆过程中,我收到以下错误:
"abort:untracked file in working directory differs from requested revision on 'MAIN/apps/Win32/BenchMark/Jamfile'”
Run Code Online (Sandbox Code Playgroud)
但是,在检查我的磁盘上出现的内容时,看起来所有文件实际上都已成功克隆.提到的文件与Peforce中的文件相同,并且lwnthg文件夹在克隆过程之前为空.'hg status'显示了许多尚未提交的文件 - 我猜是因为克隆已中止?所以我承诺了,所有人看起来都很棒.
我对我的文件进行了一些编辑,将它们提交到本地仓库而没有任何问题.我喜欢Mercurial的可爱;)
但当我将我的更改推回到Perforce时,我收到以下错误:
abort: no p4 changelist revision found
Run Code Online (Sandbox Code Playgroud)
我确认我有一张有效的P4登录票,P4已经启动等等,一切正常.
所以我的猜测是,Perfarce存储了它最后同步到P4的更改列表,并且第一次中止发生在此信息写出之前.如果我尝试从P4进行拉动操作,我也会得到同样的错误.假设我的理论是正确的,有没有办法在本地Perfarce配置中重建这些信息?
注意 'Perfarce'不是拼写错误.它是链接到Perforce 的Mercurial扩展名.如果你把它改成'Perforce',这个问题会失去一些意义.在尝试澄清问题时欣赏帮助,但总是值得先检查事实:)
要回答我自己的问题,答案似乎是否定的。
我做了更多的挖掘并与原作者 Frank Kingswood 取得了联系,解决方案是首先确保您的仓库导入没有错误。一旦完成,Perfarce 的工作绝对是一种享受。
最初的导入中止是由于我的使用情况造成的。在遵循其他地方找到的各种说明(包括 Stack Overflow)之后,我尝试使用 hg clone 的目标参数来获取正确的存储库名称。但看起来导入的成功对 Perforce 客户端规范根目录和作为 hg clone 的最后一个参数给出的目标文件夹之间的交互很敏感。
基本上,确保这些文件夹不重叠。
根据 Perforce 中的文件,如果您有重叠,它可能会起作用,但您可能会在将来给自己带来一大堆麻烦。
建议将文件夹分开。我的问题是,我不想将 hg 文件夹的默认文件夹名称作为 Perforce 客户端规范名称 - 如果您不提供目标文件夹,它就会这样做。但是,可能由于错误,如果您确实提供了目标文件夹,那么它必须与客户端规范根匹配。由于这种行为,我认为这些文件夹实际上必须是相同的。
在 Mercurial 中,创建存储库后可以安全地重命名顶级文件夹。因此,如果您不希望名称由 Perforce 客户端规范的名称决定,那么您可以稍后重命名。这就是我采取的方法。
希望这可以帮助其他尝试尝试 Mercurial 水域的人。
更新 Frank 更新了 Perfarce 扩展以更好地捕获这种情况。从Perfarce 存储库获取最新信息。
| 归档时间: |
|
| 查看次数: |
295 次 |
| 最近记录: |