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

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

РЕДАКТИРОВАТЬ: я 9X_sccs обновил принятый ответ на этот вопрос, так 9X_version-control как похоже, что P4V добавил поддержку этого 9X_source-code-control в выпуске за январь 2009 года.

93
3

  • Я восстановил http://stackoverflow.com/questions/9642531/what-is-the-p4-command-equivalent-to-something-like-svn-status, который был неправильно помечен как дубликат http: // stackoverflow. c ...
10
Общее количество ответов: 10

Ответ #1

Ответ на вопрос: Как найти неотслеживаемые файлы в дереве Perforce? (аналог статуса svn)

ИЗМЕНИТЬ: Пожалуйста, используйте p4 status сейчас. Больше 9X_source-code-management нет необходимости прыгать через обручи. См. answer от 9X_sccs @ ColonelPanic.

В версии P4V от января 2009 9X_scc г. вы можете щелкнуть правой кнопкой мыши 9X_source-code-management любую папку в дереве рабочего пространства 9X_sccs и выбрать «согласовать автономную работу 9X_p4 ...»

При этом будет произведена небольшая 9X_source-control обработка, а затем отобразится разделенное 9X_scm дерево файлов, которые не были извлечены, но 9X_p4 имеют отличия от депо-версии или вообще 9X_version-control не зарегистрированы. Может даже быть несколько 9X_source-control других категорий, которые он поднимает.

Вы 9X_scc можете щелкнуть правой кнопкой мыши файлы 9X_scm в этом представлении и проверить их, добавить 9X_scc или даже отменить.

Это очень удобный инструмент, который 9X_version-control несколько раз спасал меня.

РЕДАКТИРОВАТЬ: вопрос, заданный 9X_source-code-control конкретно о скриптах, но я оставлю здесь 9X_vcs этот ответ на всякий случай.

87
2

  • Ох, за то, что громко кричал !!!! `p4 status` не просто НАХОДИТ неотслеживаемые файлы, он фактически НАЧИНАЕТ ИХ ОТСЛЕЖИВАНИЕ. Т.е. `p4 status` не является запросом только для чтения, как можно было бы догадат ...

Ответ #2

Ответ на вопрос: Как найти неотслеживаемые файлы в дереве Perforce? (аналог статуса svn)

В Linux или если у вас установлены инструменты 9X_source-code-management gnu в Windows:

find . -type f -print0 | xargs -0 p4 fstat >/dev/null 

Это покажет сообщение об ошибке 9X_source-code-control для каждого неучтенного файла. Если вы хотите 9X_vcs зафиксировать этот вывод:

find . -type f -print0 | xargs -0 p4 fstat >/dev/null 2>mylogfile 

50
2

  • Перенаправление stderr на stdout позволит вам выполнять дополнительную фильтрацию или другие операции. Например, чтобы увидеть прокручиваемый список файлов Java: найти. -тип f -print0 | xargs -0 p4 fstat 2> & ...

Ответ #3

Ответ на вопрос: Как найти неотслеживаемые файлы в дереве Perforce? (аналог статуса svn)

В Unix:

find -type f ! -name '*~' -print0| xargs -0 p4 fstat 2>&1|awk '/no such file/{print $1}' 

Будет распечатан список файлов, которые 9X_perforce не добавлены в ваш клиент или хранилище 9X_scc Perforce. Я использовал ! -name '*~' для исключения 9X_scm файлов, оканчивающихся на ~.

19
0

Ответ #4

Ответ на вопрос: Как найти неотслеживаемые файлы в дереве Perforce? (аналог статуса svn)

Ааа, один из классиков Perforce :) Да, это 9X_source-code-control действительно отстой, что для этого ПО-ПРЕЖНЕМУ 9X_vcs нет простого способа, встроенного в команды 9X_sccs по умолчанию.

Самый простой способ — запустить 9X_scc команду, чтобы найти все файлы в корневом 9X_source-code-management каталоге ваших клиентов, а затем попытаться 9X_version-control добавить их в хранилище. Вы получите список 9X_perforce изменений всех новых файлов, а существующие 9X_source-code-management файлы игнорируются.

Например, директор /s 9X_sccs /b /AD | p4 -x - добавить

(используйте «find 9X_source-code-management . -type f -print» из командной строки nix).

Если 9X_perforce вам нужен физический список (в консоли или 9X_sccs в файле), вы можете передать результаты 9X_p4 сравнения (или добавить, если вы также хотите, чтобы 9X_scm они были в списке изменений).

