У кого-нибудь есть сценарий или псевдоним для поиска неотслеживаемых (на самом деле: не добавленных) файлов в дереве Perforce?
РЕДАКТИРОВАТЬ: Я обновил принятый ответ на этот вопрос, поскольку похоже, что P4V добавил поддержку этого в выпуске января 2009 года.
version-control
perforce
Дэвид Джойнер
источник
источник
p4 status
не просто НАХОДИТ неотслеживаемые файлы, он НАЧИНАЕТ ИХ ОТСЛЕЖИВАНИЕ. Т.е.p4 status
это не запрос только для чтения, как можно было бы догадаться по названию, а на самом деле команда, которая меняет что-то, а не файлы рабочей области. Это НЕ то, что должна делать команда статуса, и НЕ то, чтоsvn status
делает. Самое близкое, что я могу найти,svn status
этоp4 reconcile -na
- -a сказать «файлы, которые следует добавить», -n сказать «фактически ничего не меняйте». /// Я изначально сказал что-то более сильное.p4 status
) , и сам ответил на него. Лучше приветствоватьp4 reconcile
иp4 status
работают чертовски медленно, аgit status
завершаются за 1-3 секунды.Ответы:
РЕДАКТИРОВАТЬ: Пожалуйста, используйте
p4 status
сейчас. Больше нет необходимости прыгать через обручи. См. Ответ @ ColonelPanic .В версии P4V от января 2009 г. вы можете щелкнуть правой кнопкой мыши любую папку в дереве рабочего пространства и выбрать «согласовать автономную работу ...»
Это произведет небольшую обработку, а затем вызовет представление с разделенным деревом файлов, которые не были извлечены, но имеют отличия от версии депо или не зарегистрированы вообще. Может быть даже несколько других категорий.
Вы можете щелкнуть правой кнопкой мыши файлы в этом представлении и проверить их, добавить или даже отменить.
Это очень удобный инструмент, который несколько раз спасал мою задницу.
РЕДАКТИРОВАТЬ: вопрос, заданный конкретно о скриптах, но я оставлю этот ответ здесь на всякий случай.
источник
p4 status
не просто НАХОДИТ неотслеживаемые файлы, он фактически НАЧИНАЕТ ИХ ОТСЛЕЖИВАНИЕ. Т.е.p4 status
это не запрос только для чтения, как можно было бы догадаться по названию, а на самом деле команда, которая меняет что-то, а не файлы рабочей области. Это НЕ то, что должна делать команда статуса, и НЕ то, чтоsvn status
делает. Самое близкое, что я могу найти,svn status
этоp4 reconcile -na
- -a сказать «файлы, которые следует добавить», -n сказать «фактически ничего не меняйте». /// Я изначально сказал что-то более сильное.p4 status
по сути является синонимомp4 reconcile -n
. Возможно, вы сбежали,p4 status -A
что является синонимомp4 reconcile
?В linux или если у вас установлены gnu-tools в Windows:
Это покажет сообщение об ошибке для каждого неучтенного файла. Если вы хотите записать этот вывод:
источник
.p4ignore
и может предварительно просматривать и автоматически редактировать неотслеживаемые / измененные / удаленные файлы.find . -type l
) и дает вводящий в заблуждение вывод для принудительно добавленных файлов P4, потому что они содержат символы@
или%
. Однако таких файлов меньшинство, поэтому в большинстве случаев можно просмотреть эти крайние случаи вручную.Под Unix:
Это распечатает список файлов, которые не добавлены в ваш клиент или хранилище Perforce. Я раньше
! -name '*~'
исключал файлы, заканчивающиеся на ~.источник
Ах, один из классиков Perforce :) Да, это действительно отстой, что ВСЕ ЕЩЕ нет простого способа, встроенного в команды по умолчанию.
Самый простой способ - запустить команду, чтобы найти все файлы в корневом каталоге ваших клиентов, а затем попытаться добавить их в хранилище. Вы получите список изменений всех новых файлов, а существующие файлы будут проигнорированы.
Например, dir / s / b / AD | p4 -x - добавить
(используйте 'find. -type f -print' из командной строки nix).
Если вам нужен физический список (в консоли или файле), вы можете передать результаты сравнения (или добавить, если вы также хотите, чтобы они были в списке изменений).
Если вы запускаете это в P4Win, вы можете использовать $ r для замены клиентского корня текущей рабочей области.
источник
Да, НО .
В Perforce версии 2012.1 есть команда
p4 status
и в P4V «согласовать автономную работу». Однако они оба очень медленные. Чтобы исключить нерелевантные файлы, вам необходимо написатьp4ignore.txt
файл на https://stackoverflow.com/a/13126496/284795источник
p4 status
После выпуска 2012.1 было несколько улучшений производительности . Если вы избегали из-p4 status
за проблем с производительностью, возможно, стоит протестировать его снова, чтобы увидеть, как он себя ведет сейчас.Я чувствую себя вынужденным добавить ответ, поскольку принятый ответ и некоторые другие имеют то, что я считаю серьезной проблемой: они не понимают разницы между командой запроса только для чтения и командой, которая вносит изменения.
Я не жду никакого уважения к этому ответу, но надеюсь, что он поможет другим избежать тратить время и делать ошибки, следуя принятому, но ИМХО неверному ответу.
--- + КРАТКОЕ
Вероятно, самый удобный способ найти все неотслеживаемые файлы в рабочей области perforce -
p4 reconcile -na
.-a
говорит: «Дайте мне файлы, которых нет в репозитории, т.е. которые должны быть добавлены».-n
говорит «не вносить изменений» - т.е. пробный прогон. (Хотя в сообщениях может быть сказано «открыто для добавления», мысленно вы должны интерпретировать это как «было бы открыто для добавления, если не -n»)Вероятно, наиболее удобный способ найти все локальные изменения, сделанные в автономном режиме - не только файлы, которые, возможно, потребуется добавить, но также файлы, которые, возможно, потребуется удалить, или которые были изменены без открытия для редактирования с помощью
p4 edit
, - этоp4 reconcile -n
.В нескольких ответах представлены сценарии, часто с участием
p4 fstat
. Хотя я не проверил все эти сценарии, я часто использую аналогичные сценарии, чтобы восполнить недостатки команд perforce, таких какp4 reconcile -n
- например, часто я обнаруживаю, что мне нужны локальные пути, а не пути Perforce депо или пути рабочей области.--- + ВНИМАНИЕ
p4 status
НЕ является аналогом команд состояния в других системах контроля версий.p4 status
НЕ является запросом только для чтения.p4 status
фактически находит такие же измененияp4 reconcile
и добавляет их в репозиторий.p4 status
похоже, не имеет такой-n
возможности, какp4 reconcile
пробный запуск .Если вы это сделаете
p4 status
, посмотрите на файлы и подумайте: «О, они мне не нужны», тогда вам придетсяp4 revert
их использовать, если вы хотите продолжить редактирование в той же рабочей области. В противном случае изменения,p4 status
добавленные в ваш набор изменений, будут проверены в следующий раз.Кажется, мало или нет причин использовать
p4 status
вместоp4 reconcile -n
, за исключением некоторых деталей локального рабочего пространства и пути к депо.Я могу только представить, что тот, кто выбрал «статус» для команды, не предназначенной только для чтения, имел ограниченное владение английским языком и другими инструментами управления версиями.
--- +
P4V
графический интерфейсВ графическом пользовательском интерфейсе
p4v
команда согласования находит локальные изменения, которые может потребоваться добавить, удалить или открыть для редактирования. К счастью, по умолчанию он не добавляет их в список изменений; но вы все равно можете быть осторожны, чтобы закрыть окно согласования после его проверки, если вы не хотите фиксировать изменения.источник
Я использую следующее в моем инструменте, который выполняет резервное копирование любых файлов в рабочей области, которые отличаются от репозитория (для Windows). Он обрабатывает некоторые странные случаи, которые Perforce не очень любит, такие как встроенные пробелы, звездочки, проценты и хэш-метки:
« dir / S / B / AD » перечисляет все файлы в этой папке ( / S ) или ниже в «чистом» формате ( / B ), за исключением каталогов (/ AD ). « Sed » изменяет опасные символы на их форму « % xx » (а-ля HTML), а команда « p4 have » проверяет этот список (« -x- ») на соответствие сервера, отбрасывая все, что касается файлов, которые он фактически находит в репозитории (" 1> NUL: "). В результате получается набор таких строк:
И вуаля!
источник
В качестве альтернативы из P4Win используйте опцию «Локальные файлы не в хранилище» на левой панели просмотра.
Я не часто использую P4V, но я думаю, что эквивалентным вариантом является выбор «Скрыть файлы локальной рабочей области» в раскрывающемся списке фильтров на вкладке представления «Рабочая область». P4 help fstat
В P4V 2015.1 вы найдете эти параметры под кнопкой фильтра следующим образом:
источник
Quick 'n Dirty: в p4v щелкните правой кнопкой мыши папку, о которой идет речь, и добавьте все файлы под ней в новый список изменений. Список изменений теперь будет содержать все файлы, которые в настоящее время не являются частью хранилища.
источник
Следующие команды производят вывод, похожий на статус, но ни одна из них не эквивалентна
svn status
илиgit status
, обеспечивая однострочную сводку статуса каждого файла:p4 status
p4 opened
p4 diff -ds
источник
У меня недостаточно очков репутации для комментариев, но в решении Росс также перечислены файлы, открытые для добавления. Вероятно, вы не захотите использовать его ответ для очистки своего рабочего места.
Следующее использование
p4 fstat
(спасибо, Марк Харрисон) вместоp4 have
и перечисляет файлы, которые не находятся в хранилище и не открыты для добавления.=== Жак
источник
Быстрый метод, но немного ортодоксальный. Если кодовая база не добавляет новые файлы / не слишком часто меняет представление, вы можете создать локальный репозиторий git вне своей кассы. Из чистой синхронизации perforce, git init, добавьте и зафиксируйте все файлы локально. Статус Git быстр и покажет файлы, которые ранее не зафиксированы.
источник
Команда
p4 fstat
позволяет вам проверить, существует ли файл в рабочей области, в сочетании сfind
поиском файлов для проверки, как в следующем примере Perl:Или вы можете использовать
p4 reconcile -n -m ...
Если он «открыт для удаления», значит, он был удален из рабочей области. Обратите внимание, что указанная выше команда работает в режиме предварительного просмотра (
-n
).источник
Мне нужно было что-то, что работало бы в Linux, Mac или Windows. Поэтому я написал для него сценарий Python. Основная идея состоит в том, чтобы перебирать файлы и выполнять их
p4 fstat
для каждого. (конечно, игнорируя зависимости и папки tmp)Вы можете найти его здесь: https://gist.github.com/givanse/8c69f55f8243733702cf7bcb0e9290a9
источник
Эта команда может предоставить вам список файлов, которые необходимо добавить, отредактировать или удалить:
p4 status -aed ...
вы также можете использовать их отдельно
p4 status -a ...
p4 status -e ...
p4 status -d ...
источник
В P4V в пункте меню «Вид» выберите «Файлы в папке», на правой панели появится новая вкладка. Справа от вкладок есть маленький значок, который вызывает окно под названием «Файлы в папке» с двумя значками. Выберите значок слева, который выглядит как воронка, и вы увидите несколько вариантов. Выберите «Показать предметы не на складе», и все файлы в папке появятся. Затем просто щелкните правой кнопкой мыши файл, который хотите добавить, и выберите «Отметить для добавления ...». Вы можете проверить его наличие на вкладке «Ожидающие». Просто отправьте как обычно (Ctrl + S).
источник