【问题标题】:What is the git equivalent of perforce branch mapping?perforce 分支映射的 git 等价物是什么?
【发布时间】:2015-12-20 19:40:53
【问题描述】:

Perforce 有一个 branch mapping 的概念,您只需在其中定义不同路径之间的映射。

您可以保存以下分支映射

//depot/proj1/path1/... //depot/proj1/path1-renamed/...

完成此映射后,可以在两个分支中继续开发,并且可能会不时发生基于映射的合并。

在 git 中我有类似的“重命名”和独立的分支开发,但我仍然想不时将更改从一个分支合并到另一个分支。

#desired in git
//https://github.com/mucommander/mucommander-commons-io/tree/master/src/main/java/com/mucommander/commons/io //https://github.com/mucommander/mucommander-commons-io/tree/master/src/main/java/com/mucommander/commons/io2

我该怎么做? git 中的 perforce 分支映射等价物是什么?

【问题讨论】:

  • Git 中没有等效的行为。您可能需要一个符号链接。
  • 我没想到会这样。我正在研究在集成到主服务器之前和之后使用重命名的解决方案。基本上我将映射创建为一组git mv <path1> <path2>
  • 我确实理解你想要做什么,而且我能告诉你的是,我不相信 Git 支持这一点。您应该将 path2 符号链接到 path1 并进行更改。
  • 符号链接的问题是我无法将历史从一个分支共享到另一个分支。通过重命名后合并,我可以获得历史记录以及一些关于来回重命名的不需要的细节。如果并且当我有一个可行的解决方案时,我会将其描述为一个答案。谢谢@meagar
  • 如果你只想拥有 path1 和 path1-rename 只需创建一个分支并重命名目录(新分支中的 git mv)。

标签: git perforce branching-and-merging


【解决方案1】:

我认为在 Git 中你会创建另一个分支。所以你会有两个分支,ioio2,而不是一个分支下的两个目录。

为了保持两者之间的关系,您可以使用 git branch--track kid parent 从 io 创建 io2。

【讨论】:

    【解决方案2】:

    如果path1path1-renamed 应该是实际路径,那么它们具有相同内容的事实应该通过共享文件的单个符号链接或多个符号链接来反映(如果可能存在小的差异)。

    在 git 级别没有“合并”目录的感觉。您只需以任何方式“同步”它们(例如复制、符号链接等)并提交结果。

    【讨论】:

    • 我想merge他们,因为我修改了path1/A.java,而其他人修改了path2/A.java。我想合并在另一个分支中所做的更改,因为我知道在某些时候他们将 path1 重命名为 path2 并且 A.java 实际上对我们俩来说是同一个工作单元。
    • 在这里提供替代方案,因为在 git 中似乎无法实现您想要的:如果它们只是重命名(并且没有保留原始副本),那么您可以将它们重新定位在您的分支之上,最终使用您的更改,然后是他们的更改,并在两者之间重命名,然后重命名以恢复顺序。
    猜你喜欢
    • 2017-11-13
    • 2021-08-26
    • 1970-01-01
    • 1970-01-01
    • 2017-05-30
    • 1970-01-01
    • 1970-01-01
    • 2013-05-01
    • 1970-01-01
    相关资源
    最近更新 更多