13

使用Perforce Server 2012.2/538478,我如何将文件从主干取消搁置到另一个分支?

尝试这样做时,我得到:

//filename... (not mapped to your workspace view)

在 Perforce 2013 中,我发现这个unshelve 命令真的很有帮助:

p4 unshelve -s <changlist#-with-shelved-files> -S //depot/streamname

但是对于我目前使用的版本,我发现没有什么可以帮助我解决这个问题。

有什么建议么?

4

7 回答 7

8

您正在查看正确的命令,但可能不是正确的参数。这就是我使用它的方式:

p4 unshelve -s 77655 -b MY_BRANCH_SPEC

它取消了更改列表 77655,使用指定的分支规范将文件映射到新分支。

至关重要的是,您需要确保指定的分支映射和当前工作空间映射都包含源文件和目标文件,否则您将收到“文件未映射”错误。

于 2014-01-06T12:15:43.993 回答
8

其他答案对我不起作用,这是我使用 perforce 2014 所做的:

  1. 编辑您当前的工作场所,以便将 //depot/product/B1/... 和 //depot/product/B2/... 都映射到其中(不是相互映射,而是像普通映射一样映射到您的工作区)
  2. 在 P4V 中,转到“分支映射”(查看菜单->分支映射)
  3. Ctrl+N 开始一个新的映射(或右键单击列表并选择“New Branch Mapping...”)
  4. 在“分支映射”下提供类似 B1_TO_B2 的名称
  5. 将 View 下的映射替换为例如

    //depot/product/B1/...       //depot/product/B2/...  
    
  6. 好的
  7. 创建一个空的更改列表,将放置未搁置的文件(否则它们将转到“默认”更改列表)。在下面的命令中,这个新更改列表的编号将是 <TARGET_CL>。
  8. 在命令行中,运行

    p4 unshelve -s <SOURCE_CL> -c <TARGET_CL> -b B1_to_B2
    
    • 如果它不起作用,请确保在 .p4config 中设置了正确的工作区
  9. 现在您所要做的就是解析 <TARGET_CL> 中的文件
于 2014-12-14T14:24:52.033 回答
6

不幸的是,如果不升级到 2013.1 并获得改进的 unshelve 操作,您将需要通过以下方式手动复制数据:

  • 在主干中搁置,注意已更改的特定文件
  • p4 edit您的其他流/分支中的文件
  • 手动将未搁置的文件复制到另一个流/分支(您不能使用p4 copyp4 integrate为此,因为它们没有在主干上提交
  • 在另一个分支上测试并提交
于 2014-01-12T13:12:26.673 回答
6

在花了一些时间搜索和阅读之后,我还没有遇到将搁置的变更列表搁置到另一个分支的具体示例。最后我整理了一个具体的例子。

Assuming you have a shelved changelist 324426 in Branch B1 and want to unshelve it to Branch B2.

我能够创建分支规范,然后将更改列表搁置到另一个分支。这正是我所做的:

1. Create a text file named branchSpec.txt, with the content below: set you own Branch name and View.

Branch:   B1_to_B2

View:
//depot/dev/main/B1/...       //depot/release/B2/...

2. p4 branch -i < branchSpec.txt (in target directory)
3. p4 unshelve -s 324426 -b B1_to_B2 (in target directory)

Viola,B1 中更改列表 324426 中搁置的文件现在已搁置到 B2 并准备提交。

于 2014-07-16T01:49:14.913 回答
0

解决此问题的方法是在 P4 2012 中:

  1. 手动复制并用主干覆盖分支
  2. 右键单击 P4 客户端中的分支,然后单击“协调离线工作...”

这将允许您选择新的和更改的文件并将它们添加到变更集中。

于 2016-10-21T10:27:04.677 回答
0

您可以为此使用 P4 unshelve,但您必须创建一个分支映射,即 A_to_B。

1] p4 取消搁置 -s CL_NUM -b A_to_B

2] p4 add(为添加打开的文件)

3] p4 解决

注意:请不要忘记第 2 步。P4 默认情况下不会在您的目标分支中打开它们。您可以通过“p4 打开”确认

于 2019-01-09T15:56:36.963 回答
-1

我认为你真正需要的是“p4 move -f”。这里有详细解释:p4 move -f: What It's For

于 2014-11-18T07:19:26.560 回答