28

我正在尝试找出一种方法来检测未打开进行编辑但已在本地修改的文件。p4 fstat返回headModTime任何给定文件的值,但这是软件仓库中的更改时间,不应等于文件系统的stat上次修改时间。

我希望存在比备份原始文件、强制同步文件、然后运行差异更轻量级的操作。想法?

4

5 回答 5

25

来自:http ://answers.perforce.com/articles/KB/3481/?q=disconnected&l=en_US&fs=Search&pn=1

具体见第2步:


2. 接下来,打开以“编辑”任何已更改的文件:

p4 diff -se //myclient/... | p4 -x - edit

p4 diff -se 返回相应客户端文件与客户端#have 修订版有任何不同的仓库文件的名称。

于 2008-11-05T21:41:56.960 回答
22

这个 SO question提供了一种在 P4V GUI 中执行此操作的方法:

在 2009 年 1 月版的 P4V 中,您可以右键单击工作区树中的任何文件夹,然后单击“协调脱机工作...”

这将进行一些处理,然后显示未签出但与软件仓库版本不同或根本未签入的文件的拆分树视图。它甚至可能带来一些其他类别。

您可以右键单击此视图中的文件并检出、添加甚至还原它们。

后来编辑:

在“协调...”窗口中,您可以单击“高级协调”并显示一个两窗格的文件夹层次结构差异窗口,该窗口对于查找您需要添加的文件特别有用。

优点:整个 P4V 功能比命令行版本更加用户友好(因为它允许最大粒度地选择要协调的内容)

缺点:它急需一个类似 subversion/git/hg.ignore的列表,以免您手动跳过项目中的所有 dll 和其他杂物。

于 2009-06-18T16:06:13.647 回答
3

从 Perforce 版本 2012.1 开始,使用命令行命令p4 statusp4 reconcile

http://www.perforce.com/perforce/r12.2/manuals/cmdref/status.html

p4 status命令在客户端的工作空间中查找未打开的文件,并检测您的工作空间和软件仓库之间的以下三种类型的不一致:

  1. 存在于仓库中的文件,存在于您的拥有列表中,但从您的工作区中丢失。默认情况下,这些文件随后会打开以进行删除。
  2. 文件存在于您的工作区中,但在软件仓库中丢失。默认情况下,打开这些文件进行添加。
  3. 在您的工作区中修改但未打开以供编辑的文件。默认情况下,打开这些文件进行编辑。

http://www.perforce.com/perforce/r12.1/manuals/cmdref/reconcile.html

于 2012-10-29T18:25:07.737 回答
2

从工作断开连接的文章中,使用 p4win 您还可以选择有问题的文件夹/文件,然后选择“文件菜单->更多->检查一致性”,这基本上可以执行“p4 diff -se”和“p4 diff -sd”,并且提示用户解决不一致的问题。

于 2008-11-21T06:34:23.673 回答
0

这是一个对我来说效果很好的 unix 解决方案。

如何在 Perforce 树中查找未跟踪的文件?(模拟svn状态)

于 2011-02-09T19:20:16.110 回答