首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >p4使用p4api.net方法恢复不使用-a选项的文件

p4使用p4api.net方法恢复不使用-a选项的文件
EN

Stack Overflow用户
提问于 2015-03-14 22:35:45
回答 1查看 621关注 0票数 0

正在尝试使用p4api.net方法中的-a选项还原更改列表中的文件。它曾经为我工作,但现在我得到了以下消息的异常。

此外,p4 edit和p4 revert with -c选项运行良好,但p4 revert with -a option抛出以下异常。我不知道为什么它在p4工作区位置的测试项目位置下面选择。

例外:

路径'd:\cftt\Dev\source\BRF\BRF.Business.Test\bin\Debug\19402547‘不在客户端的根目录'D:\p4’下。

代码语言:javascript
复制
// to open files for edit in a given changelist at certain loc with particular file format 
          public IList<FileSpec> EditChangeList(string clNumber, string fileFormat, string destinationPath)
    {
        try
        {
            var rep = Connect();
            var opts = new Options(ChangeCmdFlags.None, ChangeListType.None);
            opts["-c"] = clNumber;
            var fs = new FileSpec(new DepotPath(destinationPath + "/..." + fileFormat));
            IList<FileSpec> editedFileSpec = rep.Connection.Client.EditFiles(new List<FileSpec> {fs}, opts);
            return editedFileSpec;
        }
        catch (Exception exc)
        {
            Logger.LogError(exc.Message);
            throw;
        }
    }

    // to revert files in a changelist that are unchanged using -a option
           public IList<FileSpec> RevertChangeList(string clNumber, string destinationPath)
    {
        try
        {
            var rep = Connect();
            var opts = new Options(ChangeCmdFlags.None, ChangeListType.None);
            opts["-a"] = clNumber;
            var fs = new FileSpec(new DepotPath(destinationPath + "/..."));
            IList<FileSpec> revertedFiles = rep.Connection.Client.RevertFiles(new List<FileSpec> {fs}, opts);
            return revertedFiles;
        }
        catch (Exception exc)
        {
            Logger.LogError(exc.Message);
            throw;
        }
    }
EN

回答 1

Stack Overflow用户

发布于 2015-03-15 23:55:51

revert命令接受几种不同类型的标志和参数:

  • 标志,如-a、-n和-w,它们没有任何值,只是
  • -c标志,它将更改列表编号作为
  • 要恢复的文件的标志的值,这些标志在所有标志(您可以指定多个文件参数)

之后指定为参数

在您的命令中,您运行:

代码语言:javascript
复制
p4 revert -a 19402547 d:\p4\sw\dev\gpu_drv\chips_a\diag\mods\sim\resources/...

由于-a标志不接受值,因此revert命令将其视为:

d:\p4\sw\dev\gpu_drv\chips_a\diag\mods\sim\resources/...

  • -a
  • a file argument: 19402547
  • a file argument:

由于文件参数19402547前面没有目录名,所以还原命令将其解释为相对于当前目录的相对文件名,并查找名为'd:\cftt\Dev\source\BRF\BRF.Business.Test\bin\Debug\19402547‘的文件,该文件确实不在客户端的根目录下,因此不是Perforce能够还原的文件。

这里的正确方法是完全忽略更改列表编号,或者将其指定为-c标志的值,这取决于您是希望恢复sim\resources目录中所有打开的文件,还是只希望恢复该目录中在更改列表19402547中打开的那些打开的文件。

也就是说,两者都是:

代码语言:javascript
复制
p4 revert -a d:\p4\sw\dev\gpu_drv\chips_a\diag\mods\sim\resources/...

代码语言:javascript
复制
p4 revert -a -c 19402547 d:\p4\sw\dev\gpu_drv\chips_a\diag\mods\sim\resources/...

都是合理的命令,选择正确的命令完全取决于您想要的行为。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29050111

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档