我们有一个从互联网下载的代码库(GitHub存储库(。更新过程如下:
- p4检出现有版本
- 从互联网下载新版本并从旧版本上提取
- p4还原未更改的文件
- p4提交更改
这种方法的问题是,下载的repo中不存在的文件(从GitHub repo中删除(仍然存在于文件系统中,并被视为未更改。恢复未更改的文件将恢复它们并保留在仓库/工作区中。这对于Java文件来说是一个特别的问题,因为我们通过指定根文件夹进行编译。剩余的文件在新的源中未被引用,但您看不到它。
p4 clean
具有-d选项
已删除的文件:在仓库中查找工作区中不存在的文件,并将其添加到工作区。
但我正在寻找相反的
在工作区中查找仓库中不存在的文件,然后从仓库中删除。
如果从文件系统中删除整个文件夹结构,则工作区将不同步
如何查找/标记新文件夹结构中不存在的删除文件?
这是我为这个用例推荐的典型工作流程:
- 从一个空的工作区开始
- 将树的当前版本提取到工作区中
p4 flush
到要用作基础的修订版(如果您在Perforce侧没有对此分支进行任何更改,则可以使用默认的#head
(p4 reconcile
打开所有文件以执行相应操作p4 submit
详细说明步骤3:"基础"应该是两个树上次同步的任何修订版。如果这是一个单向操作,那么它总是最新的修订版(直接来自github(。如果您在两侧都进行更改,则应该在Perforce一侧为github导入设置一个单独的分支,并且仅将其用于导入;然后从那里单向合并到您的开发主线中,这样您就可以通过所有正确的历史跟踪来解决差异。