如何使用C#版P4API仅通过文件路径检查文件是否被追踪?
用P4API检查本地文件是否被Perforce追踪
你当前代码的问题在于用了DepotPath,但你只有本地文件的完整路径,应该改用LocalPath来创建FileSpec。以下是修正后的实现:
// 用本地路径创建FileSpec FileSpec fs = new FileSpec(new LocalPath(filePath), VersionSpec.Head); IList<FileSpec> lfs = new List<FileSpec>(); lfs.Add(fs); Options options = new Options(); var fileResults = _repository.GetFiles(lfs, options); // 判断文件是否被追踪 bool isTracked = false; foreach (var result in fileResults) { // 检查文件是否存在于仓库中(未被追踪的文件会返回FileError) if (result.FileError == null && result.DepotFile != null) { isTracked = true; break; } }
关键说明:
LocalPath用于映射本地文件系统路径,P4API会自动关联当前客户端的工作区配置,转换为仓库路径进行查询。- 通过检查返回结果的
FileError和DepotFile字段,确认文件是否已被Perforce追踪:如果FileError为空且DepotFile有值,说明文件在仓库中存在(已被追踪)。 - 如果文件未被添加到Perforce,
GetFiles会返回带有FileError的结果(比如FileNotFound)。
内容的提问来源于stack exchange,提问作者Jonas Knohl
相关产品推荐
相关产品推荐

