我对Perforce还是陌生的,所以才开始使用它。 使用$ p4 sync命令同步代码后,我开始编辑一些文件。
这些文件已添加到我的默认更改列表中。为了与我的团队合作,我想创建一个变更列表。为了创建更改列表,我运行了$ p4更改并从更改列表说明中删除了“ file1”。现在,当我运行$ p4时打开。它提供类似于此的输出。
现在我心中有以下问题:
如果有人可以详细回答这些问题,那就太好了。对于Perforce的任何教程建议也将有很大帮助。
谢谢。
答案 0 :(得分:1)
我对Perforce教程的建议是《 Perforce用户指南》。这是有关更改列表的部分:
我当前正在处理哪个变更列表,默认值为111还是??
都!这两个都是工作区中的待处理变更列表。
(text + k)是什么意思?
括号中的内容是“文件类型”。 +k
是“文件类型修饰符”,表示提交时,关键字(此文件中的特殊单词,如$Id$
和$Revision$
和$Author$
会自动扩展为适当的值。< / p>
当我对file2和file3进行更改时,它将同步到更改列表111;当我对file1进行更改时,它将同步到默认更改列表。我非常困惑这是怎么回事?
任何地方都尚未“同步”-挂起的更改列表只是引用不同文件的容器。当您shelve
或submit
时,然后,与这些变更列表关联的文件将被发送到服务器,并且其他客户端可以访问。由于shelve
和submit
是变更列表级别的操作,因此仅影响那些变更列表中的文件-这就是拥有不同的挂起变更列表的关键。您在工作区中拥有所有待处理的文件,但是您可以拆分在哪个时间将哪些文件发送到服务器(这有点像在git中推送不同的分支,但不是-您可以在Perforce中的每个操作上执行此操作即使您不进行分支,因为每个文件都是单独进行版本控制,而不是将整个树版本化为一个原子blob。)
我还感到困惑的另一件事是,如果$ p4搁置,我的更改将消失并且仅在我对创建的更改列表运行unshelve命令时重新应用?这类似于git stash和git stash适用吗?
否,p4 shelve
仅将服务器上已搁置的更改与工作区中的本地文件同步-本身不会更改您的工作区。 “隐藏”的等效项是p4 shelve
,然后是p4 revert
,以清除工作区更改。 shelve
本身有点像对分支执行git push
-您保留本地副本,但现在它也在服务器上(但不属于“主”历史记录)。 (不过,这并不完全相同。老实说,如果您是Perforce的新手,我会坚持在常规的旧分支中进行常规的旧“提交”,因为这是基本的工作流程。通过书架共享工作需要更多的手动操作可以正常工作,因为每个架子就像是自己的小分支,没有版本控制。)