Как найти неотслеживаемые файлы в дереве Perforce? (аналог статуса svn) - PullRequest
84 голосов
/ 13 августа 2008

У кого-нибудь есть сценарий или псевдоним для поиска неотслеживаемых (действительно: не добавленных) файлов в дереве Perforce?

РЕДАКТИРОВАТЬ: Я обновил принятый ответ на этот, так как похоже, что P4V добавил поддержку для этого в выпуске января 2009 года.

Ответы [ 15 ]

0 голосов
/ 02 мая 2018

Мне нужно что-то, что будет работать в Linux, Mac или Windows. Поэтому я написал для него скрипт на Python. Основная идея состоит в том, чтобы перебирать файлы и выполнять p4 fstat для каждого. (конечно игнорируя зависимости и папки tmp)

Вы можете найти его здесь: https://gist.github.com/givanse/8c69f55f8243733702cf7bcb0e9290a9

0 голосов
/ 19 октября 2017

Команда p4 fstat позволяет проверить, существует ли файл в рабочей области, в сочетании с find найдите файлы для проверки, как в следующем примере Perl:

// 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 (<F1>) {
  // 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;

Или вы можете использовать p4 reconcile -n -m ...

Если он «открыт для удаления», то он был удален из рабочей области. Обратите внимание, что приведенная выше команда выполняется в режиме предварительного просмотра (-n).

0 голосов
/ 19 июня 2017

Быстрый метод, но мало ортодоксальный. Если кодовая база не добавляет новые файлы / вид изменений слишком часто, вы можете создать локальный репозиторий 'git' из своей проверки. От чистой синхронизации выполнения, git init, добавьте и передайте все файлы локально. Состояние Git быстрое и покажет файлы, ранее не зафиксированные.

0 голосов
/ 26 ноября 2015

У меня недостаточно очков репутации, чтобы комментировать, но в решении Росса также перечислены файлы, которые открыты для добавления. Вы, вероятно, не хотите использовать его ответ для очистки своего рабочего пространства.

Следующее использует p4 fstat (спасибо Марку Харрисону) вместо p4 have и перечисляет файлы, которых нет в хранилище и не открыты для добавления.

dir /S /B /A-D | sed -e "s/%/%25/g" -e "s/@/%40/g" -e "s/#/%23/g" -e "s/\*/%2A/g" | p4 -x- fstat 2>&1 | sed -n -e "s/ - no such file[(]s[)]\.$//gp"

=== Jac

0 голосов
/ 20 сентября 2013

В P4V, в пункте меню «Вид» выберите «Файлы в папке», что откроет новую вкладку на правой панели. Справа от вкладок есть небольшая иконка, которая вызывает окно под названием «Файлы в папке» с двумя иконками. Выберите левый значок, который выглядит как воронка, и вы увидите несколько вариантов. Выберите «Показать элементы не в хранилище», и все файлы в папке будут отображаться. Затем просто щелкните правой кнопкой мыши файл, который вы хотите добавить, и выберите «Отметить для добавления ...». Вы можете проверить это там во вкладке "Ожидание". Просто отправьте как обычно (Ctrl + S).

...