Perforce:将搁置的文件从工作区移动到备份

时间:2013-02-13 15:18:17

标签: backup perforce shelve unshelve

我有一些旧的搁置文件在长期待定的Perforce变更列表中,我可能永远不会提交。我想摆脱那些变更列表,因为它们污染了我的空间,但我不想失去一切,以防我有一天需要这些,所以我需要备份。

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

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

修改

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

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

4 个答案:

答案 0 :(得分:5)

扩展威廉姆斯的帖子,我建议你创建另一个工作区,不要同步,而是存储你的搁置变更列表!

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

如果您想要查看货架上的内容,只需在“待处理”选项卡顶部展开过滤器,然后点击工作区行上的小圆圈X,perforce将显示所有更改列表,浏览并取消搁置到当前工作区。

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

答案 1 :(得分:3)

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

p4 describe -S -du CHANGE > CHANGE.patch

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

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

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

+++ //depot/path/file

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

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

答案 2 :(得分:2)

如何使用适当的映射创建临时工作空间,并将根目录放在您希望文件结束的位置,然后切换到该工作空间并取消搁置它们。这样就不会有任何冲突。

答案 3 :(得分:2)

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

有时候,我在服务器上创建一个单独的分支,而不是制作架子;它可以是稀疏分支,仅包含我的架子中的文件。然后我将我的搁置文件提交给稀疏分支。

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