Могут ли git .gitattributes обрабатывать все файлы как двоичные, кроме нескольких исключений? - PullRequest
16 голосов
/ 24 ноября 2010

У меня есть особая потребность в git для обработки большинства расширений файлов как двоичных, за исключением нескольких расширений.

Я хотел бы рассматривать все расширения файлов как двоичные, .pdf .doc .xls и т. Д., Кромепростые текстовые файлы, такие как .txt .rb .py и т. д.

Я попытался настроить .gitattributes, как показано ниже, чтобы посмотреть, как это может работать:

# cat .gitattributes 
* binary
*.txt text

Я подумал, возможно, порядок вфайл конфигурации будет иметь значение, но это не так.При указанной выше конфигурации все файлы по-прежнему считаются двоичными.

Есть ли способ настроить .gitattributes или git любым другим способом для обработки всех файлов одним способом, как двоичным, за исключением нескольких исключений?

Обновление 1:

Я попробовал .gitattributes, описанные ниже.Это работает!

# cat .gitattributes 
*.txt crlf diff
* binary


# git diff
diff --git a/file b/file
index d929b94..bee5cb1 100644
Binary files a/file and b/file differ

diff --git a/file.txt b/file.txt
index 632ae98..93d22b0 100644
--- a/file.txt
+++ b/file.txt
@@ -1 +1,3 @@
 Hey this is a .txt file
+Adding another line
+A new line

Обновление 2:

Я полагаю, что crlf и текст совпадают, т.е. две приведенные ниже конфигурации для .gitattributes одинаковы:

# cat .gitattributes 
*.txt crlf diff
* binary

# cat .gitattributes 
*.txt text diff
* binary

Ответы [ 2 ]

20 голосов
/ 24 ноября 2010

binary - это макрос, устанавливающий атрибут crlf и diff (на самом деле их здесь сбрасывают)
См. « ИСПОЛЬЗОВАНИЕ АТРИБУТНЫХ МАКРОСОВ » на справочной странице .gitattribute .

Если атрибут установлен или не установлен, если не может быть изменен последующим правилом.

Так что вы можете попробовать:

* binary
*.txt crlf diff

Таким образом, crlf и diff, установленные для файлов *.txt, они не будут сброшены двоичным макросом для тех же самых файлов *.txt, в то время как они будут сброшены для всех остальных файлов.

После коммита 2009 b9d14ff эти правила должны иметь следующий вид:

  • из более общих
  • к более конкретным.
    («более поздняя строка переопределяет более раннюю»)
1 голос
/ 24 ноября 2010

git не имеет понятия «двоичные» и «текстовые» файлы. Все это определено как набор атрибутов, которые определяют, как мы должны выполнять слияния, сравнения, преобразования CR / LF, обрабатывать пробелы, применять фильтры и множество других вещей.

binary и синтаксис *.o binary на самом деле основывается на макросах, то есть binary - это макрос, который расширяется до целого ряда различных атрибутов, которые обозначают слияние, различие, обработку CR / LF и т. д.

Насколько я вижу, макроса text нет. binary расширяется до -crlf -diff, поэтому отключение двоичного кода и возврат к обработке в текстовом стиле, по-видимому, crlf diff.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...