Типы mime cvs2svn
Чтобы учесть комментарий Ричарда и ответ Стину о том, что я должен указать независимо от файла mime типа и независимо от файла типа, отмеченного в CVS, я ищу, как обрабатывать все файлы как двоичный файл в cvs2svn? Возможно, это невозможно?
Пожалуйста, Ричард (или другие), можете ли вы сказать мне, как узнать помеченный тип в CVS для данного файла?
Здравствуйте, Как относиться ко всем файлам как к двоичному файлу?
Все 16 проходов (из cvs2svn) выполнены правильно, но несколько двоичных файлов повреждены (например,.gif). Там не рассматриваются как двоичный файл!
Командная строка, которую я использовал:
python C:\noinstaller\cvs2svn-2.2.0\cvs2svn -s "SVN_REPO" "CVS_REPO" --use-cvs
--encoding=latin1 --mime-types=svn-mime-types --eol-from-mime-type
--keywords-off --sort=C:\noinstaller\UnxUtils\usr\local\wbin\sort.exe
После прочтения FAQ по CVS2SVN я перепробовал много других вариантов, но один и тот же файл всегда поврежден.
Благодарю. Кристиан.
3 ответа
Я делаю вывод, что невозможно заставить cvs2svn рассматривать все файлы как двоичные файлы.
Subversion использует эвристический алгоритм, чтобы определить, является ли файл двоичным или нет. Во-первых, он проверяет, mime-types-file
Параметр конфигурации установлен и использует его для сопоставления файлов MIME-типам. Если не найдена такая конфигурация, она просматривает 1024 первых байта, и если более 15% находятся вне диапазона ASCII или любое из них является нулевым значением, файл считается двоичным. Чтобы специально установить MIME-тип для данного типа файла, вы должны использовать auto props.
Обратите внимание, что если Subversion определяет, что ваш файл MIME-типа image/x-xbitmap
или же image/x-xpixmap
, это будет рассматриваться как текстовый файл
Авто-реквизит влияет на svn add
а также svn import
действия и задаются с помощью конфигурации времени выполнения, которая указывается либо в параметрах командной строки, либо в файле конфигурации для Subversion, находящегося в каталоге conf установки Subversion. Следующие значения должны быть установлены:
# default is 'no', so we enable auto props with
enable-auto-props = yes
# specify absolute path to mime.types like file, e.g.
mime-types-file = /etc/mime.types
Это должно правильно сопоставить ваши двоичные файлы.
РЕДАКТИРОВАТЬ: Из руководства cvs2svn:
--auto-реквизита = ФАЙЛ
Укажите файл в формате файла конфигурации Subversion, чей раздел [auto-props] можно использовать для установки произвольных свойств файлов в хранилище Subversion на основе их имен файлов. (Должен присутствовать заголовок раздела [auto-props]; другие разделы файла конфигурации, включая настройку enable-auto-props, игнорируются.) Имена файлов сопоставляются с шаблонами имен файлов без учета регистра, что согласуется с поведением Subversion. Файл auto-props может иметь такой контент:
[auto-props] *.txt = svn:mime-type=text/plain;svn:eol-style=native *.doc = svn:mime-type=application/msword;!svn:eol-style
Итак, используя переключатель командной строки --auto-props
и файл auto-props, вы сможете получить желаемую функциональностьcvs2svn
скрипт
Что касается вопроса о том, как сделать так, чтобы cvs2svn рассматривал все файлы как двоичные, я могу лишь указать на раздел в FAQ, касающийся EOL.
Начиная с версии 2.0, стандартное поведение cvs2svn заключается в обработке всех файлов как двоичных, кроме тех, которые явно определены как текстовые.
Также из FAQ:
Если файл помечен как двоичный в CVS (с помощью cvs admin -kb, то cvs2svn всегда будет обрабатывать файл как двоичный.
Чтобы увидеть, помечен ли файл как двоичный, найдите параметр -kb для файла в CVS. В WinCVS для этого есть столбцы, а также Кодировка.
К сожалению, у меня нет решения для вас, но я бы попытался упростить аргументы вашей команды, чтобы сосредоточиться на том, что именно не работает для этих файлов. Использование файла --auto-props даст вам полный контроль над каждым файлом. Если ваш файл CVS "чистый" (имеется в виду, что все файлы правильно зафиксированы как текстовые и двоичные), параметр --default-style=native предположительно дает наилучшие результаты.
Удачи и дайте нам знать, что работает для вас.