Иногда я использую функцию «Согласование автономной работы ...» в среде Perforce P4V IDE для синхронизации любых файлов, над которыми я работал, отключившись от хранилища P4. Он запускает другое окно, которое выполняет «Различие папок».
У меня есть файлы, которые я никогда не хочу регистрировать в системе управления версиями (например, файлы, находящиеся в папке bin, такие как библиотеки DLL, сгенерированный код и т. Д.). Есть ли способ отфильтровать эти файлы / папки, чтобы они не отображались как «новые», которые могут быть добавлен. Они имеют тенденцию загромождать список файлов, которые мне действительно интересны. Есть ли в P4 эквивалент функции Subversion «игнорировать файл»?
Ответы:
Начиная с версии 2012.1 Perforce поддерживает
P4IGNORE
переменную среды. Я обновил свой ответ на этот вопрос об игнорировании каталогов, объяснив, как это работает. Потом я заметил этот ответ, который, я думаю, теперь излишний.Предполагая, что у вас есть клиент с именем «CLIENT», каталог с именем «foo» (расположенный в корне вашего проекта), и вы хотите игнорировать все файлы .dll в этом дереве каталогов, вы можете добавить следующие строки в представление рабочей области для выполнения этот:
Первая строка удаляет их из каталога «foo», а вторая строка удаляет их из всех подкаталогов. Теперь, когда вы «Согласовываете автономную работу ...», все файлы .dll будут перемещены в папки «Исключенные файлы» в нижней части экрана сравнения папок. Они не будут мешать вам, но все равно смогут просматривать их и манипулировать ими, если вам это действительно нужно.
Вы также можете сделать это другим способом, который сократит вашу папку «Исключенные файлы» до одной, но вы не сможете манипулировать ни одним из файлов, которые она содержит, потому что путь будет поврежден (но если вы просто хотите, чтобы они были по-вашему, это не имеет значения).
источник
Reconcile Offline Work
диалогового окна. Он работает, если вы откроете его внутри,Advanced Reconcile...
но это бесполезно, потому что в 99,9% случаев вам не нужно или не нужно использовать расширенный диалог.Да, но.
В Perforce версии 2012.1 добавлена функция p4ignore , вдохновленная Git. Однако разработчики Perforce внесли безосновательные изменения в поведение, что сделало эту функцию менее полезной.
В то время как Git берет правила из всех
.gitignore
файлов, Perforce не знает, где искать, пока вы не укажете имя файла в переменной средыP4IGNORE
. Эта свобода - проклятие. Вы не можете взломать два репозитория, которые используют разные имена для своих файлов игнорирования.Кроме того, не работает функция игнорирования Perforce. Вы можете настроить его достаточно легко для себя, но другие не получат выгоды, если они явно не согласятся. Участник, который этого не сделал, может случайно зафиксировать нежелательные файлы (например,
bin
папку, созданную сценарием сборки).Функция игнорирования Git великолепна, потому что она работает как нельзя лучше. Если
.gitignore
файлы будут добавлены в репозиторий ( это делают все ), они будут работать из коробки для всех. Никто случайно не опубликует свой закрытый ключ.Забавно, но в документации Perforce показано «.p4ignore» в качестве примера правила игнорирования, которое является обратным! Если правила полезны, их следует использовать как часть репозитория.
Perforce все еще может улучшить эту функцию. Выберите соглашение для имен файлов, скажем
p4ignore.txt
, так, чтобы функция работала как нельзя лучше. ОтбросьтеP4IGNORE
переменную окружения, это контрпродуктивно. Отредактируйте документы, чтобы побудить разработчиков делиться полезными правилами. Разрешите пользователям записывать личные правила в файл в своей домашней папке, как это делает Git .Если вы знаете кого-нибудь в Perforce, отправьте им этот пост по электронной почте.
источник
Это работает с Perforce 2013.1, новый механизм P4IGNORE был впервые добавлен в выпуске 2012.1, описанном в блоге Perforce здесь:
Как это сейчас описано, вы устанавливаете переменную среды «P4IGNORE» в имя файла, которое содержит список файлов, которые следует игнорировать.
Так что вы можете проверить это, чтобы увидеть, как вам это нравится.
источник
Если вам нужно решение, которое будет применяться ко всем рабочим пространствам без необходимости копирования, вы (или ваш системный администратор) можете отказаться от отправки этих типов файлов, используя строки, подобные приведенным ниже в таблице защиты p4:
Я помню, как делал это раньше, но у меня нет необходимых разрешений, чтобы проверить это здесь. Ознакомьтесь с руководством системного администратора Perforce и попробуйте его
источник
Perforce Streams значительно упрощает игнорирование файлов, начиная с версии 2011.1. Согласно документации, вы можете игнорировать определенные расширения или определенные пути в вашем каталоге.
Из
p4 help stream
По сути, это делает то, что указывает ответ @raven, но с потоками это делается проще, поскольку он автоматически распространяется на все рабочие пространства, использующие этот поток. Это также применимо к любым потокам, унаследованным от потока, в котором вы указываете типы игнорирования.
Вы можете редактировать поток,
p4 stream //stream_depot/stream_name
щелкнув его правой кнопкой мыши в представлении потока p4v.И, как отметил @svec, скоро появится возможность указывать игнорируемые файлы для каждой рабочей области, и фактически она находится в бета-версии P4 2012.1.
источник
Предложение Уилла об использовании работает
.p4ignore
только с плагином WebSphere Studio (P4WSAD). Я просто попробовал это в своем локальном окне Windows, и любые файлы и каталоги, которые я перечислил, не были проигнорированы.Предложение Raven по изменению спецификации вашего клиента - правильный путь в Perforce. Правильная организация вашего кода / данных / исполняемых файлов и сгенерированных выходных файлов значительно упростит процесс исключения файлов из проверки.
В качестве более драконовского подхода вы всегда можете написать триггер отправки, который будет отклонять отправку списков изменений, если они содержат определенный файл или файлы с определенным расширением и т. Д.
источник
ИСТОРИЧЕСКИЙ ОТВЕТ - уже не правильный. В то время, когда это было написано изначально, это было правдой;
Вы не можете записывать и проверять файл, который сервер будет использовать для создания правил игнорирования; общий шаблон файла glob или regexp игнорируется по необходимости.
Другие ответы имеют глобальные конфигурации сервера, которые являются глобальными (а не для каждой папки). Другие ответы показывают то, что может сработать для вас, если вы хотите, чтобы одна строка в вашем представлении для каждой папки умножалась на количество расширений, которые вы хотите игнорировать в этой отдельной папке, или которые предоставляют эту возможность только в подключаемых модулях WebSphere Studio, или предоставляют возможность для сервера администраторы, но недоступны для пользователей.
Короче говоря, я считаю Perforce очень слабым в этой области. Хотя я ценю, что те, кто использует подключаемый модуль Eclipse, могут его использовать
.p4ignore
, и я думаю, что это здорово, это оставляет тех из нас, кто этого не делает, в неведении.ОБНОВЛЕНИЕ: см. Принятый ответ для новой возможности P4IGNORE, добавленной в середине 2012 года.
источник
Я обнаружил, что проще всего согласовать автономную работу с помощью сценария BASH, подобного этому:
Я адаптировал это из этой статьи базы знаний Perforce .
источник
Я тоже ищу решение, подобное .p4ignore (и не привязанное к конкретной среде IDE). Пока что самое близкое, что я нашел, - это p4delta. Похоже, он будет делать именно то, что просил исходный плакат, хотя и через другой уровень косвенности.
http://p4delta.sourceforge.net
К сожалению, хотя это, похоже, дает правильный список файлов, я не могу заставить работать «p4delta --execute» («Невозможно изменить замороженную строку»), и проект не обновлялся в течение года. Возможно, другим повезет больше.
источник
Если вы используете плагин Eclipse Perforce, то в документации плагина перечислены несколько способов игнорировать файлы.
источник