Нелегко через gitattributes
, так как отрицательный шаблон запрещен.
На самом деле в эти дни (март 2013 г.) предлагается патч для Сделать !pattern
в .gitattributes
нефатальным.
Таким образом, вам нужно поместить глобальное правило, такое как *.txt
, только в .gitattributes
файлов, присутствующих в подкаталогах, где, как вы известно, вам не понадобится CRLF.
И зарезервируйте более подробные text
правила в .gitattributes
каталогах со смешанным содержимым.
kostmo упоминает в комментариях ошибка 421364 EGit:
Пока это не реализовано, я рекомендую эту настройку:
- Для каждого проекта Eclipse перейдите к
Properties > Resource
и измените «New text file line delimiter
» на Other: Unix
. Зафиксируйте получившиеся .settings/org.eclipse.core.runtime.prefs
файлов.
- Не настраивайте никаких
.gitattributes
или "core.autocrlf
" для Git.
Это означает, что файлы будут иметь те же окончания строк в рабочем каталоге, что и в репозитории. Git и EGit не будут преобразовывать содержимое файлов.
С 1. все новые файлы, созданные в Eclipse, будут иметь правильное (LF
) окончание строки, даже если они созданы пользователем в Windows.
Для файлов, которые уже есть в вашем репозитории с CRLF
, вы можете исправить их и зафиксировать результат. Я рекомендую использовать dos2unix
или fromdos
в командной строке.
Примечание: эта проблема (ошибка 421364) была обнаружена только что (25 марта) , 2014) был переквалифицирован как дубликат ошибки 342372 пользователем Ларс Фогель.
Итак, поддержка .gitattributes
в JGit "назначена", но ее реализация все еще продолжается.
Реализация пересматривается (январь 2015 г.):
- "отзыв 1614" Добавить базовую поддержку
.gitattributes
Основные классы для разбора и обработки .gitattributes
файлов, включая поддержку чтения атрибутов в WorkTreeIterator и dirCacheIterator.
- "review 35377" Добавляет вычисление атрибутов git в обход дерева
Добавляет функцию getAttributes
в обход дерева.
Вычисление атрибутов должно выполняться TreeWalk
, так как ему нужны как WorkingTreeIterator
, так и DirCacheIterator
.
Обновление за август 2018 г.: упомянутая выше ошибка (ошибка 342372) зависит от ошибка JGit 537410, которая только что была устранена.
"< strong>JGit rebase и stash не сохраняют окончание строки"
Проблема в том, что ResolveMerger
во время processEntry()
не запоминает CheckoutMetadata
(в котором JGit хранит фильтры и атрибуты eol) для файлов, а затем проверяет их в checkout()
, игнорируя любые атрибуты или фильтры.
У ResolveMerger.cleanUp()
та же проблема.
Коммит JGit 4027c5c (из отзыв 127290) должен это исправить.
Спасибо Томасу Вольфу strong> активный участник JGit.
Это дает надежду на EGit:
EGit, как правило, оставляет JGit всю эту обработку eol при подготовке/объединении/проверке.
Единственные места, где EGit должен заботиться об этом, — это фреймворк сравнения, когда он сам должен читать записи индекса, и там он уже правильно обрабатывает CheckoutMetadata
.
person
VonC
schedule
18.06.2013