2

我在长期未决的 Perforce 更改列表中有一些搁置的旧文件,我可能永远不会提交。我想摆脱那些更改列表,因为它们污染了我的空间,但我不想丢失所有东西以防万一有一天我需要它们,所以我需要备份。

有没有办法将搁置的文件从更改列表移动到文件系统的某个位置?

将搁置的文件从 P4V 拖放到 Windows 资源管理器不起作用。命令行工具p4 unshelve似乎没有这样的选项。我还想避免在备份文件之前先取消搁置文件,因为如果这些文件已经通过编辑签出,这将意味着额外的麻烦。

编辑

阅读答案让我意识到我真正想要的是保持这种变更列表的安全,但远离视图(即远离我通常的工作区)。我不在乎它是在我的文件系统上还是在其他地方。所以我的问题实际上是:

有没有办法将搁置的文件从工作区移走以进行备份?

4

4 回答 4

6

扩展 Williams 的帖子,我建议您创建另一个工作区,而不是同步,而是存储搁置的更改列表!

为此,请从“连接”菜单中选择“创建新工作区”。取消选中“立即切换到新工作区”。使名称与当前工作空间相同,并附加诸如“-shelf”之类的后缀。任何根路径都可以,您将不需要它。现在只需选择要“收起”的更改列表,右键单击它们,选择“更改所有权”,输入新工作区名称的名称,它将转移到新工作区,您当前的工作区会很好整齐的。

如果您想查看架子上的内容,您可以简单地展开“待处理”选项卡顶部的过滤器,然后单击工作区行上的小圆圈 X,perforce 将向您显示所有更改列表,允许您浏览和取消搁置到当前工作区。

perforce 服务器是备份的最佳位置。Perforce 会跟踪每个搁置文件的基本修订版本,如果您将其移出 perforce,则此信息将丢失,可能会使以后的集成更加困难。

于 2013-02-18T05:35:11.617 回答
3

您可以从搁置的变更集中创建补丁文件并将补丁文件存储在本地:

p4 describe -S -du CHANGE > CHANGE.patch

如果您需要重新应用补丁,GNUpatch程序将不喜欢 Perforce 使用的文件标记,如下所示:

==== //depot/path/file#revision (type) ====

但你可以编写一个脚本来按摩它:

+++ //depot/path/file

(甚至首先将文件同步到指定的修订版)。

请注意,p4 describe遗憾的是没有列出添加或删除文件的差异,因此这仅适用于已编辑的文件。

于 2013-02-14T03:18:28.163 回答
2

如何使用适当的映射和根位于您希望文件结束的位置创建一个临时工作区,然后切换到该工作区并取消搁置它们。这样就不会有冲突了。

于 2013-02-13T16:35:27.933 回答
2

男孩,我认为将它们留在服务器中是一个很好的长期存储位置。我没有发现货架“污染了我的空间”;将它们保存在服务器中似乎是一种干净的方式来存储我想要记录但还没有准备好提交的实验工作。

有时,我不是做一个架子,而是在服务器上做一个单独的分支;它可以是一个稀疏的分支,只包含我书架上的文件。然后我将我搁置的文件提交到那个稀疏的分支。

无论哪种方式,我宁愿将部分完成的工作保存在服务器上,也不愿保存在工作站上的某个随机文件夹中。

于 2013-02-14T02:57:29.537 回答