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, с которой вы работаете.