How to find untracked files in a Perforce tree? (analogue of svn status)

前端 未结 16 2110
独厮守ぢ
独厮守ぢ 2020-12-02 06:44

Anybody have a script or alias to find untracked (really: unadded) files in a Perforce tree?

EDIT: I updated the accepted answer on this one since it looks like P4V

16条回答
  •  轻奢々
    轻奢々 (楼主)
    2020-12-02 07:36

    The p4 fstat command lets you test if a file exists in the workspace, combine with find to locate files to check as in the following Perl example:

    // throw the output of p4 fstat to a 'output file'
    // find:
    //  -type f  :-  only look at files,
    //  -print0  :-  terminate strings with \0s to support filenames with spaces
    // xargs:
    //  Groups its input into command lines,
    //  -0       :-  read input strings terminated with \0s
    // p4:
    //  fstat    :-  fetch workspace stat on files
    
    my $status=system "(find . -type f -print0 | xargs -0 p4 fstat > /dev/null) >& $outputFile";
    
    // read output file
    open F1, $outputFile or die "$!\n";
    
    // iterate over all the lines in F1
    while () {
      // remove trailing whitespace
      chomp $_;
    
      // grep lines which has 'no such file' or 'not in client'
      if($_ =~ m/no such file/ || $_ =~ m/not in client/){
    
         // Remove the content after '-'
         $_=~ s/-\s.*//g;
    
         // below line is optional. Check ur output file for more clarity.
         $_=~ s/^.\///g;
    
         print "$_\n";
      }
    }
    
    close F1;
    

    Or you can use p4 reconcile -n -m ...

    If it is 'opened for delete' then it has been removed from the workspace. Note that the above command is running in preview mode (-n).

提交回复
热议问题