我刚刚设置了一个Perforce 代理服务器用于工作。我注意到缓存目录很快就被填满了——里面都是我知道自己永远不需要的文件。例如,仓库中有一个“沙盒”目录,用户将个人分支和其他工作保存在其中;这p4 sync
导致 p4 代理缓存在我永远不需要这些用户的沙盒时获取它们。我会为沙盒目录创建一个符号链接,/dev/null
但这样我就不会缓存我的沙盒,这是我感兴趣的。
有什么方法可以告诉 perforce 代理类似“如果我还没有同步它,请不要缓存它”的效果吗?
答案1
我认为可能对 Perforce RCS 以及代理的工作方式存在一些误解。我假设您正在查看磁盘上的代理缓存,并看到您不希望看到的仓库或服务器部分的文件?如果是这样,请检查其中一些文件,我保证您会发现它们是您尝试同步的仓库集成的来源。除非您使用 p4 snap 命令撤消集成期间创建的所有惰性副本,否则这是“设计使然”。
答案2
您不能告诉代理不要缓存文件。
以下是一些选项:
修改客户端视图以不包含您不想要的目录,这样它们就永远不会同步并最终进入缓存。使用代理的每个人都需要做同样的事情,以防止不需要的文件出现在缓存中。
编写一个 cron 任务,从缓存目录中删除不需要的文件夹,并让它每小时运行一次(或者如果您愿意,可以更频繁地运行)。在 p4p 运行时从其缓存中删除文件是安全的。
从缓存中删除旧文件,以防止缓存无限制增长。有一些脚本可以做到这一点。
添加更多磁盘空间,这样您就不必担心了:)
答案3
代理仅缓存你从服务器请求的内容,因此如果你“不必同步它”,它惯于被缓存。如果您不想缓存整个沙盒目录,请不要同步整个沙盒目录。只同步您需要的内容。听起来您这样做了:
p4 sync //depot/sandbox/...
而不是这样(假设您的沙盒目录名为 fbrereto):
p4 sync //depot/sandbox/fbrereto/...