Perforce变更列表和搁置命令

时间:2018-09-21 15:17:08

标签: perforce

我对Perforce还是陌生的,所以才开始使用它。 使用$ p4 sync命令同步代码后,我开始编辑一些文件。

  • $ p4编辑文件1
  • $ p4编辑文件2
  • $ p4编辑文件3

这些文件已添加到我的默认更改列表中。为了与我的团队合作,我想创建一个变更列表。为了创建更改列表,我运行了$ p4更改并从更改列表说明中删除了“ file1”。现在,当我运行$ p4时打开。它提供类似于此的输出。

  • // depot / ... / file1编辑默认更改(文本)
  • // depot / ... / file2编辑默认值111(text + k)
  • // depot / ... / file3编辑默认值111(text + k)

现在我心中有以下问题:

  • 我当前正在使用哪个变更列表,默认值为111还是??
  • (test + k)是什么意思?
  • 当我对file2和file3进行更改时,它将同步到更改列表111;当我对file1进行更改时,它将同步到默认更改列表。我非常困惑这是怎么回事?
  • 我还感到困惑的另一件事是,如果$ p4搁置我的更改会消失,并且仅当我对创建的更改列表运行unshelve命令时才会重新应用?这类似于git stash和git stash适用吗?

如果有人可以详细回答这些问题,那就太好了。对于Perforce的任何教程建议也将有很大帮助。

谢谢。

1 个答案:

答案 0 :(得分:1)

我对Perforce教程的建议是《 Perforce用户指南》。这是有关更改列表的部分:

https://www.perforce.com/perforce/r15.1/manuals/intro/chapter.working_in_perforce.html#working_in_perforce.working_with_files.changelists

  

我当前正在处理哪个变更列表,默认值为111还是??

都!这两个都是工作区中的待处理变更列表。

  

(text + k)是什么意思?

括号中的内容是“文件类型”。 +k是“文件类型修饰符”,表示提交时,关键字(此文件中的特殊单词,如$Id$$Revision$$Author$会自动扩展为适当的值。< / p>

  

当我对file2和file3进行更改时,它将同步到更改列表111;当我对file1进行更改时,它将同步到默认更改列表。我非常困惑这是怎么回事?

任何地方都尚未“同步”-挂起的更改列表只是引用不同文件的容器。当您shelvesubmit时,然后,与这些变更列表关联的文件将被发送到服务器,并且其他客户端可以访问。由于shelvesubmit是变更列表级别的操作,因此仅影响那些变更列表中的文件-这就是拥有不同的挂起变更列表的关键。您在工作区中拥有所有待处理的文件,但是您可以拆分在哪个时间将哪些文件发送到服务器(这有点像在git中推送不同的分支,但不是-您可以在Perforce中的每个操作上执行此操作即使您不进行分支,因为每个文件都是单独进行版本控制,而不是将整个树版本化为一个原子blob。)

  

我还感到困惑的另一件事是,如果$ p4搁置,我的更改将消失并且仅在我对创建的更改列表运行unshelve命令时重新应用?这类似于git stash和git stash适用吗?

否,p4 shelve仅将服务器上已搁置的更改与工作区中的本地文件同步-本身不会更改您的工作区。 “隐藏”的等效项是p4 shelve,然后是p4 revert,以清除工作区更改。 shelve本身有点像对分支执行git push -您保留本地副本,但现在它也在服务器上(但不属于“主”历史记录)。 (不过,这并不完全相同。老实说,如果您是Perforce的新手,我会坚持在常规的旧分支中进行常规的旧“提交”,因为这是基本的工作流程。通过书架共享工作需要更多的手动操作可以正常工作,因为每个架子就像是自己的小分支,没有版本控制。)