我对Perforce非常陌生,并且刚刚开始使用它。在使用$p4同步命令同步代码之后,我开始编辑一些文件。
这些文件将被添加到我的默认更改列表中。为了与我的团队合作,我想创建一个变革者。为了创建变更列表,我运行了$p4 change并从变更列表描述中删除了"file1“。现在,当我运行时,$p4打开了。它提供了类似于此的输出。
现在我脑子里有以下问题:
如果有人能详细回答这些问题,那就太好了。任何教程中关于Perforce的建议也会有很大的帮助。
提前谢谢。
发布于 2018-09-21 16:21:20
我对Perforce教程的推荐是Perforce用户指南。这是关于变革派的一节:
我目前在做的是哪一位改变者呢?是默认的还是111 ??
两个都是!这两个都是工作区中挂起的变更者。
(text+k)的意思是什么?
括号中的内容是"filetype“。+k是一个“文件类型修饰符”,意思是关键字(如$Id$和$Revision$以及文件中的$Author$等特殊单词将在提交时自动展开到适当的值。
当我更改file2和file3时,它被同步到changelist 111,而当我对file1进行更改时,它被同步到默认的变更列表。我很困惑这是怎么回事?
任何地方都没有“同步”--待定的变更者只是引用不同文件的容器。当您使用shelve或submit时,会将与这些变更者相关的文件发送到服务器,并由其他客户端访问。因为shelve和submit是变更列表级别的操作,所以只有那些变更列表中的文件会受到影响--这就是有不同挂起的变更者的意义所在。您的工作区中有所有挂起的文件,但是您可以将哪些文件在不同的时间发送到服务器(这有点像在git中推送不同的分支,但不是--您可以在Perforce中的每个操作上这样做,即使您没有分支,因为每个文件都是单独的版本,而不是将整个树作为一个原子blob)。
还有一件事让我感到困惑:如果$p4搁置,我的更改会消失,只有在我为创建的变更列表运行un搁置命令时才会重新应用吗?这是否类似于git存储和git存储应用?
不,p4 shelve只将服务器上搁置的更改与工作区中的本地文件同步--它本身并不改变您的工作区。与“存储”等效的是p4 shelve,然后是p4 revert,以消除工作区更改。shelve本身更像是对分支执行git push --保留本地副本,但现在它也在服务器上(但不是“主”历史的一部分)。(不过,这并不完全一样--老实说,如果你是Perforce的新手,我会在一个普通的老分支中坚持常规的“提交”,因为这是基本工作流程。通过货架共享工作需要更多的手工工作,因为每个货架就像自己的小型分支,没有版本控制。)
https://stackoverflow.com/questions/52446732
复制相似问题