Правильный тип сценариев оболочки в подвале

Когда я добавляю оболочку script (foo.sh) в subversion, по умолчанию она устанавливает svn:mime-type в application/x-shellscript. Поскольку это не начинается с text/, diff и винить по существу игнорируют файл. Я посмотрел официальный список текстовых mime-типов, но не видел ничего похожего на оболочку script.

Есть ли хорошее значение для его установки?

Update

Следуя приведенным ниже советам, я установил тип mime в text/x-shellscript. Однако обвинение по-прежнему считает, что это двоичный файл.

$ svn blame file.sh 
Skipping binary file: 'file.sh' 
$ svn proplist file.sh 
Properties on 'file.sh':
  svn:executable
  svn:mime-type 
$ svn propget svn:mime-type file.sh
 text/x-shellscript

Есть ли что-то еще, что мне нужно сделать, чтобы убедить subversion в том, что это текстовый файл?

Ответ 1

Утилита file использует "text/x-shellscript" для сценариев оболочки:

$ file --mime-type /tmp/test.sh
/tmp/test.sh: text/x-shellscript

Ответ 2

Авто-свойства - это полностью клиентская функция. С помощью auto = properties вы также можете определить | переопределить некоторые свойства для добавления в объекты репозитория Subversion (например, для старых добавлений вам необходимо переопределить неправильный тип mime)

В config файле вашего подрывника (зависящее от платформы местоположение)

  • в [miscellany] раздел uncomment # enable-auto-props = yes строка
  • в разделе [auto-props] раскомментировать # *.sh = svn:eol-style=native;svn:executable и отредактировать (удалите ненужные, добавьте необходимые, например svn:mime-type=text/plain)

После этого все новые *.sh файлы в репо появятся в виде текста /plain.

Но поскольку конфигурация является клиентской, а изменения в ней не заполняются в репо, любой другой клиент Subversion будет продолжать добавлять *.sh файлы в текст /x -shellscript, если ваши изменения не будут повторяться

Ответ 3

Subversion редко устанавливает типы mime самостоятельно; либо ваш клиент сделал это сам по себе (в этом случае вы, вероятно, захотите настроить его конфигурацию), или какая-либо форма стандартной обработки автообеспечения svn активна (опять же, вы захотите ее отрегулировать - для сценариев оболочки вы также будете хотите установить svn: eol-style в LF, некоторые оболочки будут закрыты на концах строк DOS/Windows, и, гарантируя, что окончание строк Unix используется повсюду, вы избегаете проблем с использованием файлов через общий сетевой ресурс или некоторые сборки Windows для оболочек (например, Cygwin)).

Проблема с svn виной заключается в том, что свойство имеет версию. Любая ревизия файла до изменения свойства по-прежнему является двоичной (поскольку тип mime не начинается с текста /), поэтому diff (и вины) не будут работать (легко) против этих изменений.

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

Однако, как обходной путь, вы должны иметь возможность передать --force, чтобы обвинить его, чтобы он обрабатывал все файлы как текст.

Фактически, глядя на http://subversion.1072662.n5.nabble.com/svn-blame-not-working-for-files-which-had-binary-mime-type-in-a-previous-revision-td177847.html, недавние клиенты подрывной деятельности скажут вам использовать -force.