我正在使用git-p4在本地使用git并尝试将我的更改提交回 perforce服务器。它提交的更改回到我没有做的服务器。
我设置了一个客户端,以便它包含客户端中的所有库依赖项 (遵循Using git-p4 to setup a git clone of a perforce client中的建议)
//depot/libA/... //workspace/libA/...
//depot/libB/... //workspace/libB/...
但是对于主线源,我在工作区目录中执行以下操作:
git-p4 clone //depot/my_project
这会在工作区中创建并填充my_project目录。
因此src中的代码可以引用库。
问题是,当我执行git-p4 rebase时,我收到以下错误:
$git-p4 rebase
Traceback (most recent call last):
File "/home/user/bin/git-p4", line 2362, in <module>
main()
File "/home/user/bin/git-p4", line 2357, in main
if not cmd.run(args):
File "/home/user/bin/git-p4", line 2051, in run
sync.run([])
File "/home/user/bin/git-p4", line 2004, in run
changes = self.p4.p4ChangesForPaths(self.depotPaths, self.changeRange)
File "/home/user/bin/git-p4", line 232, in p4ChangesForPaths
assert depotPaths
AssertionError
当我执行git-p4提交时(在我进行单一更改并执行git commit -a -m“test”之后):
$ git-p4 submit --verbose
Reading pipe: git name-rev HEAD
Reading pipe: git config git-p4.allowSubmit
Reading pipe: git rev-parse --symbolic --remotes
Reading pipe: git rev-parse p4/master
Reading pipe: git notes --ref=git-p4 show 6b75260b956cb72102014783fcfcb2e0da6eb637
Reading pipe: git notes --ref=git-p4 show HEAD~0
Reading pipe: git notes --ref=git-p4 show HEAD~1
Reading pipe: git notes --ref=git-p4 show HEAD~2
Reading pipe: git notes --ref=git-p4 show HEAD~3
.....
它需要永远(它是否要求服务器提供所有变更集??)并且失败并出现错误: 回溯(最近一次调用最后一次):
File "/home/user/bin/git-p4", line 2362, in <module>
main()
File "/home/user/bin/git-p4", line 2357, in main
if not cmd.run(args):
File "/home/user/bin/git-p4", line 1088, in run
self.depotPath = settings['depot-paths'][0]
KeyError: 'depot-paths'
我应该注意,我没有使用git config来设置任何git-p4选项 (https://git.wiki.kernel.org/index.php/Git-p4_Usage的维基似乎没有提及 这是必要的)。
答案 0 :(得分:2)
您的客户规格是否包含//depot/my_project/...
?
也许您可以将您的库放在一个客户端规范中,将您的项目放在另一个客户端规范中。
也许:
working/
project-git/
.perforce -> P4CONFIG with project-spec
<p4-git project checkout>
.perforce -> P4CONFIG with libs-spec
libraries
perforce/
.perforce -> P4CONFIG with project-spec
<p4 project checkout>