Perforce 如何在不修改本地文件的情况下取消跟踪Performce变更列表中的变更(P4V 2015.2)?

Perforce 如何在不修改本地文件的情况下取消跟踪Performce变更列表中的变更(P4V 2015.2)?,perforce,p4v,Perforce,P4v,注:此问题与的相关,但不是副本。我的论点是,虽然类似,但这个问题是专门针对P4V客户机的 概述 假设我正在使用perforce跟踪一个文件。文件的当前状态(file1)在服务器Depot上是相同的,而本地文件系统出于说明目的,我还将显示默认变更列表的当前“状态”: | Depot | Filesystem | Changelist | |-------+------------+----------------| | file1 | file1 | <empty>

注:此问题与的相关,但不是副本。我的论点是,虽然类似,但这个问题是专门针对P4V客户机的

概述 假设我正在使用perforce跟踪一个文件。文件的当前状态(
file1
)在服务器
Depot
上是相同的,而本地
文件系统
出于说明目的,我还将显示默认变更列表的当前“状态”:

| Depot | Filesystem | Changelist     |
|-------+------------+----------------|
| file1 | file1      | <empty>        |
如果我协调脱机工作…或手动将文件添加到变更列表中,则变更列表现在会意识到此更改:

| Depot | Filesystem | Changelist     |
|-------+------------+----------------|
| file1 | file2      | file1 -> file2 |
如果我随后提交变更列表,它当前跟踪的变更将应用到服务器上,并且变更列表再次为空:

| Depot | Filesystem | Changelist     |
|-------+------------+----------------|
| file2 | file2      | <empty>        |
假设我现在想回到工作区/变更列表不知道
file2
已更改为
file3
,但不实际修改磁盘上的文件的状态:

| Depot | Filesystem | Changelist     |
|-------+------------+----------------|
| file2 | file3      | <empty>        |
请注意文件系统如何丢失状态
file3
,并恢复为
file2

TL;博士: 如果本地文件系统中的文件没有被还原或以任何方式修改,我如何“还原”我的变更列表/工作区以不再跟踪变更

我使用的是P4V v2015.2

概述 仅使用P4V UI是不可能的(至少在v2015.2中是如此)

但是,也可以通过命令行执行,其中“revert”命令有一个
-k
标志,该标志
p4 help revert
解释为:

-k标志将文件标记为在服务器元数据中还原,而不更改客户端工作区中的文件

我知道这里有一个类似的问题讨论了这一点:-但问题和选择的答案都没有提到P4V客户机,所以我在下面写一个更详细的解释,以防它对某人有利

如何在不修改本地文件的情况下从Performce变更列表中删除挂起的更改
  • 在工作区视图中的任意位置单击鼠标右键,然后选择“在此处打开命令窗口”

    • 命令实际上不使用,因此您所在的文件夹并不重要
    • 不过,我们需要这样来设置环境变量,因此,如果没有设置环境变量,则在干净的命令行窗口中运行该命令可能不起作用
  • 输入以下命令:
    p4 revert-k-c default//…

    • -k
      标志表示在还原变更列表时不修改本地文件
    • -c
      标志指定所需的变更列表。使用
      default
      或要取消跟踪其中文件的确切变更列表编号
    • 最后一个参数指定要从变更列表中清除的文件的位置(相对于您的工作区根)<代码>/…表示工作区中的所有文件。请注意,这始终仅限于使用
      -c
      指定的变更列表中的文件
  • 运行该命令后,它将列出从变更列表中删除的每个挂起的变更

    • 除非您按f5或点击刷新按钮,否则Performce客户端实际上不会反映此更改,此时您应该再次看到您的更改列表被清除
  • 你为什么要这样做? 是否应执行此类操作取决于读者的判断,并且应考虑中的警告

    我的主要使用案例是,变更列表中已经存在的文件由于某种原因被删除、移动或重命名,而没有跟踪这些操作

    是的,理想情况下,应该跟踪这些更改,我可能必须查看我的工作流程,以避免将来出现这种情况。尽管如此,在此状态下尝试提交变更列表可能会导致错误,因为这些“挂起的变更”在技术上不再存在


    为了避免这种情况,我发现最简单的方法是如上所述使用
    -k
    标志清除变更列表,删除不再代表本地文件系统的旧更改,然后在所有相关目录上运行
    协调脱机工作…
    ,以将当前最新状态放入变更列表,然后提交。

    只要您愿意使用命令行,请尝试调查
    p4协调
    ;它比P4V的“协调脱机工作”功能强大得多。
    | Depot | Filesystem | Changelist     |
    |-------+------------+----------------|
    | file2 | file3      | file2 -> file3 |
    
    | Depot | Filesystem | Changelist     |
    |-------+------------+----------------|
    | file2 | file3      | <empty>        |
    
    | Depot | Filesystem | Changelist     |
    |-------+------------+----------------|
    | file2 | file2      | <empty>        |