Perforce: Сохранение Perforce от изменения формата текстового файла - PullRequest
14 голосов
/ 28 января 2010

Есть ли способ указать Perforce оставить текстовые файлы в покое, не задавая тип файла как двоичный? Или, если не считать этого, есть ли способ сообщить клиенту Perforce разностные двоичные файлы? Двоичный файл обычно нежелателен, потому что я теряю способность различать.

Для пояснения: если я отредактирую и внесу изменения в файл * .txt на моем оконном клиенте, новые строки будут иметь CR + LF в соответствии с форматом DOS. Но если я синхронизирую P4 на Unix-клиенте, у него будет только LF. Мне нужно, чтобы Perforce сохранял формат как есть, независимо от того, где живет клиент Perforce.

Тем не менее, у меня есть обходной путь: установите тип файла как двоичный; и / или создать ветку с текстовыми файлами, установленными как «текстовые», и периодически интегрировать обратно в основную линию, где текстовые файлы установлены как «двоичные». Но это слишком сложный обходной путь для того, что должно быть очень простой проблемой.

Наконец-то я на Perforce Windows client 2006.2.

Заранее спасибо.

Ответы [ 5 ]

9 голосов
/ 29 января 2010

Установите все ваши спецификации клиента / рабочего пространства на конец строки 'unix'. Тогда при регистрации в Windows преобразование не произойдет.

См. http://answers.perforce.com/articles/KB_Article/CR-LF-Issues-and-Text-Line-endings/

5 голосов
/ 28 января 2010

Клиент Perforce может правильно обрабатывать окончание строки при синхронизации с различными платформами, если на вашем клиенте правильно установлена ​​опция LineEnd. Может быть, вы ошиблись? Откройте спецификации вашего клиента и установите опцию LineEnd в соответствии с вашими потребностями.

Проверьте эту статью KB на их веб-сайте для получения дополнительной информации. Вот выдержка:

На стороне сервера выполняйте процессы все текстовые файлы с использованием Unix-стиля LF линия окончаний. Хотя магазины Perforce сервер архивных файлов на диске в родная линия операционной системы Соглашение о расторжении (CR / LF на Windows, LF на Unix), все окончания строк нормализованы в LF в стиле Unix окончания строки для внутреннего перфекта Серверные операции, такие как синхронизация p4, p4 отправить и p4 diff.

На стороне рабочего пространства клиента Perforce обработка концов строк определяется глобальным вариантом для каждого clientspec. Когда вы синхронизируете текстовые файлы в рабочую область клиента с синхронизацией p4, или отправить их обратно на сервер Perforce с отправкой p4, их окончания строки конвертируется как указано в Раздел ClientEnd LineEnd.

3 голосов
/ 10 августа 2011

Я только что столкнулся с точно такой же проблемой, но у меня есть лучшее решение, которое не включает изменение спецификаций клиента (которые являются международными, и не все, к которым у меня есть доступ для записи).

Все наши клиенты - ПК с Windows, но Cygwin входит в состав Perforce Depot. Cygwin является реализацией Unix для Windows и требует, чтобы текстовые файлы использовали LF для окончания строк.

Возможное решение для более старых версий Cygwin - монтировать корень с помощью опции «текст», что означает, что файлы могут иметь окончания строк CR + LF. Однако при обновлении до Cygwin 1.7.9 это больше не работает, так как монтирование временно, если оно не записано в / etc / fstab. Мне не удалось сделать эту работу.

К счастью, сидящий рядом со мной гуру Perforce предложил решение изменить тип файла на двоичный + D , который использует то же хранилище инкрементных патчей RCS, что и текстовые файлы, но без автоматического завершения строки преобразование.

Я могу успешно разнести эти «текстовые» файлы между моим локальным рабочим пространством и депо.

1 голос
/ 08 февраля 2010

При добавлении текстовых файлов, которые вы хотите считать двоичными, в Perforce, используйте команду p4 add с опцией -t, чтобы переопределить таблицу отображения типов. Смотри документацию здесь . Приведенный здесь пример p4 add -t binary file.pdf.

0 голосов
/ 28 января 2010

Дайте файлам другое расширение.

...