能否无需交付变更集,将其复制到同一流创建的另一工作区?
解决方案:无需公共流或手动复制的跨工作区变更迁移
绝对可以!不需要手动复制文件或者提交到公共流,有两个Perforce原生支持的方法,完全符合你的需求(无需创建自有流,仅在个人工作区之间同步部分变更):
方法1:使用搁置变更(Shelving)跨工作区同步(推荐)
搁置变更的好处是可以精准控制要同步的文件,还能临时保存变更状态,适合需要分步迁移的场景:
步骤1:在源工作区搁置目标变更
如果你的变更已经在一个未提交的变更集里,可以直接搁置部分或全部文件:# 搁置变更集1234中的指定文件 p4 shelve -c 1234 //depot/your/project/file1.txt //depot/your/project/utils/...如果是还没关联变更集的本地修改,先创建一个临时变更集:
p4 change -o | p4 change -i # 创建新变更集,记下返回的变更集号 p4 shelve -c <新变更集号> <要同步的文件路径>步骤2:切换到目标工作区
用以下命令快速切换工作区上下文(也可以通过Perforce客户端UI直接切换):p4 set P4CLIENT=<你的目标工作区名称>步骤3:在目标工作区取消搁置指定文件
只同步你需要的文件,避免引入不必要的变更:# 从变更集1234中取消搁置指定文件到当前工作区 p4 unshelve -s 1234 -f //depot/your/project/file1.txt这里
-f参数可以强制覆盖目标工作区中已有的本地修改(如果确认不需要保留的话),用-n可以先预览会同步哪些文件。步骤4:完成同步后(可选)
你可以选择删除源工作区的搁置变更(如果不再需要):p4 shelve -d -c 1234 <文件路径>
方法2:使用p4 copy直接跨工作区复制变更
这个方法更直接,无需中间搁置步骤,适合一次性同步特定版本的文件:
步骤1:切换到目标工作区
先确保当前上下文是目标工作区:p4 set P4CLIENT=<你的目标工作区名称>步骤2:执行跨工作区复制
直接从源工作区的本地版本复制到目标工作区:# 复制源工作区中所有本地修改的文件到目标工作区 p4 copy //client/<源工作区名称>/...#have //client/<目标工作区名称>/...如果你只想复制某个变更集的内容,可以指定变更集号:
p4 copy //client/<源工作区名称>/...@=<变更集号> //client/<目标工作区名称>/...步骤3:处理冲突并确认
执行p4 resolve处理可能的文件冲突,然后用p4 submit提交到目标工作区的变更集(如果需要),或者保持本地修改状态。
内容的提问来源于stack exchange,提问作者Dmitry Grigoryev
相关产品推荐
相关产品推荐

