如何从软件仓库中删除文件,但保留本地副本?

时间:2010-01-07 22:05:59

标签: perforce

我正在尝试学习Perforce并希望从软件仓库删除文件(p4删除,p4提交很容易),但是也会从客户端机器目录结构中删除它。我想将我的本地文件保存在我的目录中。

我能看到这样做的唯一方法是在删除之前将其移出Perforce控制下的层次结构。我能够通过同步早期版本来恢复我的文件。

也许我设置我的客户端工作区错了?或者我误解了源控制的基本概念?客户端工作区是/ home / user,我这样做,所以我可以在我的主目录下添加任何文件,而不会得到关于文件不在客户端根目录下的错误。

仅供参考 - 运行P4D / LINUX26X86 / 2009.1 / 222893(2009/11/12)的Linux客户端和服务器

任何建议表示赞赏。 感谢。

4 个答案:

答案 0 :(得分:4)

我不相信有任何方法可以保留您在Perforce下删除的文件。这有很好的理由,就好像在库中删除文件一样,没有理由(从源代码控制的角度来看)在客户端工作区中保留副本。

我怀疑问题是你使用Perforce的方式。

根据您所写的内容,您似乎正在使用Perforce来备份/跟踪主目录结构中的文件。因此,您使用Perforce“主”的方式位于您的主目录中,“副本”位于软件仓库中。

这不是我理解的源控制系统的预期用途。

所有文件的主副本实际上都是软件仓库中的内容。从库中,出于多个客户端(视图)的目的,例如进行更改,测试等。客户端是暂时的,可以根据需要创建和删除。

要做你想做的事,你可能需要重新考虑如何使用Perforce。

答案 1 :(得分:1)

其他一些命令采用的参数可以让你伪造动作,但删除不会。您可以随时创建一个新客户端,在该工作区中执行删除。

答案 2 :(得分:1)

有一种方法可以做到这一点,落后于Perforce的背后。执行以下操作:

  1. 将要删除的文件重命名为新的
  2. 在原始文件名
  3. 上运行p4 delete
  4. p4 submit更改
  5. 将文件重命名为原始名称

答案 3 :(得分:0)

  1. 在“工作区”标签中,转到包含要从源中删除的文件的文件夹
  2. 右键单击该目录(或从 File 菜单),然后选择在此处打开命令窗口
    • 注意-如果您在源目录中打开自己的命令提示符,则可能会遇到此错误:
      "Client 'your-client' unknown - use 'client' command to create it."
  3. 输入命令p4 delete -k <file_to_delete>
  4. 更改将添加到您的P4V Helix更改列表中,可以签入

参考:'Remove a file from Perforce control without deleting from workspace?' (https://stackoverflow.com/a/9775166)