Merge 如何从合并中删除分支上更改后又恢复的文件

Merge 如何从合并中删除分支上更改后又恢复的文件,merge,perforce,Merge,Perforce,我在Perforce中有一个分支,我在该分支上签入了对数千个文件的更改,然后又将这些更改备份到了其中大约一半的文件—因此分支上某些文件的最新版本与基线相比没有变化,但存在带更改的中间版本 在许多情况下,同时也有来自主线的外部合并,因此历史稍微复杂一些,但最终的结果是没有内容更改可以合并回主线 现在我想将该分支合并到主线,但我不想签入对最终未在分支上修改的文件的“null”更改 通常,可以使用p4v中的“还原未更改的文件”来避免签入未更改的文件,但在这种情况下,它不会还原文件,因为它认为需要签入文

我在Perforce中有一个分支,我在该分支上签入了对数千个文件的更改,然后又将这些更改备份到了其中大约一半的文件—因此分支上某些文件的最新版本与基线相比没有变化,但存在带更改的中间版本

在许多情况下,同时也有来自主线的外部合并,因此历史稍微复杂一些,但最终的结果是没有内容更改可以合并回主线

现在我想将该分支合并到主线,但我不想签入对最终未在分支上修改的文件的“null”更改

通常,可以使用p4v中的“还原未更改的文件”来避免签入未更改的文件,但在这种情况下,它不会还原文件,因为它认为需要签入文件以更新集成记录。
p4还原的帮助确认了这一点:

-a标志仅还原打开进行编辑或集成的文件 和未更改或丢失具有挂起的集成记录的文件 保持打开状态。当指定-a时,文件参数是可选的


有没有什么方法可以避免在不逐个检查的情况下签入这些文件?我很乐意在分支上做任何必要的事情,我也不太担心它会导致将来的分支合并,因为我将在这次合并后很快放弃它。

假设恢复的更改实际上已签入分支,然后退出,我的建议是(使用极端小心)删除恢复的文件的两个修订版(初始更改和将其恢复到初始状态的更改)。我认为这应该可以防止他们重新融入主线


我强烈建议在您的实时分支上尝试之前,先在测试分支上进行测试。

假设还原的更改实际上已签入该分支,然后退出,我的建议是(使用极端小心)删除还原文件的两个修订版(初始更改,以及将其恢复到初始状态的更改)。我认为这应该可以防止它们重新合并到主线中


我强烈建议在您的实时分支上尝试之前,先在测试分支上进行测试。

假设还原的更改实际上已签入该分支,然后退出,我的建议是(使用极端小心)删除还原文件的两个修订版(初始更改,以及将其恢复到初始状态的更改)。我认为这应该可以防止它们重新合并到主线中


我强烈建议在您的实时分支上尝试之前,先在测试分支上进行测试。

假设还原的更改实际上已签入该分支,然后退出,我的建议是(使用极端小心)删除还原文件的两个修订版(初始更改,以及将其恢复到初始状态的更改)。我认为这应该可以防止它们重新合并到主线中


我强烈建议在您的实时分支上尝试之前在测试分支上进行测试。

如果您希望恢复没有不同内容的文件(即,唯一的更改是更新集成记录),您可以执行类似于此批处理文件的操作(如果在Linux上运行,则需要转换为shell脚本):


我们在我工作的地方使用了类似的方法,因为我们有许多标记为+l的文件,如果我们进行的集成需要一段时间来验证,则需要处理这些文件的人员将被锁定。

如果您希望恢复没有不同内容的文件(即,唯一的更改是更新集成记录)您可以执行类似于此批处理文件的操作(如果在Linux上运行,则需要转换为shell脚本):


我们在我工作的地方使用了类似的方法,因为我们有许多标记为+l的文件,如果我们进行的集成需要一段时间来验证,则需要处理这些文件的人员将被锁定。

如果您希望恢复没有不同内容的文件(即,唯一的更改是更新集成记录)您可以执行类似于此批处理文件的操作(如果在Linux上运行,则需要转换为shell脚本):


我们在我工作的地方使用了类似的方法,因为我们有许多标记为+l的文件,如果我们进行的集成需要一段时间来验证,则需要处理这些文件的人员将被锁定。

如果您希望恢复没有不同内容的文件(即,唯一的更改是更新集成记录)您可以执行类似于此批处理文件的操作(如果在Linux上运行,则需要转换为shell脚本):


我们在我工作的地方使用了类似的方法,因为我们有许多标记为+l的文件,如果我们正在进行需要一段时间才能验证的集成,则需要处理这些文件的人员将被锁定。

当您还原更改时,您是指您实际签入更改,然后将其备份并签入ag吗是的。我已经编辑了这个问题使之更清楚。许多人认为检查这些零用的更改是值得的,因为它们实际上不是空的。它们是开发分支中中间活动的记录,尽管最终对这些文件的内容没有作出任何改变,但仍然表示有效的MIDE。更新文件的状态,因此值得记录在集成历史记录中,以表明您已经
for /f "tokens=2 delims=# " %%x in ('p4 diff -Od //depot/path/you/care/about/... 2^>nul ^| findstr /c:"//depot"') do (
    p4 revert %%x
)