2010-01-28 4 views
13

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

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

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

И наконец, я нахожусь на Perforce Клиент Windows 2006.2.

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

ответ

8

Задайте все спецификации вашего клиента/рабочего пространства линиям «unix». Тогда при входе в Windows преобразование не произойдет.

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

+0

Хорошо. Это намного лучше. Хотя это и не идеально, это намного лучше, чем создавать отдельную ветку. Благодаря! – hythlodayr

+0

Ссылка обновлена: http://answers.perforce.com/articles/KB_Article/CR-LF-Issues-and-Text-Line-endings/ –

-3

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

+1

Нет, поскольку они должны быть файлами качества производства. Нужно иметь возможность синхронизировать и копировать в среду без проблем и без проблем. В том же ключе unix2dos тоже не вариант. – hythlodayr

5

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

Отъезд this KB article на своем сайте для получения дополнительной информации. Вот выдержка:

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

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

+0

Я этого боялся, но спасибо за статью. Проще говоря, наши клиенты Unix perforce (и файловый сервер) должны иметь возможность сочетать текстовые файлы Windows и Unix. Еще хуже: у нас есть определенные текстовые файлы локализации (похожие на файлы свойств Java), которые управляет сервером Perforce. Увы, единственное решение состоит в том, чтобы установить вещи в двоичные. – hythlodayr

+0

@hythlodayr: У вас есть контракт на поддержку с Perforce? Если это так, вы можете позвонить им. Возможно, они знают некоторые трюки, которые могут заставить его вести себя так, как вы хотите. – raven

+0

Проблема в том, что она не работает, и Perforce отказывается признать ошибку. Perforce портит все текстовые файлы по умолчанию, если вы когда-либо отправляете файл из * nix, у которого есть окончания строки Windows или наоборот. – Richard1403832

1

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

3

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

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

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

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

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