Поиск по этому блогу

среда, 23 июля 2014 г.

GIT. Как править комментарии к коммитам.

Встала интересная задача импортировать из svn в git историю коммитов. Пошёл в гугл и первой ссылкой увидел что гит это предоставляет, для этого просто нужно инструмент доставить. Так как я сижу на ubuntu, то проблем не составило
sudo apt-get install git-svn
Далее ждём, чем больше было коммитов тем дольше ждём)
Вот тут наступили трудности. Дело в том что github любит формат комментария к коммиту из двух частей. Сначала короткое описание, потом пустую строку, потом основной текст. Иначе получается вот такая каша в веб-интерфейсе
 Нам  это не подходит. Хотим что бы тут номер ревизии svn красовался. Нашли способ влиять на историю через filter-branch. 
Нужно написать скрипт который будет читать STDIN и выводить результат в STDOUT. Я запилил для баша и он выглядел вот так:
if [[ "$string" =~ @[0-9]+ ]]; then
string=${BASH_REMATCH[0]};
string=`echo $string | tr -d @`
echo 'r'$string;
else
echo $string;
fi
Попытался выполнить и увидел сообщение об ошибке
eval: [[: not found 
Гуглить не стал и так понятно чтио происходит. Git запускает не баш, а шелл. Я дико расстроился и ушёл спать. С утра переписал под шелл и выглядеть он стал вот так:
string=`cat`;
rev=`echo $string | grep -o '@[0-9]*'| tr @ r`;
echo $rev"\n\n"$string;
Запустил и увидел что всё в порядке

 Весь пример команды гита
git filter-branch -f --msg-filter '
string=`cat`;
rev=`echo $string | grep -o '@[0-9]*'| tr @ r`;
echo $rev"\n\n"$string;
' HEAD~560..HEAD

Комментариев нет:

Отправить комментарий

Количество·просмотров