Показаны сообщения с ярлыком Git. Показать все сообщения
Показаны сообщения с ярлыком Git. Показать все сообщения

понедельник, 26 декабря 2016 г.

Как подсветить в Git реальные правки?

Очень часто размер правок в пределах одной строки очень незначительный и если строка достаточно длинна - можно при выполнении git diff пропустить ошибку, в этом случае я рекомендую использовать специальный флаг для git diff --color-words, который приедет к тому, что git подсветит цветом конкретные изменения в пределах одной строки вместо отображения оригинальной строки и новой :) 

пятница, 23 апреля 2010 г.

Как делать патчи для ядра linux посредством git?

Я уже много писал о том, как стянуть ядро с kernel.org, распаковать его и потом пропатчить каким-нить интересным патчем. Да, когда патч чужой все хорошо и понятно - пускаем patch -p1 < getallworldmoney.diff и получаем измененное дерево, которое осталось лишь собрать. Но в какой ад превращается разработка, когда сам пишешь патч, который затрагивает добрый десяток файлов! Ведь приходится каждый раз вызывать рекурсивное сравнение папок diff ом, чтобы вспомнить, в каком же файле добавил строчку! Разумеется, разработчики ядра умнее :) Они юзают git для этой цели, так что мы пойдем те же путем.

Установка необходимого ПО


Итак, если мы на РедХатах:

yum install git -y


Если на Дебиянах:

apt-get -y install git-core


Получение дерева исходных кодов ядра

Так как патчить мы собрались ядро Линукса, то нам бы его для начала раздобыть. Поэтому идем на офсайт ядра, устремляем свой взор в правый верхний угол, сейчас там написано "Latest Stable Kernel: 2.6.33.2", что говорит нам о том, что данная версия ядра является актуальной и стабильной (да, мы пока со стабильными только играемся).

В средней части страницы присутствует строка с рядом ссылок: "stable: 2.6.33.2 2010-04-01 [Full Source] [Patch] [View Patch] [View Inc.] [Gitweb] [Changelog]", вот как раз ссылка на Gitweb нас интересует более всего. щелкаем по ней. После этого мы попадаем на страницу, где в верхней части расположился вот такой блок:

URL git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-2.6.33.y.git
http://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-2.6.33.y.git
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-2.6.33.y.git


Вот как раз за ним мы охотились! Нам из этого списка нужна строка с git://.

Создаем папку, где будем девелопить ядро:

cd ~
mkdir kernel_dev
cd kernel_dev
git clone git://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-2.6.33.y.git


Теперь идем готовить себе кофе, так как процесс весьма длительный.

Основы работы с git


Получение обновлений

В случае, если ветка ядра обновится, необходимо иметь возможность скачать все обновления, для этого используем следующие команды (если у нас самое новое ядо этой ветки, то в ответ мы получим "Already up-to-date."):

cd linux-2.6.33.y
git pull


Добавление / удаление файлов

Для добавления файла в дерево используйте команду:
git add
Для удаления:
git rm


Откат изменений

Откатить все локальные изменения (ну это на случай, если Вы расстроитесь тому, что Галуа из Вас не получился и решите все переделать):
git checkout -f


Просмотр лога изменений и информации о коммитах

git log


Просмотр списка измененных / добавленных файлов

git status


Просмотр изменений во всех файлах / в заданном файле

Изменения во всем репозитории:
git diff


Изменения в одном файле:
git diff fs/proc/stat.c


Просмотреть различия между ревизиями

git diff 96d170a11d7cc998a5ddedc56e98c783f1bee1db..19f00f070c17584b5acaf186baf4d12a7d2ed125


Коммит изменений (в локальный репозиторий!)
git commit -a


После этого Ваш коммит отобразится в git log и на его основе можно будет сделать diff и из него как раз сделать пачт :)

Отмена изменений
git-revert 96d170a11d7cc998a5ddedc56e98c783f1bee1db


Ну вот и все :) После каждого уверенного шага в написании патча для ядра делаете commit, а потом посредством git diff между исходным и конечными этапами получаете полный патч :)

По материалам: http://linux.yyz.us/git-howto.html

четверг, 28 января 2010 г.

Как ориентироваться на http://git.kernel.org/?

На веб-интерфейсе к GIT репозиторию ядра http://git.kernel.org/ есть туева куча всяких ссылок. Какие же нам нужны? Во-первых, для всех уже выпущенных стабильных веток есть ссылки:


...
linux/kernel/git/stable/linux-2.6.30.y.git 2.6.30-stable tree
linux/kernel/git/stable/linux-2.6.31.y.git 2.6.31-stable tree
linux/kernel/git/stable/linux-2.6.32.y.git 2.6.32-stable tree


Чуть более сложно с поиском "текущей", то есть разрабатываемой в данный момент версии ядра. А она вот тут, как я понимаю, это ветка самого Линуса Торвальдса:


linux/kernel/git/torvalds/linux-2.6.git Linus' kernel tree


Ну вот, теперь можете серфить по просторам патчей ядра :)

воскресенье, 8 ноября 2009 г.

Начинаем использовать Git

Последнее время многие проекты переходят на Git и теперь всем простым смертным надо знать хотя бы как склонировать удаленный репозиторий (аналог svn co). Я кратко расскажу, как это сделать.


Ставим сам Git:
yum install -y git


А теперь стягиваем содержимое репозитория:
git clone git://github.com/facebook/tornado.git


Вот так все легко и просто :)