我的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分支的/git_project/lib )。
我所期待的是错误的吗?我是否错误地调用了git-p4?
发布于 2010-04-30 01:10:49
如果你看一下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代码库。
所以也许git-p4 clone //depot/project@all --detect-branches就可以了(在这个SO answer中使用@all,在repo路径之后使用--detect-branches选项)?
也就是说,如果脚本不够智能,可能更简单的解决方案是运行3次,每个分支一次,然后将结果导入一个Git代码库。
发布于 2012-08-18 12:43:46
我刚刚在--detect-branches上处理了一个相关的bug。这个脚本做了几件事:
之前删除分支前缀
您必须按照代码进行操作,以确保每个步骤都正确完成。使用pdb可以很好地完成这项工作。
步骤1和2是在P4Sync.getBranchMapping中完成的
步骤3在P4Sync.splitFilesIntoBranches中完成
对于步骤4,这是通过P4Sync.stripRepoPath完成的。在那里设置一个断点,您可以查看是否已检测到分支以及是否正确地重命名了文件。
https://stackoverflow.com/questions/2737999
复制相似问题