当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《如何在Perforce树中查找未跟踪的文件?(svn状态的模拟)》经验,为你挑选了6个好方法。

任何人都有一个脚本或别名来查找Perforce树中未跟踪(真的:未添加)的文件?

编辑:我更新了这个问题的答案,因为看起来P4V在2009年1月的版本中增加了对此的支持.



1> tenpn..:

编辑:p4 status现在使用.没有必要再跳过篮球了.请参阅@ ColonelPanic的回答.

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

这将进行一些处理,然后显示未检出但与库版本不同或根本没有签入的文件的拆分树视图.它甚至可能会出现一些其他类别.

您可以右键单击此视图中的文件并将其签出,添加,甚至还原它们.

这是一个非常方便的工具,几次救了我的屁股.

编辑:啊问题有关脚本的具体问题,但我会在这里留下这个答案以防万一.


噢,天呐!!!!`p4 status`不只是查找未跟踪的文件,它实际上是跟踪它们.即``p4 status`不是一个只读查询,因为人们会从名称中怀疑,但实际上是一个更改内容的命令 - 而不是工作区文件.这不是状态命令应该做的,而不是`svn status`的作用.我能找到的最接近`svn status`的是`p4 reconcile -na` - -a表示"应该添加的文件",-n表示"实际上并没有改变任何东西".///我最初说的更强大.

2> Mark Harriso..:

在linux上,或者如果你在windows上安装了gnu-tools:

find . -type f -print0 | xargs -0 p4 fstat >/dev/null

这将显示每个未记录文件的错误消息.如果要捕获该输出:

find . -type f -print0 | xargs -0 p4 fstat >/dev/null 2>mylogfile


这在我的60K文件工作区上花了很长时间.我编写了一个python脚本,在10秒内完成相同的工作:[p5](https://github.com/hamstergene/p5).它还支持`.p4ignore`,可以预览和自动编辑未跟踪/更改/删除的文件.

3> ahu..:

在Unix下:

find -type f ! -name '*~' -print0| xargs -0 p4 fstat 2>&1|awk '/no such file/{print $1}'

这将打印出未在客户端或Perforce软件仓库中添加的文件列表.我习惯于! -name '*~'排除以〜结尾的文件.



4> Andrew Grant..:

啊,其中一个Perforce经典:)是的,真的很糟糕的是,STILL并没有简单的方法将它内置到默认命令中.

最简单的方法是运行命令以查找客户端根目录下的所有文件,然后尝试将它们添加到库中.您最终将获得所有新文件的更改列表,并忽略现有文件.

例如dir/s/b/AD | p4 -x - 添加

(使用nix命令行中的'find.-type f -print').

如果你想要一个物理列表(在控制台或文件中),那么你可以管理差异的结果(如果你也想在变更列表中添加它们).

如果您在P4Win中运行它,则可以使用$ r替换当前工作空间的客户端根目录.



5> Colonel Pani..:

是否有一个模拟svn statusgit status

是的,但是.

从Perforce版本2012.1开始,有命令p4 status并且在P4V中"协调离线工作".但是,它们都很慢.要排除不相关的文件,您需要p4ignore.txt根据/sf/ask/17360801/编写文件



6> Krazy Glew..:

我觉得有必要添加一个答案,因为接受的答案和其他一些答案都有我认为是一个重大问题:他们不理解只读查询命令和进行更改的命令之间的区别.

我不希望这个答案有任何功劳,但我希望通过遵循接受但恕我直言的错误答案,帮助他人避免浪费时间和犯错误.

--- +简介

在perforce工作区中查找所有未跟踪文件的最方便方法可能是p4 reconcile -na.

-a 说"给我不在存储库中的文件,即应该添加".

-n说"不做任何改变" - 即干涸.(尽管这些消息可能会说"已打开以供添加",但在精神上您必须将其解释为"如果不是-n则会打开以进行添加")

也许最便捷的方式找到制成,而离线所有本地更改-要添加,可能需要的不只是文件,而且文件可能需要被删除,或者通过不被打开进行编辑已经改变了p4 edit,是p4 reconcile -n.

几个答案提供了脚本,通常涉及p4 fstat.虽然我还没有验证所有这些脚本,但我经常使用类似的脚本来弥补perforce命令的不足之处p4 reconcile -n- 例如,我经常发现我想要本地路径而不是Perforce depot路径或工作空间路径.

--- +警告

p4 status 不与其他版本控制系统上的状态命令相对应.

p4 status不是只读查询.p4 status实际上找到了相同类型的更改,p4 reconcile并将它们添加到存储库中.p4 status好像没有-n干涸的选择p4 reconcile.

如果你这样做p4 status,看看文件并想"哦,我不需要那些",p4 revert如果你想在同一个工作区继续编辑,那么你将需要它们.否则,p4 status将在下次检查添加到您的变更集的更改.

似乎很少或没有理由使用p4 status而不是p4 reconcile -n,除了本地工作区与库路径名的一些细节.

我只能想象,选择'status'作为非只读命令的人对英语和其他版本控制工具的命令有限.

--- + P4VGUI

在GUI中p4v,reconcile命令查找可能需要添加,删除或打开以进行编辑的本地更改.幸运的是,默认情况下它不会将它们添加到更改列表中; 但如果您不想提交更改,您仍可能需要在检查后关闭协调窗口.

推荐阅读
linjiabin43
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有