【问题标题】:How to get --detect-branches to work with git-p4?如何让 --detect-branches 与 git-p4 一起工作?
【发布时间】:2023-03-12 15:12:08
【问题描述】:

我的 p4 存储库的结构类似于:

//depot/project/branch1
//depot/project/branch2
//depot/project/branch3
... etc

但是,当我使用git-p4 克隆“项目”时,所有 3 个分支都不被视为分支,并且都被克隆到单个 master 分支中。

这就是我调用git-p4的方式:

git-p4 clone --detect-branches //depot/project

我期待git-p4 为“project”创建一个具有三个分支的 git 数据库,并且项目的根目录将映射到分支名称之后的路径部分(例如:如果 @987654327 @ 有一个名为“lib”(//depot/project/branch1/lib)的子目录,那么我的本地文件系统应该类似于带有 3 个 git 分支的 /git_project/lib)。

我的预期错了吗?我是否错误地调用了git-p4

【问题讨论】:

  • 你有过运气吗,迈克尔?即使使用许多网站上描述的分支规范,我也遇到了很多麻烦。

标签: git perforce git-p4


【解决方案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 仓库的分支。

所以也许git-p4 clone //depot/project@all --detect-branches 会很好(@all 在这个SO answer 中,以及在回购路径之后的--detect-branches 选项)?

话虽如此,如果脚本不够聪明,无法管理它,可能更简单的解决方案是运行 3 次,每个分支运行一次,然后将结果导入到一个 Git 存储库中。

【讨论】:

  • 我尝试了“@all”。但是,也许由于仓库其他部分的括号而无法正常工作?下面输出中提到的分支不驻留在我试图克隆的仓库的一部分(它更高)。 (我用“PROJECT”和“USER”掩盖了项目名称和用户名)
  • 在 /cygdrive/c/projects/PROJECT/.git/ /bin/sh 中初始化空 Git 存储库:-c:第 0 行:意外标记附近的语法错误 (' /bin/sh: -c: line 0: p4 -G 分支 -o dev_OtherProject(ASP.Net)_USER' 正在导入修订版 181332 (0%) 正在导入新分支 PROJECT/Main/dotNet 更改 181332 致命:引用名称或 SHA1 表达式无效:refs/remotes/p4/PROJECT/Delivery/dotNet 快速导入: 将崩溃报告转储到 .git/fast_import_crash_1832 不会运行 3 次,每个分支一个,创建 3 个 git 存储库?我认为 git-p4 clone 总是创建一个新的存储库。
【解决方案2】:

我刚刚使用--detect-branches 解决了一个相关的错误。该脚本做了一些事情:

  1. 使用 p4 数据检测分支名称
  2. 创建每个分支的父级映射
  3. 将文件映射到特定分支
  4. 在提交到 git 之前删除分支前缀

您必须遵循代码以确保每个步骤都正确完成。使用pdb 来做到这一点就足够了。

第 1 步和第 2 步在 P4Sync.getBranchMapping 中完成

第三步在P4Sync.splitFilesIntoBranches完成

对于第 4 步。这是通过 P4Sync.stripRepoPath 完成的。在那里设置一个断点,你可以查看是否检测到分支,文件是否被正确重命名。

【讨论】:

    猜你喜欢
    • 2011-12-02
    • 2011-05-31
    • 1970-01-01
    • 2023-02-02
    • 2017-06-25
    • 2020-12-13
    • 2012-02-02
    • 2011-02-22
    • 2013-03-24
    相关资源
    最近更新 更多