我在Perforce中有一个分支,我已经检查了几千个文件的更改,然后稍后将更改退回到大约一半的文件 - 所以分支上的一些文件的最新版本没有改变基线,但有中间修改和变化。
在许多情况下,同时主线也出现了合并,因此历史记录稍微复杂一些,但最终的结果是没有内容更改可以合并回主线。
我现在想将该分支合并到主线,但我不想检查最终未在分支上修改的文件的“null”更改。
通常情况下,可以避免在p4v中使用“恢复未更改的文件”来检查未更改的文件,但在这种情况下,它不会还原文件,因为它认为需要签入文件以更新集成记录。 p4 revert
的帮助确认了这一点:
-a标志仅还原打开以进行编辑或集成的文件 并且没有变化或缺失。 包含待处理集成记录的文件 保持打开状态。当指定-a时,文件参数是可选的。
有什么方法可以避免检查这些文件而不经过它们一个接一个?我很乐意在分支上做任何必要的事情,我不会太担心它会导致未来合并到分支,因为我将在合并后很快放弃它。
答案 0 :(得分:2)
如果您要恢复没有不同内容的文件(即,唯一的更改是更新集成记录),您可以执行类似此批处理文件的操作(如果需要转换为shell脚本,则需要转换为shell脚本在Linux上运行):
for /f "tokens=2 delims=# " %%x in ('p4 diff -Od //depot/path/you/care/about/... 2^>nul ^| findstr /c:"//depot"') do (
p4 revert %%x
)
我们在工作中使用类似的东西,因为我们有许多标记为+ l的文件,如果我们正在进行需要一段时间验证的集成,那么需要处理这些文件的人就会被锁定。
答案 1 :(得分:1)
假设已恢复的更改实际上已检入分支,然后退出,我的建议是(使用极端警告)删除已恢复的文件的两个修订版(初始更改,以及将其恢复到初始状态的更改)。我认为会阻止它们合并回主线。
我强烈建议您在测试分支上测试一下,然后再在现场分支上进行测试。