Perforce Changelist和shelve命令

Perforce Changelist和shelve命令,perforce,Perforce,我对Perforce非常陌生,刚刚开始使用它。 使用$p4 sync命令同步代码后,我开始编辑一些文件 $p4编辑文件1 $p4编辑文件2 $p4编辑文件3 这些文件已添加到我的默认更改列表中。为了与我的团队合作,我想创建一个变更列表。为了创建变更列表,我运行$p4 change并从变更列表描述中删除了file1。现在当我运行$p4打开时。它给出了与此类似的输出 //仓库//文件1编辑默认更改文本 //仓库//文件2编辑默认值111文本+k //仓库//文件3编辑默认值111文本+k 现在我脑子

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

$p4编辑文件1 $p4编辑文件2 $p4编辑文件3 这些文件已添加到我的默认更改列表中。为了与我的团队合作,我想创建一个变更列表。为了创建变更列表,我运行$p4 change并从变更列表描述中删除了file1。现在当我运行$p4打开时。它给出了与此类似的输出

//仓库//文件1编辑默认更改文本 //仓库//文件2编辑默认值111文本+k //仓库//文件3编辑默认值111文本+k 现在我脑子里有以下问题:

我目前正在处理的变更列表是默认的还是111?? test+k的含义是什么? 当我更改文件2和文件3时,它将同步到变更列表111,当我更改文件1时,它将同步到默认变更列表。我非常困惑这是怎么发生的? 还有一件事我感到困惑的是,如果执行$p4搁置,我的更改是否会消失,并且只有在我为创建的更改列表运行unshelve命令时才会重新应用??这类似于git stash和git stash apply吗? 如果有人能详细回答这些问题,那就太好了。任何关于Perforce的教程建议都会有很大帮助


提前感谢。

我推荐的Perforce教程是《Perforce用户指南》。以下是更改列表部分:

我目前正在处理的变更列表是默认的还是111

都是!这两个都是工作区中挂起的变更列表

text+k的含义是什么

括号中的内容是文件类型+k是一个文件类型修饰符,这意味着当您提交时,此文件中的关键字特殊单词(如$Id$、$Revision$和$Author$)将自动扩展为适当的值

当我更改文件2和文件3时,它将同步到变更列表111,当我更改文件1时,它将同步到默认变更列表。我非常困惑这是怎么发生的

任何地方都还没有同步-挂起的变更列表只是引用不同文件的容器。当您搁置或提交时,与这些变更列表关联的文件将被发送到服务器,并且其他客户端可以访问这些文件。由于搁置和提交是变更列表级别的操作,因此只有这些变更列表中的文件会受到影响-这就是拥有不同的挂起变更列表的意义所在。您的工作区中有所有挂起的文件,但您可以分割哪些文件被发送到服务器,这有点像在git中推送不同的分支,但不是-您可以在Perforce中的每个操作上执行此操作,即使您没有分支,因为每个文件都是单独进行版本控制的,而不是将整个树作为一个原子blob进行版本控制

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

不,p4 shelve仅将服务器上搁置的更改与工作区中的本地文件同步-它本身不会更改工作区。隐藏的等效方法是p4搁置,然后p4恢复以清除工作区更改。shelve本身更像是对一个分支执行git推送—您保留了本地副本,但现在它也在服务器上,但不属于主历史记录的一部分。但这并不完全相同——老实说,如果你是Perforce的新手,我会坚持在一个普通的旧分支中提交,因为这是基本的工作流程。通过工具架共享工作需要更多的手动工作,因为每个工具架就像它自己的小分支一样,没有版本控制