Perforce 和 PhpStorm/WebStorm:默认更改列表中搁置的文件消失

Perforce and PhpStorm/WebStorm: shelved files from default changelist disappear

我刚刚开始学习如何使用 Perforce 进行版本控制,所以我对其流程的了解很薄弱。 PhpStorm 2017 是我的 IDE.

我希望尽可能多地使用 IDE 进行版本控制操作,所以我成功地将 IDE 链接到 Perforce 客户端 (instructions)。我创建了一些文件,在 P4V 中,它们出现在默认待定更改列表中。完成后,我在 PhpStorm 中选择 "Menu bar >> VCS >> Shelve changes..." 希望看到文件移动到 Perforce 的更改列表中的架子上。

相反,据我所知,这些文件已经消失了。它们已从 OS 文件夹结构中消失,并且不会出现在 Perforce 的默认更改列表或任何架子中。

我需要帮助弄清楚:

首先我需要了解几个概念:

PhpStorm 提供了自己的 shelve/unshelve functionality,独立于任何版本控制系统

找不到我的文件,因为“主菜单 >> VCS >> 搁置更改...”将它们放在 IDE 的搁置中,而不是Perforce的。 IDE 的书架在 <project-root>/.idea/shelf

里面

被搁置的是自上次提交以来的一组更改,而不是文件本身

这导致我产生了根本性的误解。我以为我的文件丢失了,因为我在 OS 文件夹中看不到它们,但丢失的是对这些文件所做的 更改 。这是因为文件是新的——因此更改由整个文件组成——看起来好像文件本身丢失了。

我搁置时实际发生了什么:文件被回滚到它们之前提交的状态(在我的情况下不存在),并且更改被保存在搁置上

所有 shelving/unshelving 都可以从版本控制工具访问 window

Alt + 9 调出此工具 window。当项目被搁置时,会有一个 Shelf 选项卡。从那里,我能够看到变化,并将它们取消搁置。这样我就找回了我的文件!

Perforce Shelf 可作为单独的菜单项访问

打开版本控制工具 window 和 select“本地更改”选项卡。在该选项卡中右键单击更改的文件后可见的一个上下文选项是“搁置更改...”。这等同于我最初所做的,它会将 文件 更改放入 IDE 的架子中。当 Perforce 集成到 IDE 项目中时,我真正想要的选项显示为:“Shelve in Perforce...

此选项会将 files 更改放入 Perforce 架子(在 Perforce 服务器上)并将工作目录回滚到上次提交状态。这些更改在版本控制工具的 "Shelf" 选项卡中不可见(因为此选项卡仅显示 IDE 工具架)。要浏览 Perforce 架子,转到工具的“Local Changes”选项卡,右键单击相应的 Perforce 更改列表——看起来像 <LIST-NAME> - Perforce #<LIST-NUMBER>; x shelved changes——和 select "浏览 Perforce 货架..."