【问题标题】:Reverting unshelved files in perforce在 perforce 中恢复未搁置的文件
【发布时间】:2013-04-23 16:37:54
【问题描述】:

我已经搁置了一个包含名为 foo.txt 的“添加”文件的 cl。当我恢复该更改列表时, foo.txt 会从我的工作区中消失,但仍保留在我的硬盘上。

p4 unshelve -f -s $A -c default :: unshelving add foo.txt
p4 revert -c default //MY_WORKSPACE/... :: foo.txt is reverted
p4 opened -C MY_WORKSPACE :: shows none

当我打开工作区时,我仍然可以看到 foo.txt。

有没有办法删除添加的文件? (除了明显的手动删除)

【问题讨论】:

  • 这实际上与搁置无关。您的问题实际上是关于恢复 added 文件。
  • @raven 这与“从工作区中删除”无关。这是关于本地文件发生的情况,在p4 add 之后是p4 revert。 (与shelveunshelve 一起使事情复杂化)。
  • 我现在明白了。我撤回我的近距离投票。

标签: perforce revert


【解决方案1】:

使用-w 标志运行恢复命令将删除在恢复期间标记为添加的所有文件(请参阅p4_revert docs

p4 revert -w [file specification]

例如, p4 revert -w -c default //MY_WORKSPACE/... (foo.txt 从磁盘中删除,然后恢复)

【讨论】:

  • 这是一个很棒的解决方案!请注意,“revert -w”要求您的服务器为 2013.2 或更高版本。
【解决方案2】:

这种行为是设计使然。

http://www.perforce.com/perforce/doc.current/manuals/p4guide/04_files.html

放弃更改(还原)

从 更改列表并放弃您所做的任何更改,发出 p4 revert 命令。当您还原文件时,Perforce 会还原上一个版本 您已同步到您的工作区。 如果您恢复一个打开的文件 添加,文件从更改列表中删除,但没有从更改列表中删除 你的工作区。

【讨论】:

    【解决方案3】:

    一旦你在 Perforce 中恢复了文件添加,我认为你可以从磁盘中删除它们 - Perforce 已经完全忘记了它们。

    【讨论】:

    • revert 函数不应该这样做吗?
    • @Twisted:这种想法可能是revert 命令这样做会很危险,因为如果您不小心这样做,您可能会丢失大量工作。 (可以说他们可以在revert 中添加一个命令行选项来执行此操作。)
    • 好了,是时候复习一下我的 shell 脚本知识了。
    • 不,Perforce 并没有完全忘记它们。它知道您的工作区中有它们。如果您在 Perforce 之外删除它们,它们将不会在同步操作期间再次出现,因为 Perforce 认为您已经拥有它们。您将不得不进行强制同步。 Use Perforce to delete them以免混淆服务器。
    • @raven 这将适用于已经提交到存储库的文件。但我认为这不适用于p4 addp4 revert 之后的文件。由于存储库中没有修订,它将同步哪个版本?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-13
    • 2013-06-27
    • 2017-09-24
    • 1970-01-01
    • 2021-12-08
    相关资源
    最近更新 更多