Если вы используете 9X_revision-control это в P4Win, вы можете использовать $r для 9X_version-control замены корневого каталога клиента текущей 9X_source-control рабочей области.

12
0

Ответ #5

Ответ на вопрос: Как найти неотслеживаемые файлы в дереве Perforce? (аналог статуса svn)

Есть ли аналог svn status или git status?

Да, НО.

Начиная с версии Perforce 9X_source-control 2012.1, есть команда p4 status, а в P4V - согласование 9X_vcs автономной работы. Однако они оба очень 9X_source-code-control медленные. Чтобы исключить ненужные файлы, вам 9X_revision-control нужно написать файл p4ignore.txt для https://stackoverflow.com/a/13126496/284795

12
1

  • Со времени выпуска 2012.1 было несколько улучшений производительности в `p4 status`. Если вы избегали `p4 status` из-за проблем с произ ...

Ответ #6

Ответ на вопрос: Как найти неотслеживаемые файлы в дереве Perforce? (аналог статуса svn)

2021-07-16: ЭТОТ ОТВЕТ МОЖЕТ БЫТЬ УСТАРЕЛ.

Я достаточно уверен, что это было верно 9X_vcs в 2016 году для той версии Perforce, которую 9X_perforce я использовал (которая не обязательно была 9X_vcs самой последней). Но похоже, что эта проблема 9X_source-control или ограничение дизайна были устранены в 9X_source-control последующих выпусках Perforce. Я не знаю, каков 9X_source-code-control этикет для этого случая переполнения стека 9X_perforce - следует ли удалить этот ответ?

ОТВЕТ 2016 г.

Мне хочется 9X_source-control добавить ответ, поскольку принятый ответ 9X_p4 и некоторые другие имеют, на мой взгляд, серьезную 9X_p4 проблему: они не понимают разницы между 9X_p4 командой запроса, доступной только для чтения, и 9X_source-code-control командой, которая делает изменения.

Я не 9X_source-code-control жду никакого уважения к этому ответу, но 9X_version-control надеюсь, что он поможет другим не тратить 9X_revision-control время и делать ошибки, следуя принятому, но 9X_version-control ИМХО неверному ответу.

--- + КРАТКО

Вероятно, самый удобный 9X_source-code-control способ найти все неотслеживаемые файлы в 9X_revision-control специальной рабочей области - это p4 reconcile -na.

-a говорит: «Дайте 9X_source-code-control мне файлы, которых нет в репозитории, т.е. которые 9X_perforce должны быть добавлены».

-n говорит: «Не вносить 9X_version-control изменений», т. е. пробный прогон. (Хотя 9X_version-control в сообщениях может быть сказано «открыто 9X_scc для добавления», мысленно вы должны интерпретировать 9X_scm это как «было бы открыто для добавления, если 9X_revision-control не -n»)

Вероятно, самый удобный способ найти 9X_version-control все локальные изменения, сделанные в автономном 9X_scc режиме - не только файлы, которые, возможно, потребуется 9X_vcs добавить, но также файлы, которые, возможно, потребуется 9X_scc удалить, или которые были изменены без открытия 9X_p4 для редактирования с помощью p4 edit, это p4 reconcile -n.

В нескольких 9X_scm ответах содержались сценарии, часто с участием 9X_scm p4 fstat. Хотя я не проверял все эти сценарии, я 9X_p4 часто использую аналогичные сценарии, чтобы 9X_perforce восполнить недостатки команд perforce, таких 9X_source-code-management как p4 reconcile -n - например, часто я обнаруживаю, что 9X_perforce мне нужны локальные пути, а не пути к хранилищу 9X_p4 Perforce или пути к рабочему пространству.

--- + ВНИМАНИЕ

p4 status НЕ 9X_perforce является аналогом команд статуса в других 9X_version-control системах контроля версий.

p4 status НЕ является запросом 9X_version-control только для чтения. p4 status фактически находит такие 9X_scc же изменения, что и p4 reconcile, и добавляет их в репозиторий. p4 status, похоже, не 9X_source-code-control имеет опции -n для пробного прогона, как у 9X_source-control p4 reconcile.

Если вы выполните p4 status, посмотрите на файлы 9X_vcs и подумаете: «О, они мне не нужны», тогда 9X_scm вам придется p4 revert их, если вы хотите продолжить 9X_version-control редактирование в той же рабочей области. В 9X_source-control противном случае изменения, которые p4 status добавил 9X_source-control в ваш набор изменений, будут проверены в 9X_source-control следующий раз.

