git-p4 ест мои файлы изображений - PullRequest
4 голосов
/ 08 декабря 2009

Итак, я могу без проблем импортировать из p4 используя git-p4. Кажется, все работает, но мои файлы PNG (и, возможно, другие) повреждены.

Я читал о gitattributes и проблемах с окончанием строки, но ничто из того, что я делаю, не меняет конечного результата. Разбитые изображения.

Мой файл атрибутов: * .png бинарный

Есть идеи? Насколько я понимаю, git должен быть достаточно умным, чтобы понять, что png - это двоичный файл без этой помощи.

Это как-то связано с тем, как p4-git извлекает файлы из Perforce?

Обновление: это на Windows. Я забыл, что это будет важно.

Ответы [ 3 ]

6 голосов
/ 08 декабря 2009

Формат файла PNG имеет заголовок, который специально разработан для поиска программ, которые завершают преобразование и вызывают сбой, если нет.

8 байтов PNG-файла: 89 50 4E 47 0D 0A 1A 0A, выбранных специально потому, что они содержат новую строку Unix и новую строку Windows - поэтому программы, выполняющие автоматическое преобразование, автоматически аннулируют PNG. PNG Обоснование подписи

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

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

Здесь есть несколько уровней (очень) негерметичной абстракции.

Во-первых, существует сервер, который может хранить файлы на сервере Perforce. Во-вторых, клиент перформанса может искажать символы новой строки. В-третьих, скрипт python может искажать символы новой строки (маловероятно). В-четвертых, git может искажать переводы строк.

Теперь в окнах и только в окнах git по умолчанию автоматически изменяет строки. (99% сообщества git, похоже, ненавидят это значение по умолчанию, но это, по-видимому, единственный разумный вариант по умолчанию в Windows).

В результате, если у вас есть "проблемы" с новой строкой, я предлагаю вручную исследовать каждый слой и точно указать, как вы хотите, чтобы новые строки обрабатывались. Я предлагаю сделать их явными, а не автоматическими.

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

Наслаждайтесь.

0 голосов
/ 18 февраля 2010

Убедитесь, что ваш файл PNG установлен в «бинарный» тип в Perforce.У меня просто была эта проблема со случайным двоичным файлом, установленным в «текстовый» тип в Perforce.Я не уверен, почему Perforce сделал этот файл текстовым, но это вызвало проблемы с обнаружением git-p4 того, что делать с этим файлом.

...