我的p4存储库的结构类似于:
//depot/project/branch1
//depot/project/branch2
//depot/project/branch3
... etc
但是,当我使用git-p4
克隆“项目”时,所有3个分支都不被视为分支,并且所有分支都被克隆到单个主分支中。
我正在调用git-p4
:
git-p4 clone --detect-branches //depot/project
我期待git-p4
为具有三个分支的“project
”创建一个git数据库,并且项目的根将映射到分支名称后面的路径部分(例如:如果//depot/project/branch1
有一个名为“lib
”(//depot/project/branch1/lib
)的子目录,那么我的本地文件系统应该是/git_project/lib
,带有3个git分支。)
我怀疑错了吗?我是否错误地调用了git-p4
?
答案 0 :(得分:1)
如果你看git-p4 code(也是originally here),你会看到:
if self.detectBranches:
branches = self.splitFilesIntoBranches(description)
for branch in branches.keys():
## HACK --hwn
branchPrefix = self.depotPaths[0] + branch + "/"
splitFilesIntoBranches
探索p4 repo for branches。
所以也许git-p4 clone //depot/project@all --detect-branches
会很好(在SO answer中使用@all,在repo路径后使用--detect-branches
选项)?
话虽如此,如果脚本不够智能来管理它,可能更简单的解决方案是运行3次,每个分支一个并将结果导入一个Git仓库。
答案 1 :(得分:0)
我刚刚与--detect-branches
处理了相关的错误。该脚本做了一些事情:
您必须按照代码确保每个步骤都正确完成。使用pdb
执行此操作非常有效。
步骤1和2在P4Sync.getBranchMapping
第3步在P4Sync.splitFilesIntoBranches
对于第4步,这是使用P4Sync.stripRepoPath
完成的。在那里设置一个断点,你可以看到是否检测到分支并正确地重命名文件。