Форум программистов, компьютерный форум, киберфорум
Наши страницы
Dmitriy_M
Войти
Регистрация
Восстановить пароль
Оценить эту запись

Пример git хука. Форматирование кода перед коммитом

Запись от Dmitriy_M размещена 11.09.2013 в 23:31
Метки astyle, git, hook, perl

Про перехватчики (hook) немножко можно почитать тут.

Данный хук призван помочь с форматированием кода, под внутренний стандарт кодирования.
В качестве инструмента будет использоваться Astyle и язык сценариев Perl.

Собственно сам скрипт
Perl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#!/bin/perl
use File::Copy qw(copy);
 
open(GIT_STATUS,"git status -s |") || die "failed: $!\n";
while ( <GIT_STATUS> ){
    if (m/^(A|M)\s+(\S+\.(h|cpp|c|cxx|hpp))$/){
        print "styling $2\n";
        my $ret = system("astyle", $2, "$2.styling");
        if( $ret != 0) {
            print "styling failed\n";
            unlink "$2.styling";
            exit(1);
        } else {
            copy("$2.styling",$2);
            unlink "$2.styling";
        }
    }
}
Скрипт получает список добавленных и измененных файлов, создав пайп и вызвав git с параметрами status -s.
Потом читает вывод команды, проверяет имя файла регуляркой и пытается применить astyle к этому файлу.
Если return code отличен от 0, то произошел epic fail и выходим с кодом 1.
В случае если хук возвращает код отличный от 0, то git прерывает дальнейшую работу.

Подобные штуки могут быть удобны когда не стандартизированы средства разработки(в частности IDE), к примеру в Open Source проекте.
Размещено в Без категории
Просмотров 1218 Комментарии 0
Всего комментариев 0
Комментарии
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru