SubGit и.gitattributes

Я импортирую SVN-репозиторий в Git, и у меня много файлов с svn:eol-style задавать. SubGit читает эти свойства и генерирует .gitattributes строка для каждого файла.

Есть ли способ сказать ему, чтобы использовать однострочник для каждого типа файла (т.е. *.java text или же *.java text eol=lf так как у нас есть правило руководства по стилю, которое обязывает это)?

Я пытался добавить info/attributes в хранилище непосредственно перед импортом, но нет никаких изменений в сгенерированном .gitattributes,

Есть ли способ сделать это?

1 ответ

Решение

На данный момент нет способа определить правила по умолчанию, такие как *.java test eol=lf для первоначального перевода, но если вы позже в ветке Git меняете .gitattributes заменить все строки на файл одним *.java test eol=lf Как правило, все последующие файлы Java с svn:eol-style=LF не приводят к появлению новых строк, но файлы Java с другими значениями стиля svn: eol приводят к дополнительным строкам в качестве исключений для *.java test eol=lf править.

Более того, даже рекомендуется иметь *.java test eol=lf правило, потому что когда вы создаете файл Java в Git, .gitattributes правила применяются к нему неявно, поэтому ваш вновь созданный Java-файл будет автоматически иметь "eol=lf", и когда вы отправите его в Git, SubGit переведет его в svn:eol-style=LF. Таким образом, это правило будет действовать так же, как автоматические свойства SVN.

SubGit не считает info/attributes файл вообще, потому что он не является версионным и существует только на локальном компьютере, пока SubGit работает на уровне сервера. Но вы можете использовать info/attributes на локальной машине переопределить .gitattributes если вам нужно это только на одной машине.

Я также хотел бы отметить, что вы должны быть осторожны при изменении .gitattributes файл. Когда вы вносите такое изменение в SVN, он обновляет svn: eol-style для всех файлов, для которых было изменено эффективное значение атрибута "eol".

Еще одно примечание: будьте осторожны при установке атрибута "eol" для файла со смешанными EOL: сначала измените его EOL на LF на уровне BLOB-объекта Git, или (что будет проще) установите svn:eol-style свойство на стороне SVN, потому что когда вы устанавливаете это свойство, Subversion автоматически исправляет содержимое файла, но Git этого не делает.

Вы упомянули две модели, *.java text или же *.java text eol=lf, но они на самом деле разные. Первый является частным случаем дефолта * text=auto !eol правило, если файл Java не содержит двоичных символов (поскольку он не содержит атрибута "eol", основной *-rule установит для него значение!eol, что соответствует svn:eol-style=native); так что это будет игнорироваться при добавлении. Второй установит svn:eol-style=LF для каждого файла Java, добавленного в Git.

Наконец, в будущих версиях мы (команда SubGit) планируем добавить возможность указать default *.java test eol=lf правила для первоначального перевода или вывода его на основе статистики по каждому расширению, но сейчас вы должны добавить эту строку вручную в каждую ветку Git, с которой вы работаете.

Другие вопросы по тегам