14

假设我在我们的代码库中创建了一个分支。这是分支规范:

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

然后,在分支中,假设我使用移动分支文件 a.txt -> b.txt

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

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

当我尝试使用原始分支规范进行集成时,它不会将 main 中的 a.txt 更改反映到 b.txt 上 - 有没有办法让 main 中的更改显示在重命名的文件中?

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

谢谢!山姆

4

6 回答 6

12

您可以添加“-3”开关以使用新引擎进行集成,该引擎将检测先前使用“p4 move”移动的目标文件,并自动“重新定位”自身以遵循这些移动操作。

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

会将您在 //depot/code/main/a.txt 中的更改整合到 //depot/code/branch/b.txt。

这是当前 2010.2 版本中的“取消文档”功能,但将是即将到来的 2011.1 中的默认行为。

于 2011-10-31T09:49:43.817 回答
3

Perforce 2009.1 有适当的重命名,这可能有助于解决这个问题 - 可能,并且无论如何仅用于将来的重命名。请参阅Perforce 2009.1 发行说明,特别是:

#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.

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

于 2009-12-11T22:50:20.147 回答
3

我知道让 Perforce 为您处理此问题的唯一方法是使用分支规范将原始文件中的旧文件映射到分支中的新文件。也许最近 Perforce 版本中的新移动命令改变了这种情况,但我没有经历过。

于 2009-12-12T16:29:57.313 回答
2

您可以使用 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

使用它来制作分支规范。

于 2011-04-26T14:00:05.467 回答
1

我不相信。由于没有 direct p4 rename,您必须集成和删除 - 一旦您这样做了,从另一个分支集成不再转到正确的文件。至少这是我的经验。

于 2009-12-11T20:43:34.277 回答
0

p4 move首先,我使用命令将文件移动到目标分支中。然后,我整合了它。

p4 move //depot/code/**main**/a.txt //depot/code/**main**/b.txt

p4 integrate  //depot/code/**branch**/b.txt //depot/code/**main**/b.txt
于 2021-06-28T10:00:10.560 回答