说我在我们的代码库的创建Perforce公司的一个分支。下面是分支规格:

//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

现在,让我们说一些变化是由主到A.TXT,我想在分支已经集成到b.txt

当我尝试使用原来的分支规范整合,它不反映所做的主要以A.TXT到b.txt的变化 - 有什么办法,以在主显示了在重命名的文件所做的更改?

在分支规范是相当大的(数百个变更)和相当多的文件,在该分支被改变了,所以我想有一个自动化的方式来做到这一点。让我知道如果我能在这里澄清什么 - 这将有助于有一个白板;)

谢谢! 萨姆

有帮助吗?

解决方案

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.

您可以添加重命名到分支规范。然后至少在积分将是自动的 - 即使分支规格将会更长,更复杂

其他提示

您可以添加“3”切换到使用新引擎的整合,这将检测到已经与“P4移动”以前移动的目标文件,并自动“重新定位”本身遵循 这些移动操作。

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

将变更整合//depot/code/main/a.txt到//depot/code/branch/b.txt。

这是在当前2010.2释放的“UNDOC”功能,但将在即将到来的2011.1的默认行为。

据我所知,只有这样,才能有Perforce公司处理这对你是使用分支规范在原有的旧文件映射到分支的新文件。也许已经在最近Perforce的版本,以与新移动命令改变了,但我已经经历过。

您可以写一个脚本分支规范使用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;'

这会发现//库/书籍的所有文件/ ...在变化中感动的是91212或更高版本

有关我们,在此输出看起来像

//仓库/书籍/跳回到bar.txt //depot/books/foo.txt

使用它制作一个分支的规范。

我不这么认为。由于没有直接的p4 rename,你必须整合和删除 - 一旦你做到了这一点,从另一个分支集成不再去正确的文件。至少这是我的经验。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top