首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >git-p4 sync不工作-神秘的堆栈跟踪

git-p4 sync不工作-神秘的堆栈跟踪
EN

Stack Overflow用户
提问于 2010-04-28 02:56:46
回答 2查看 1.8K关注 0票数 0

我正在尝试使用git-p4来克隆perforce depot。我一直在git-p4脚本中遇到问题,git-p4尝试访问未定义的dict键并抛出跟踪。

代码语言:javascript
复制
[~/p4/prod@ernie02] (master) $ 
git p4 sync --verbose --use-client-spec //depot/prod/
Reading pipe: git config git-p4.user
Reading pipe: git config git-p4.password
Reading pipe: git config git-p4.port
Reading pipe: git config git-p4.host
Reading pipe: git config git-p4.client
p4 -u mkramer -c mkramer -G client -o
Opening pipe: p4 -u mkramer -c mkramer -G client -o
None
Doing initial import of //depot/prod/ from revision #head into refs/remotes/p4/master
p4 -u mkramer -c mkramer -G files //depot/prod/...#head
Opening pipe: p4 -u mkramer -c mkramer -G files //depot/prod/...#head
commit into refs/remotes/p4/master
p4 -u mkramer -c mkramer -G -x - print
Opening pipe: p4 -u mkramer -c mkramer -G -x - print
p4 -u mkramer -c mkramer -G users
Opening pipe: p4 -u mkramer -c mkramer -G users
Traceback (most recent call last):
  File "/home/mkramer/git/bin/git-p4", line 1922, in <module>
    main()
  File "/home/mkramer/git/bin/git-p4", line 1917, in main
    if not cmd.run(args):
  File "/home/mkramer/git/bin/git-p4", line 1651, in run
    self.importHeadRevision(revision)
  File "/home/mkramer/git/bin/git-p4", line 1461, in importHeadRevision
    self.commit(details, self.extractFilesFromCommit(details), self.branch, self.depotPaths)
  File "/home/mkramer/git/bin/git-p4", line 1063, in commit
    data = file['data']
KeyError: 'data'

我进入脚本并在此时打印出了文件dict,并获得了更多细节,为了清晰和匿名,我将对其进行修改。错误的判决书如下所示:

代码语言:javascript
复制
{'action': 'move/delete', 'path': '//depot/prod/foo/bar', 'rev': '3', 'type': 'xtext'}

我的p4客户端如下所示:

代码语言:javascript
复制
Client: mkramer
Update: 2010/04/27 14:46:10
Access: 2010/04/27 14:51:29

Owner:  mkramer
Description:
        Created by mkramer.
Root:   z:\p4
AltRoots:
        z:\p4
        /home/mkramer/p4
Options:        noallwrite noclobber nocompress unlocked nomodtime normdir
SubmitOptions:  submitunchanged
LineEnd:        share
View:

        //depot/prod/... //mkramer/prod/...
        -//depot/.../foo/... //mkramer/.../foo/...

如您所见,有问题的dict是一个在我的客户机视图中不存在的文件。我相信这就是问题的根源。但是,我显然使用--use-client-spec来运行该命令。我也尝试过git config git-p4.useclientspec true,详细的输出让它看起来像是把我的视图从

代码语言:javascript
复制
Opening pipe: p4 -u mkramer -c mkramer -G client -o.  

如果我运行p4 -u mkramer -c mkramer client -o,我会看到正确的视图。

如果我运行p4 -u mkramer -c mkramer files //depot/prod/...#head,我看到的文件不在我的视图中。

我的软件版本:

代码语言:javascript
复制
[~/p4/prod@ernie02] (master) $ p4 -V
Perforce - The Fast Software Configuration Management System.
Copyright 1995-2009 Perforce Software.  All rights reserved.
Rev. P4/LINUX26X86_64/2009.1/205670 (2009/06/29).
[~/p4/prod@ernie02] (master) $ git --version
git version 1.7.0.5
[~/p4/prod@ernie02] (master) $ python -V
Python 2.6.5
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-05-13 06:17:49

我们自己也遇到了这个问题。P4去年似乎添加了一些git-p4不完全支持的新命令;特别是“移动/删除”和“移动/添加”。

为了解决这个问题,我们更改了代码行:

代码语言:javascript
复制
if file["action"] in ("delete", "purge"):

至:

代码语言:javascript
复制
if file["action"] in ("delete", "purge", "move/delete"):

到目前为止,这对我们来说是有效的,但我不会断言这一定是一个健壮的修复。

票数 3
EN

Stack Overflow用户

发布于 2010-06-09 21:56:25

这是一个使用rbergman提供的补丁在git-p4的最新版本中修复的错误。有关更多详细信息,请参阅http://git.kernel.org/?p=git/git.git;a=commit;h=562d53fa69933b3ade2691b99cbe67722313f43c;此修补程序可能出现在后来的1.6.x版本中,并且肯定是在1.7.x版本的git中。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2724118

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档