LINUX.ORG.RU

Как определять кодировку каждого комита в pre-receive hook?

 ,


0

3

Объясню ситуацию, отталкиваясь от SVN. Там у нас есть серверный хук, который читает начало каждого пришедшего файла на присутствие BOM(byte order mask) для UTF-8 и выполняет некоторую обработку в соответствии с проверкой.

Сейчас похожее нужно реализовать на GIT. Тут другая архитектура, пока толком не въехал , как это необходимо делать =( Что делаю: написал pre-receive hook на python. Положил его в пустой(git init --bare) серверный репозиторий. Когда комичу, беру ссылки старого и нового комита(которые поступают в поток ввода pre-receive hook) и смотрю у них разницу(git diff oldcommit newcommit). Был некоторый успех, когда я увидел в первых комитах в строках различия символ <U+FEFF>. Например:

commit 36f7f6bc4577a967b184c280fec1db1ac349a5e8
Author: ss@mail.ru <prog@localhost.localdomain>
Date:   Mon Oct 14 11:23:51 2013 +0400

    fff

diff --git a/cor_en b/cor_en
index 44ac72b..e69de29 100644
--- a/cor_en
+++ b/cor_en
@@ -1,6 +0,0 @@
-<U+FEFF>again
-secasdasdond
-thirdyyhb
-
-sfsdddd
-new

Но вот в остальных комитах, уже не наблюдаю этого символа. Пробовал менять кодировку файла и комитить - не видно символа. Подскажите, как надёжно узнать кодировку каждого комита?

Вам нужно для каждого файла, входящего в diff, прочитать его «начало ... на присутствие BOM ... » (и т.п.).

Sorcerer ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.