首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >强制Changelist和shelve命令

强制Changelist和shelve命令
EN

Stack Overflow用户
提问于 2018-09-21 15:17:07
回答 1查看 3.8K关注 0票数 0

我对Perforce非常陌生,并且刚刚开始使用它。在使用$p4同步命令同步代码之后,我开始编辑一些文件。

  • $p4编辑file1
  • $p4编辑file2
  • $p4编辑file3

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

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

现在我脑子里有以下问题:

  • 我目前在做的是哪一位改变者呢?是默认的还是111 ??
  • (测试+ k)的含义是什么?
  • 当我更改file2和file3时,它被同步到changelist 111,而当我对file1进行更改时,它被同步到默认的变更列表。我很困惑这是怎么回事?
  • 还有一件事让我感到困惑:如果$p4搁置,我的更改会消失,只有在我为创建的变更列表运行un搁置命令时才会重新应用吗?这是否类似于git存储和git存储应用?

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

提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-21 16:21:20

我对Perforce教程的推荐是Perforce用户指南。这是关于变革派的一节:

files.changelists

我目前在做的是哪一位改变者呢?是默认的还是111 ??

两个都是!这两个都是工作区中挂起的变更者。

(text+k)的意思是什么?

括号中的内容是"filetype“。+k是一个“文件类型修饰符”,意思是关键字(如$Id$$Revision$以及文件中的$Author$等特殊单词将在提交时自动展开到适当的值。

当我更改file2和file3时,它被同步到changelist 111,而当我对file1进行更改时,它被同步到默认的变更列表。我很困惑这是怎么回事?

任何地方都没有“同步”--待定的变更者只是引用不同文件的容器。当您使用shelvesubmit时,会将与这些变更者相关的文件发送到服务器,并由其他客户端访问。因为shelvesubmit是变更列表级别的操作,所以只有那些变更列表中的文件会受到影响--这就是有不同挂起的变更者的意义所在。您的工作区中有所有挂起的文件,但是您可以将哪些文件在不同的时间发送到服务器(这有点像在git中推送不同的分支,但不是--您可以在Perforce中的每个操作上这样做,即使您没有分支,因为每个文件都是单独的版本,而不是将整个树作为一个原子blob)。

还有一件事让我感到困惑:如果$p4搁置,我的更改会消失,只有在我为创建的变更列表运行un搁置命令时才会重新应用吗?这是否类似于git存储和git存储应用?

不,p4 shelve只将服务器上搁置的更改与工作区中的本地文件同步--它本身并不改变您的工作区。与“存储”等效的是p4 shelve,然后是p4 revert,以消除工作区更改。shelve本身更像是对分支执行git push --保留本地副本,但现在它也在服务器上(但不是“主”历史的一部分)。(不过,这并不完全一样--老实说,如果你是Perforce的新手,我会在一个普通的老分支中坚持常规的“提交”,因为这是基本工作流程。通过货架共享工作需要更多的手工工作,因为每个货架就像自己的小型分支,没有版本控制。)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52446732

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档