任何人都有一个脚本或别名来查找Perforce树中未跟踪(真的:未添加)的文件?
编辑:我更新了这个问题的答案,因为看起来P4V在2009年1月的版本中增加了对此的支持.
编辑:请p4 status
现在使用.没有必要再跳过篮球了.请参阅@ ColonelPanic的回答.
在2009年1月版的P4V中,您可以右键单击工作区树中的任何文件夹,然后单击"协调脱机工作..."
这将进行一些处理,然后显示未检出但与库版本不同或根本没有签入的文件的拆分树视图.它甚至可能会出现一些其他类别.
您可以右键单击此视图中的文件并将其签出,添加,甚至还原它们.
这是一个非常方便的工具,几次救了我的屁股.
编辑:啊问题有关脚本的具体问题,但我会在这里留下这个答案以防万一.
在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
在Unix下:
find -type f ! -name '*~' -print0| xargs -0 p4 fstat 2>&1|awk '/no such file/{print $1}'
这将打印出未在客户端或Perforce软件仓库中添加的文件列表.我习惯于! -name '*~'
排除以〜结尾的文件.
啊,其中一个Perforce经典:)是的,真的很糟糕的是,STILL并没有简单的方法将它内置到默认命令中.
最简单的方法是运行命令以查找客户端根目录下的所有文件,然后尝试将它们添加到库中.您最终将获得所有新文件的更改列表,并忽略现有文件.
例如dir/s/b/AD | p4 -x - 添加
(使用nix命令行中的'find.-type f -print').
如果你想要一个物理列表(在控制台或文件中),那么你可以管理差异的结果(如果你也想在变更列表中添加它们).
如果您在P4Win中运行它,则可以使用$ r替换当前工作空间的客户端根目录.
是否有一个模拟
svn status
或git status
?
是的,但是.
从Perforce版本2012.1开始,有命令p4 status
并且在P4V中"协调离线工作".但是,它们都很慢.要排除不相关的文件,您需要p4ignore.txt
根据/sf/ask/17360801/编写文件
我觉得有必要添加一个答案,因为接受的答案和其他一些答案都有我认为是一个重大问题:他们不理解只读查询命令和进行更改的命令之间的区别.
我不希望这个答案有任何功劳,但我希望通过遵循接受但恕我直言的错误答案,帮助他人避免浪费时间和犯错误.
--- +简介
在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'作为非只读命令的人对英语和其他版本控制工具的命令有限.
--- + P4V
GUI
在GUI中p4v
,reconcile命令查找可能需要添加,删除或打开以进行编辑的本地更改.幸运的是,默认情况下它不会将它们添加到更改列表中; 但如果您不想提交更改,您仍可能需要在检查后关闭协调窗口.