Кажется, мало или совсем нет 9X_version-control причин использовать p4 status вместо p4 reconcile -n, за исключением 9X_scc некоторых деталей о локальной рабочей области 9X_scm и имени пути к хранилищу.

Я могу только представить, что 9X_version-control тот, кто выбрал «статус» для команды, не 9X_version-control предназначенной только для чтения, имел 9X_revision-control ограниченное владение английским языком 9X_scm и другими инструментами управления версиями.

--- + P4V графический интерфейс

В 9X_version-control графическом интерфейсе p4v команда согласования 9X_p4 находит локальные изменения, которые, возможно, потребуется 9X_p4 добавить, удалить или открыть для редактирования. К 9X_scc счастью, он не добавляет их в список изменений 9X_scc по умолчанию; но вы все равно можете быть 9X_revision-control осторожны, чтобы закрыть окно согласования 9X_scm после его проверки, если вы не хотите фиксировать 9X_perforce изменения.

7
1

  • Статус p4, похоже, не добавляет файлы. похоже, он работает как и задокументирован как «согласова ...

Ответ #7

Ответ на вопрос: Как найти неотслеживаемые файлы в дереве Perforce? (аналог статуса svn)

В качестве альтернативы P4Win используйте 9X_source-control параметр «Локальные файлы не в хранилище» на 9X_revision-control левой панели просмотра.

Я редко использую 9X_vcs P4V, но я думаю, что это эквивалентно выбору 9X_version-control «Скрыть локальные файлы рабочей области» в 9X_version-control раскрывающемся списке фильтров на вкладке 9X_source-code-control «Представление рабочей области». p4 help 9X_p4 fstat

В P4V 2015.1 вы найдете эти параметры 9X_sccs под кнопкой фильтра следующим образом: 9X_Как найти неотслеживаемые файлы в дереве Perforce? (аналог статуса svn)_version-control

4
0

Ответ #8

Ответ на вопрос: Как найти неотслеживаемые файлы в дереве Perforce? (аналог статуса svn)

Я использую в своем инструменте следующее, которое 9X_perforce создает резервную копию любых файлов в рабочей 9X_version-control области, которые отличаются от репозитория 9X_vcs (для Windows). Он обрабатывает некоторые 9X_scm странные случаи, которые не очень нравятся 9X_source-code-control Perforce, такие как встроенные пробелы, звездочки, проценты 9X_scc и решётки:

dir /S /B /A-D | sed -e "s/%/%25/g" -e "s/@/%40/g" -e "s/#/%23/g" -e "s/\*/%2A/g" | p4 -x- have 1>NUL: 

«dir /S /B /AD» перечисляет все файлы в этой 9X_sccs папке или ниже (/S) в «голом» формате (/B), за 9X_source-control исключением каталогов (/A-D). Команда «sed» изменяет 9X_scm опасные символы на их форму «%xx» (а-ля HTML), а 9X_source-control команда «p4 have» проверяет этот список («-x-») на 9X_p4 предмет того, что сервер ничего не отбрасывает. о 9X_perforce файлах, которые он фактически находит в 9X_source-code-management репозитории («1>NUL:»). В результате получается 9X_perforce набор строк типа:

Z:\No_Backup\Workspaces\full\depot\Projects\Archerfish\Portal\Main\admin\html\images\nav\navxx_background.gif - file(s) not on client. 

И вуаля!

4
0

Ответ #9

Ответ на вопрос: Как найти неотслеживаемые файлы в дереве Perforce? (аналог статуса svn)

Быстро и грязно: в p4v щелкните правой кнопкой 9X_version-control мыши папку, о которой идет речь, и добавьте 9X_version-control все файлы под ней в новый список изменений. Список 9X_version-control изменений теперь будет содержать все файлы, которые 9X_source-code-control в настоящее время не являются частью хранилища.

2
0

Ответ #10

Ответ на вопрос: Как найти неотслеживаемые файлы в дереве Perforce? (аналог статуса svn)

Следующие команды производят вывод, похожий 9X_perforce на статус, но ни одна из них не является 9X_source-code-management полностью эквивалентной svn status или git status, предоставляя 9X_sccs однострочную сводку статуса каждого файла:

  • p4 status
  • p4 opened
  • p4 diff -ds

1
0