代码之家  ›  专栏  ›  技术社区  ›  SamBeran

在性能中集成移动的文件

  •  14
  • SamBeran  · 技术社区  · 16 年前

    假设我在代码库的性能方面创建了一个分支。以下是分支规范:

    //depot/code/main/... //depot/code/branch/...
    

    然后,在分支中,假设我使用

    p4 integrate //depot/code/branch/a.txt //depot/code/branch/b.txt
    p4 delete //depot/code/branch/a.txt
    

    现在,假设对a.txt进行了一些更改,我希望将其集成到分支中的b.txt中。

    当我尝试使用原始分支规范进行集成时,它不会反映在B.txt中对main中a.txt所做的更改-是否有任何方法使在main中所做的更改显示在重命名的文件中?

    分支规范相当大(数百次更改),并且在分支中重命名了相当多的文件,所以我希望有一种自动化的方法来实现这一点。如果我能在这里澄清任何事情,请告诉我——有一个白板会有所帮助;)

    谢谢! 山姆

    5 回复  |  直到 14 年前
        1
  •  3
  •   Douglas Leeder    16 年前

    Perforce 2009.1有适当的重命名,这可能有助于实现这一点,而且在任何情况下都只能用于将来的重命名。见 Perforce 2009.1 release notes 特别是:

    #177023 * **
        The new 'p4 move' command allows for better support for
        renaming files.  A file must be already opened for 'edit'
        or 'add' in order to be moved.  Moved files can be synced,
        resolved and diffed against the repository just like files
        opened for 'edit'.  See 'p4 help move' for more info.
    

    您可以将重命名添加到分支规范中。那么至少集成将是自动的-即使分支规范将变得更长、更复杂。

        2
  •  11
  •   Alex Che    14 年前

    您可以添加“-3”开关以使用新的集成引擎,该引擎将检测以前使用“p4 move”移动的目标文件,并自动“重定目标”以跟踪 那些移动操作。

    p4 integrate -3 //depot/code/main/... //depot/code/branch/...
    

    将您在//depot/code/main/a.txt中的更改集成到//depot/code/branch/b.txt中。

    这是当前2010.2版本中的“undoc”功能,但将是即将发布的2011.1中的默认行为。

        3
  •  3
  •   Caleb Huitt - cjhuitt    16 年前

    我知道让Perfoce为您处理这个问题的唯一方法是使用分支规范将原始文件中的旧文件映射到分支中的新文件。在最近的performance版本中,也许这已经随着新的move命令而改变了,但这并不是我所经历的。

        4
  •  2
  •   Olle Hallin    15 年前

    您可以使用p4 fstat的输出编写分支规范的创建脚本,以处理移动的文件。

    以下列内容为起点:

    ROOT_PATH="//depot/books/..."
    FIRST_CHANGE=91212
    
    p4 fstat -Os -T headChange -F "headAction=move/* headChange>$FIRST_CHANGE" $ROOT_PATH|grep headChange | sort -u|while read DUMMY1 DUMMY2 change; do p4 describe $change; done|grep "moved from"|sed 's/\.\.\./\t/g; s/\#[0-9]*//g; s/ moved from//g;'
    

    这将在//depot/books/中找到所有文件。在91212号或更晚的地方

    对于我们来说,这个输出看起来像

    //depot/books/bar.txt//depot/books/foo.txt

    使用它来绘制分支规范。

        5
  •  1
  •   Graeme Perrow    16 年前

    我不相信。因为没有直接的 p4 rename ,您必须集成和删除-完成后,从另一个分支集成将不再转到正确的文件。至少这是我的经验。