<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2russianfull.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>GQ's blog</title>
	
	<link>http://gq.net.ru</link>
	<description>Next step is the world domination...</description>
	<lastBuildDate>Tue, 09 Mar 2010 13:16:58 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/gq" /><feedburner:info uri="gq" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><geo:lat>55.803789</geo:lat><geo:long>37.970982</geo:long><creativeCommons:license>http://creativecommons.org/licenses/by-sa/3.0/</creativeCommons:license><image><link>http://gq.net.ru</link><url>http://gq.net.ru/userpic.png</url><title>Yo!</title></image><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2Fgq" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fgq" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2Fgq" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/gq" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fgq" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fgq" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fgq" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><feedburner:feedFlare href="http://lenta.yandex.ru/settings.xml?name=feed&amp;url=http%3A%2F%2Ffeeds.feedburner.com%2Fgq" src="http://lenta.yandex.ru/i/addfeed.gif">?????? ? ??????.?????</feedburner:feedFlare><item>
		<title>Роняю ядра. Недорого.</title>
		<link>http://feedproxy.google.com/~r/gq/~3/QZM15nPmgFA/</link>
		<comments>http://gq.net.ru/2010/03/09/kenel-panic-discounter/#comments</comments>
		<pubDate>Tue, 09 Mar 2010 13:14:30 +0000</pubDate>
		<dc:creator>GQ</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Crash]]></category>
		<category><![CDATA[Удивительное]]></category>
		<category><![CDATA[Ext2]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://gq.net.ru/?p=397</guid>
		<description><![CDATA[Сегодня научился ронять ядро.
Следующим образом:
mkfs.ext2 /dev/sdc2
mount /dev/sdc2 /mnt
iozone &#8230; -f /mnt/io #бенчмарк
В другом потоке:
dd if=/dev/zero of=/dev/sdc2 bs=1024 count=1024
mkfs.reiserfs /dev/sdc2
Вот я теперь думаю: я был не прав или всё-таки оно не должно было упасть?
Что ответит Александр ДрузьКО?
]]></description>
			<content:encoded><![CDATA[<p>Сегодня научился ронять ядро.<br />
Следующим образом:<br />
mkfs.ext2 /dev/sdc2<br />
mount /dev/sdc2 /mnt<br />
iozone &#8230; -f /mnt/io #бенчмарк</p>
<p>В другом потоке:<br />
dd if=/dev/zero of=/dev/sdc2 bs=1024 count=1024<br />
mkfs.reiserfs /dev/sdc2</p>
<p>Вот я теперь думаю: я был не прав или всё-таки оно не должно было упасть?<br />
Что ответит <s>Александр Друзь</s>КО?</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/gq?a=QZM15nPmgFA:JjFEgYdZjv4:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/gq?i=QZM15nPmgFA:JjFEgYdZjv4:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/gq?a=QZM15nPmgFA:JjFEgYdZjv4:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/gq?i=QZM15nPmgFA:JjFEgYdZjv4:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/gq/~4/QZM15nPmgFA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://gq.net.ru/2010/03/09/kenel-panic-discounter/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		<feedburner:origLink>http://gq.net.ru/2010/03/09/kenel-panic-discounter/</feedburner:origLink></item>
		<item>
		<title>Редактирование истории в git</title>
		<link>http://feedproxy.google.com/~r/gq/~3/p8-B-loVqag/</link>
		<comments>http://gq.net.ru/2009/12/16/git-history-rewrite/#comments</comments>
		<pubDate>Wed, 16 Dec 2009 13:35:00 +0000</pubDate>
		<dc:creator>GQ</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[HOWTO]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://gq.net.ru/2009/12/16/%d1%80%d0%b5%d0%b4%d0%b0%d0%ba%d1%82%d0%b8%d1%80%d0%be%d0%b2%d0%b0%d0%bd%d0%b8%d0%b5-%d0%b8%d1%81%d1%82%d0%be%d1%80%d0%b8%d0%b8-%d0%b2-git/</guid>
		<description><![CDATA[Еще один внутренний документик по работе с гитом от Максима Чистолинова:
Редактирование истории в git
Более строго следует говорить не о "редактировании" или "изменении" истории,
а о cоздании "альтернативной" истории. Если специально ничего не предпринимать,
в репозитории git остаются все объекты "старой" истории, соответствующие
предыдущим коммитам и версиям файлов.
На эти объекты не будут "ссылаться" ветки, но если Вы вспомните их [...]]]></description>
			<content:encoded><![CDATA[<p>Еще один внутренний документик по работе с гитом от Максима Чистолинова:</p>
<p><strong>Редактирование истории в git</strong></p>
<pre>Более строго следует говорить не о "редактировании" или "изменении" истории,
а о cоздании "альтернативной" истории. Если специально ничего не предпринимать,
в репозитории git остаются все объекты "старой" истории, соответствующие
предыдущим коммитам и версиям файлов.
На эти объекты не будут "ссылаться" ветки, но если Вы вспомните их SHA1-ключи,
либо как-то специально позаботитесь их "пометить" (тэгом, или другой веткой),
то старая история будет c точки зрения git "ничем не хуже" новой.

Почти во всех командах git можно ссылаться на коммиты любым способом:
 - с помощью SHA1-ключа,
 - с помощью имени ветки (если это последний коммит на ветке),
 - с помощью тэга (если вы его предусмотрительно поставили git tag),
 - c помощью специальных имён, например HEAD - последний коммит на
   данной ветке, HEAD^ - предпоследний (точнее, первый предок
   последнего коммита) и т.п. Подробности см. git-rev-parse --help
Ниже в командах, которые допускают любую идентификацию коммита, я буду
указывать в качестве аргумента &lt;id&gt;, или &lt;id-...&gt;. Если допускается только
имя ветки, указывается &lt;ветка&gt;.

Для начинающих я рекомендую приступая к редактированию истории пометить
все ключевые точки тэгами. Их хорошо видно в gitk.
Только не забудьте их потом удалить git tag -d

В понятие истории git я буду включать не только совокупность коммитов
git-а, но и содержание рабочего каталога (да простят меня потомки).

Типовые задачи редактирования истории:

1. Отказаться от всех изменений в рабочем каталоге (аналог revert в svn).
   Кошерный способ: git checkout -f
   Отказаться от части изменений можно с помощью: git checkout &lt;path&gt;
   НО: git checkout . не удалит, например, вновь добавленных файлов.
   Более жёсткий способ удалить _все_ изменения: git reset --hard HEAD

2. "Сохранить" изменения (состояние) рабочего каталога.
   git stash
   При этом рабочий каталог "очищается" до HEAD, а сохранённые изменения
   можно в последствии "применить" к текущему, либо к любому другому
   состоянию рабочего каталога с помощью git stash apply
   В частности, это позволяет "переносить" изменения между ветками
   (хотя, лучше их оформлять как коммиты, и оперировать потом уже с ними).

3. Отредактировать/дополнить последний коммит:
   git commit --amend
   Можно применять даже если Вам просто понадобилось переписать commit-log
   (например, Вы его "недописали" или он оказался не в той кодировке).
   Фактически при выполнении этой операции будет создан _другой_ commit
   object, и HEAD ветки будет связан с ним. (Старый объект в репозитории
   git тоже сохранится).

4. "Отказаться" от нескольких последних коммитов в истории (в частности,
    от последнего)
   Создать новую ветку new в нужной нам точке истории и переставить на
   неё существующую:
   git checkout &lt;id&gt; -b new
   git branch -M &lt;нужная нам ветка&gt;
   Например, отказаться от последнего коммита на ветке master (если мы
   на нём находимся), можно так:
   git checkout HEAD^ -b new_master
   git branch -M master
   После первой команды мы находимся "на один коммит назад" и создали там
   новую ветку с именем new_master (текущей веткой является new_master).
   После второй команды мы "переименовали" new_master в master, -M позволяет
   проигнорировать, что master уже есть.
   Тоже самое можно сделать одной командой:
   git reset --hard &lt;id&gt;
   Но это менее безопасно (см. ниже).

5. "Переставить" метки веток.
   git reset [--ключ] &lt;id&gt;
   Позволяет "передвинуть" текущий HEAD (и метку ветки) на заданный коммит.
   Есть три варианта, задаваемых ключами:
    --hard - "выкидывает" всё текущее состояние рабочий копии, вы оказываетесь
             на коммите &lt;id&gt;, как будто после него ничего не было;
             Т.е. это просто "перестановка ветки".
    --soft - "сохраняет" изменения в рабочей копии (и в "индексе" git) и добавляет
             к ним изменения из "истории" от &lt;id&gt; до точки, из которой мы переходим.
             Более подробно см. п. "Слияние нескольких коммитов в один".
    --mixed - (по умолчанию) - ведёт себя как --soft, но не изменяет состояние
             "индекса" git (оно будет соответствовать коммиту &lt;id&gt;, на который мы
             перешли) - новые и изменённые файлы не считаются "добавленными" в индекс,
             т.е. в отличии от --soft для них требуется явно делать git add,
             git rm, .etc
   Поскольку git reset (особенно --hard), позволяет "потерять" последнее
   положение ветки (т.е. оставить HEAD "непомеченным"), следует использовать
   эту команду с осторожностью.

6. Слияние нескольких коммитов в один.
   Если это "последние" коммиты в истории этой ветки:
   git reset --soft &lt;id&gt;
   git commit -a -s [--amend]
   Первая команда позволяет "отскочить" HEAD на несколько коммитов назад, при
   этом сохранив все "изменения" этих коммитов в рабочем каталоге.
   Например, git reset --soft HEAD^^ позволит "объединить" изменения последнего
   и предпоследнего коммитов.
   Если мы хотим "добавить" к этим изменениям, изменения из коммитов с другой
   ветки, нам поможет git cherry-pick --no-commit &lt;id&gt;
   Эта команда "добавляет" изменения коммита в рабочий каталог и в индекс, но не
   выполняет операцию commit.

7. Удаление нескольких коммитов "внутри истории". git-rebase magic
   Например, у Вас есть история ветки:
    ...-(N-5)-(N-4)-(N-3)-(N-2)-(N-1)-(N) - ветка
   и вам захотелось удалить коммиты (N-4)-(N-2) включительно.
   Это можно сделать с помощью команды git-rebase:
   git-rebase --onto &lt;ветка&gt;~5 &lt;ветка&gt;~2 &lt;ветка&gt;
   Например, git-rebase --onto master~5 master~2 master
   Нотация &lt;id&gt;~&lt;n&gt; означает n-ый коммит назад, т.е. в данном случае:
    - master - (N)
    - master~2 - (N-2)
    - master~5 - (N-5)
   Смысл операции git-rebase --onto &lt;id-newbase&gt; &lt;id-upstream&gt; &lt;id-head&gt;:
    1) Переключиться на коммит &lt;id-head&gt; (== git checkout &lt;ветка&gt;, если
       &lt;id-head&gt; - это HEAD ветки)
    2) Начать новую ветку от точки &lt;id-newbase&gt;
    3) "Поместить" на новую ветку коммиты от &lt;id-upstream&gt; до &lt;id-head&gt;,
       не включая &lt;id-upstream&gt;
    4) Если &lt;id-head&gt; - это HEAD ветки, переставить &lt;ветку&gt; на то, что получилось
   В данном случае:
   От коммита (N-5) мы начинаем "применять" коммиты (N-1) и (N), и переставляем
   метку ветки, в результате чего получается "новая история":
        (N-1)'-(N)' - ветка
         /
   ...-(N-5)-(N-4)-(N-3)-(N-2)-(N-1)-(N)

8. Объединение коммита с "внутренним" коммитом в истории.
   Например, в коммите &lt;id-src&gt; Вы исправили ошибку в "старом исправлении" &lt;id-dst&gt;,
   которое было несколько коммитов назад.
   Последовательность действий:
   1) Создать новую ветку new_branch от коммита &lt;id-dst&gt;, который надо
      поменять (дополнить).
      git checkout &lt;id-dst&gt; -b new_branch
   2) Сделать cherry-pick коммита &lt;id-src&gt;, который вы хотите "приплюсовать" к
      внутреннему.
      git cherry-pick --no-commit &lt;id-src&gt;
   3) "Дополнить" последний коммит изменениями из рабочего каталога.
      git commit --amend
   4) Добавить в новую историю последовательность "правильных" коммитов:
      git rebase --onto HEAD &lt;id-первый коммит&gt;^  &lt;id-последний коммит&gt;
   5) Переставить ветку на новый HEAD
      git branch -f &lt;имя ветки&gt;

   Пояснения требуют два последних действия:
     git rebase в данном случае добавляет нужную последовательность коммитов
     "в голову" новой ветки, но если &lt;id-последний коммит&gt; - это не HEAD
     старой ветки, то после git rebase новый HEAD не будет соответствовать
     ни какой ветке ! (так уж работает git rebase)
     Для этого требуется последняя операция, она явно переставляет ветку
     на HEAD.

   Если наше исправление было бы не закоммичено, можно было воспользоваться
   git stash и git stash apply вместо git cherry-pick.

9. Редактирование "внутреннего" коммита.
   Действия аналогичны п.8, но проще. Пусть мы находимся на ветке &lt;имя ветки&gt;.
   1) Извлечь коммит &lt;id-dst&gt;, подлежащий редактированию; ветку new_branch
      создавать при этом не обязательно, но желательно:
      git checkout &lt;id-dst&gt; [-b new_branch]
   2) Исправить код, "дополнить" последний коммит изменениями из рабочего
      каталога.
      git commit -a --amend
   3) Добавить в новую историю последовательность "правильных" коммитов:
      git rebase --onto HEAD &lt;id-dst&gt; &lt;имя ветки&gt;
   4) Удалить ветку new_branch, если она была создана на шаге 1)
      git branch -D new_branch

   Специально переставлять ветку &lt;имя ветки&gt; в данном случае не требуется, т.к.
   в команде git rebase в п. 3) в качестве последнего аргумента было имя ветки,
   а не просто SHA1-id. В такой ситуации эта команда "автоматически" переставит
   ref ветки.

10. rebase ветки с помощью git rebase.
    git rebase &lt;upstream-branch&gt;
    Эта операция подробно рассмотрена в разъяснениях Никиты по идеологии и
    сценариям использования git.
    Не следует относится к git rebase "формально": например, если Вы считаете,
    что некоторые коммиты с ветки разумнее было бы переместить на master, можно
    "продублировать" их на master с помощью git cherry-pick, после чего сделать
    git rebase. После этого, с веки эти коммиты волшебным образом исчезнут.

11. "Откат" отдельного коммита.
    Строго говоря, это не редактирование истории: просто автоматически добавляется
    коммит (либо, изменение в рабочей копии), "отменяющее" заданный коммит.
    git revert [--no-commit] &lt;id&gt;
    Эту возможность следует использовать если Вы не хотите "честно" редактировать
    историю. Например, коммит надо откатить только на одной из ветвей, либо
    этот коммит был "очень давно", и не хочется перестраивать из-за него всю
    историю целиком.</pre>
<p>(cc) Mike Chistolinov</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/gq?a=p8-B-loVqag:ULh0F4mLCtE:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/gq?i=p8-B-loVqag:ULh0F4mLCtE:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/gq?a=p8-B-loVqag:ULh0F4mLCtE:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/gq?i=p8-B-loVqag:ULh0F4mLCtE:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/gq/~4/p8-B-loVqag" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://gq.net.ru/2009/12/16/git-history-rewrite/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		<feedburner:origLink>http://gq.net.ru/2009/12/16/git-history-rewrite/</feedburner:origLink></item>
		<item>
		<title>Copyright ≠ Авторское право</title>
		<link>http://feedproxy.google.com/~r/gq/~3/ypxbR4y7iI8/</link>
		<comments>http://gq.net.ru/2009/12/15/copyright%e2%89%a0authorship/#comments</comments>
		<pubDate>Tue, 15 Dec 2009 16:13:52 +0000</pubDate>
		<dc:creator>GQ</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Copyright]]></category>
		<category><![CDATA[Авторское право]]></category>
		<category><![CDATA[Удивительное]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://gq.net.ru/?p=386</guid>
		<description><![CDATA[Сегодня был ткнут мордой в очаровательный факт. Подавляющее большинство словарей трактует/переводит Копирайт как Авторское право. И я тоже был в этом долгое время уверен.
Таки нет! Нам все эти годы врали! Английское Copyright обозначает только отчуждаемые авторские права. А к неотчуждаемым правам отношения не имеет.
А вы говорите, что изюм это сушеный виноград&#8230;
]]></description>
			<content:encoded><![CDATA[<p>Сегодня был ткнут мордой в очаровательный факт. Подавляющее большинство словарей трактует/переводит Копирайт как Авторское право. И я тоже был в этом долгое время уверен.</p>
<p>Таки нет! Нам все эти годы врали! Английское Copyright обозначает только отчуждаемые авторские права. А к неотчуждаемым правам отношения не имеет.</p>
<p>А вы говорите, что изюм это сушеный виноград&#8230;</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/gq?a=ypxbR4y7iI8:t6XGYJJ82so:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/gq?i=ypxbR4y7iI8:t6XGYJJ82so:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/gq?a=ypxbR4y7iI8:t6XGYJJ82so:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/gq?i=ypxbR4y7iI8:t6XGYJJ82so:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/gq/~4/ypxbR4y7iI8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://gq.net.ru/2009/12/15/copyright%e2%89%a0authorship/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://gq.net.ru/2009/12/15/copyright%e2%89%a0authorship/</feedburner:origLink></item>
		<item>
		<title>NeTAMS in Debian</title>
		<link>http://feedproxy.google.com/~r/gq/~3/zHkZO47Mz-k/</link>
		<comments>http://gq.net.ru/2009/12/01/netams-in-debian/#comments</comments>
		<pubDate>Tue, 01 Dec 2009 19:38:45 +0000</pubDate>
		<dc:creator>GQ</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[NeTAMS]]></category>

		<guid isPermaLink="false">http://gq.net.ru/2009/12/01/netams-in-debian/</guid>
		<description><![CDATA[Уж не знаю, имеет ли сегодня это какой смысл, но NeTAMS таки попал в архив Debian. А, с другой стороны, свободных аналогов-то и не видно что-то.
ЗЫ В моем репозитории в секции main лежат бэкпорты под все актуальные дистрибутивы Debian/Ubuntu.
]]></description>
			<content:encoded><![CDATA[<p>Уж не знаю, имеет ли сегодня это какой смысл, но NeTAMS таки попал в архив Debian. А, с другой стороны, свободных аналогов-то и не видно что-то.</p>
<p>ЗЫ В моем репозитории в секции main лежат бэкпорты под все актуальные дистрибутивы Debian/Ubuntu.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/gq?a=zHkZO47Mz-k:GiiCdusvlnE:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/gq?i=zHkZO47Mz-k:GiiCdusvlnE:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/gq?a=zHkZO47Mz-k:GiiCdusvlnE:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/gq?i=zHkZO47Mz-k:GiiCdusvlnE:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/gq/~4/zHkZO47Mz-k" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://gq.net.ru/2009/12/01/netams-in-debian/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		<feedburner:origLink>http://gq.net.ru/2009/12/01/netams-in-debian/</feedburner:origLink></item>
		<item>
		<title>Весёлые картинки</title>
		<link>http://feedproxy.google.com/~r/gq/~3/rLDBP8mIrXA/</link>
		<comments>http://gq.net.ru/2009/11/12/funny-pictures/#comments</comments>
		<pubDate>Thu, 12 Nov 2009 19:05:17 +0000</pubDate>
		<dc:creator>GQ</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Оффлайн]]></category>
		<category><![CDATA[Слайды]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://gq.net.ru/?p=376</guid>
		<description><![CDATA[Вчера делал аж два рассказа про Debian. Один про то, как это всё вообще устроено, другой про то как выглядит работа мейнтейнера.
Картинки раз и два.
Upd: Лицензия на второй файл cc-3.0-by-sa, на первый, скорее всего тоже, но надо еще уточнить, потому что я использовал за основу творчество Сэма Хосевара, напишу ему и спрошу.
]]></description>
			<content:encoded><![CDATA[<p>Вчера делал аж два рассказа про Debian. Один про то, как это всё вообще устроено, другой про то как выглядит работа мейнтейнера.<br />
Картинки <a href="http://gq.net.ru/wp-content/uploads/2009/11/DebianProject.odp">раз</a> и <a href="http://gq.net.ru/wp-content/uploads/2009/11/Debian.packaging.odp">два</a>.</p>
<p>Upd: Лицензия на второй файл cc-3.0-by-sa, на первый, скорее всего тоже, но надо еще уточнить, потому что я использовал за основу творчество Сэма Хосевара, напишу ему и спрошу.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/gq?a=rLDBP8mIrXA:tqZhpiSxzpc:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/gq?i=rLDBP8mIrXA:tqZhpiSxzpc:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/gq?a=rLDBP8mIrXA:tqZhpiSxzpc:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/gq?i=rLDBP8mIrXA:tqZhpiSxzpc:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/gq/~4/rLDBP8mIrXA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://gq.net.ru/2009/11/12/funny-pictures/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://gq.net.ru/2009/11/12/funny-pictures/</feedburner:origLink></item>
		<item>
		<title>Басня о гит</title>
		<link>http://feedproxy.google.com/~r/gq/~3/yN2zgNP5S7M/</link>
		<comments>http://gq.net.ru/2009/10/23/the-git-gable/#comments</comments>
		<pubDate>Fri, 23 Oct 2009 07:57:14 +0000</pubDate>
		<dc:creator>GQ</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://gq.net.ru/?p=374</guid>
		<description><![CDATA[Эдик Торощин перевел довольно забавную байку.
Читать здесь.
]]></description>
			<content:encoded><![CDATA[<p>Эдик Торощин перевел довольно забавную байку.<br />
<a href=http://hades.name/blog/2009/05/23/the-git-parable-ru/>Читать здесь.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/gq?a=yN2zgNP5S7M:eAfZXulsRmY:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/gq?i=yN2zgNP5S7M:eAfZXulsRmY:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/gq?a=yN2zgNP5S7M:eAfZXulsRmY:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/gq?i=yN2zgNP5S7M:eAfZXulsRmY:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/gq/~4/yN2zgNP5S7M" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://gq.net.ru/2009/10/23/the-git-gable/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://gq.net.ru/2009/10/23/the-git-gable/</feedburner:origLink></item>
		<item>
		<title>Смена бизнес-модели</title>
		<link>http://feedproxy.google.com/~r/gq/~3/GbLZObyvVbs/</link>
		<comments>http://gq.net.ru/2009/10/15/business-model-switch/#comments</comments>
		<pubDate>Thu, 15 Oct 2009 12:53:34 +0000</pubDate>
		<dc:creator>GQ</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Восхитительное]]></category>
		<category><![CDATA[Музыка]]></category>
		<category><![CDATA[HOWTO]]></category>
		<category><![CDATA[OnLine]]></category>

		<guid isPermaLink="false">http://gq.net.ru/2009/10/15/%d1%81%d0%bc%d0%b5%d0%bd%d0%b0-%d0%b1%d0%b8%d0%b7%d0%bd%d0%b5%d1%81-%d0%bc%d0%be%d0%b4%d0%b5%d0%bb%d0%b8/</guid>
		<description><![CDATA[Производишь музыку? Продавать компакт диски уже не модно. Продавать треки через интернет-магазин? Прошлый век. Новые возможности, новые горизонты, растущая прибыль.
]]></description>
			<content:encoded><![CDATA[<p>Производишь музыку? Продавать компакт диски уже не модно. Продавать треки через интернет-магазин? Прошлый век. <a href="http://www.securitylab.ru/news/386438.php" title="я сам фшоке">Новые возможности, новые горизонты, растущая прибыль.</a></p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/gq?a=GbLZObyvVbs:BRSVbrPbAhU:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/gq?i=GbLZObyvVbs:BRSVbrPbAhU:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/gq?a=GbLZObyvVbs:BRSVbrPbAhU:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/gq?i=GbLZObyvVbs:BRSVbrPbAhU:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/gq/~4/GbLZObyvVbs" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://gq.net.ru/2009/10/15/business-model-switch/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		<feedburner:origLink>http://gq.net.ru/2009/10/15/business-model-switch/</feedburner:origLink></item>
		<item>
		<title>MyDNS to BIND convert script</title>
		<link>http://feedproxy.google.com/~r/gq/~3/5TlDiGTMc44/</link>
		<comments>http://gq.net.ru/2009/09/27/mydns-to-bind-convert-script/#comments</comments>
		<pubDate>Sun, 27 Sep 2009 13:34:24 +0000</pubDate>
		<dc:creator>GQ</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[BIND]]></category>
		<category><![CDATA[ispconfig]]></category>
		<category><![CDATA[IXFR]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MyDNS]]></category>

		<guid isPermaLink="false">http://gq.net.ru/?p=364</guid>
		<description><![CDATA[Понадобилось мне тут на одном хосте поднять ispconfig. Ниче так, работает, одна проблема: для поддержки DNS там используется MyDNS (реально mydns-ng), который как-то странно работает. В частности он не умеет (не смотря на заявления автора) IXFR, так что на нормальные вторичники зона не трансферится, пока там явно не включишь request-ixfr no; для первичного сервера. И [...]]]></description>
			<content:encoded><![CDATA[<p>Понадобилось мне тут на одном хосте поднять ispconfig. Ниче так, работает, одна проблема: для поддержки DNS там используется MyDNS (реально mydns-ng), который как-то странно работает. В частности он не умеет (не смотря на заявления автора) IXFR, так что на нормальные вторичники зона не трансферится, пока там явно не включишь request-ixfr no; для первичного сервера. И вроде как заменить MyDNS нечем, исправить нереально, а работать должно. В итоге родилась извращенная идея генерить гонфиги и зоны для BIND на лету. Был написан такой скрипт:</p>
<pre>#!/bin/sh

rm -f /etc/bind/mydns/db.*
echo -n > /etc/bind/named.conf.mydns

echo "select origin from dns_soa where active='Y';" | mysql --defaults-file=/etc/mysql/debian.cnf dbispconfig | while read DOMAIN;do
[ "$DOMAIN" = "origin" ]&amp;&amp;continue

mydnsexport "$DOMAIN" &gt; /etc/bind/mydns/db."$DOMAIN"

XFER=$(echo "select xfer from dns_soa where origin=\"$DOMAIN\"" | mysql --defaults-file=/etc/mysql/debian.cnf dbispconfig | tail -n1|tr , \;| sed -e 's/;;/;/g' -e 's/^;$//')\;

echo "zone \"$DOMAIN\" { type master; allow-transfer { $XFER }; file \"/etc/bind/mydns/db.$DOMAIN\"; };" &gt;&gt; /etc/bind/named.conf.mydns

done

/etc/init.d/bind9 reload &gt; /dev/null</pre>
<p>где /etc/mysql/debian.cnf &#8211; это файл содержащий параметры доступа к mysql:</p>
<pre>[client]
host     = localhost
user     = root
password = password
socket   = /var/run/mysqld/mysqld.sock</pre>
<p>Правда, как оказалось, mydnsexport генерирует невалидный файл зоны, так что пришлось его слегка пропатчить:</p>
<pre>diff -rNu mydns-1.2.8/src/lib/rr.c mydns-1.2.8.patched/src/lib/rr.c
--- mydns-1.2.8/src/lib/rr.c	2009-02-03 12:15:26.000000000 +0300
+++ mydns-1.2.8.patched/src/lib/rr.c	2009-09-27 05:00:26.000000000 +0400
@@ -866,6 +866,7 @@
 			     "%s%s%s"
 			     "%s%s"
 			     "%s%s"
+			     "%s"
 			     "%s",

 			     columns,
@@ -891,8 +892,9 @@
 			     (filter)? " AND " : "",
 			     (filter)? filter : "",

+			     " ORDER BY name,type",
 			     /* Optional sorting */
-			     (mydns_rr_use_stamp)? " ORDER BY stamp DESC" : "");
+			     (mydns_rr_use_stamp)? ",stamp DESC" : "");

   RELEASE(namequery);
</pre>
<p>Ну и вставить вызов скрипта в крон. Извращение, но работает.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/gq?a=5TlDiGTMc44:uYJhIn-6NAU:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/gq?i=5TlDiGTMc44:uYJhIn-6NAU:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/gq?a=5TlDiGTMc44:uYJhIn-6NAU:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/gq?i=5TlDiGTMc44:uYJhIn-6NAU:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/gq/~4/5TlDiGTMc44" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://gq.net.ru/2009/09/27/mydns-to-bind-convert-script/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://gq.net.ru/2009/09/27/mydns-to-bind-convert-script/</feedburner:origLink></item>
		<item>
		<title>Встреча выпускников Лицея 1502</title>
		<link>http://feedproxy.google.com/~r/gq/~3/FrSOow6FWXE/</link>
		<comments>http://gq.net.ru/2009/09/07/lyceum-graduates-meeting/#comments</comments>
		<pubDate>Mon, 07 Sep 2009 11:05:31 +0000</pubDate>
		<dc:creator>GQ</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[1502]]></category>
		<category><![CDATA[Лицей]]></category>
		<category><![CDATA[Оффлайн]]></category>
		<category><![CDATA[Радостное]]></category>

		<guid isPermaLink="false">http://gq.net.ru/?p=358</guid>
		<description><![CDATA[Кросспост из списка рассылки.
Всем привет.
Как уже всем должно быть известно, в этом году Лицею исполняется 20 лет. В связи с этим планируется проведение встреч выпускников. Так как народу суммарно получается очень много, то было решено провести это мероприятие в 2 этапа: выпуски до 98го года включительно будут собираться 19го сентября, а с 99го по 2005 [...]]]></description>
			<content:encoded><![CDATA[<p><em>Кросспост из списка рассылки.</em></p>
<p>Всем привет.</p>
<p>Как уже всем должно быть известно, в этом году Лицею исполняется 20 лет. В связи с этим планируется проведение встреч выпускников. Так как народу суммарно получается очень много, то было решено провести это мероприятие в 2 этапа: выпуски до 98го года включительно будут собираться 19го сентября, а с 99го по 2005 &#8211; 28го ноября.</p>
<p>Кашкарова сказала, что с Ольгой Николаевной у нее связь есть и, вероятно, она придет.</p>
<p>Официальная программа для нашего выпуска пока выглядит так: часов в 11 сбор в Лицее в отдельной аудитории (классами или парами классов), в 12 часов начало официальной части в актовом зале. Планируется, что Кашкарова с Чудовым расскажут о том что и как сейчас происходит в Лицее, покажут видео о лицее вообще и нарезку архивов, касающихся нашего выпуска. Ну и, естественно, аэробика, чтобы добить эту программу до положенных полутора часов =)</p>
<p>Также планируется в каком-то виде экскурсия по Лицею.</p>
<p>После этого можно еще какое-то время походить по Лицею, пообщаться с преподавателями (Обещали постараться собрать не только тех, кто работает в Лицее сейчас, но и тех, кто работал во время нашего там обучения.), посмотреть что к чему. После этого можно, например, пойти классом в какой-нибудь кабак чтобы продолжить там.</p>
<p>Планы пока что предварительные, возможно что-то будет скорректировано по результатам сентябрьской встречи.</p>
<p>Если у кого-то есть желание принять участие в официальной программе с песней, пляской или иным цирковым номером &#8211; то можете обращаться к Кашкаровой либо напрямую, либо, если хотите, через меня.</p>
<p>Опять же если есть какие-то предложения/пожелания &#8211; их можно высказывать.</p>
<p>Кашкарова с Чудовым очень боятся возможного количества участников и даже кагбе намекали, что если кому неинтересно, то тянуть их на встречу не надо, тем не менее, передайте по возможности эту информацию своим знакомым из других классов и других выпусков, потому что из нашего<br />
выпуска на собрании присутствовали только Алла из XI-2-99 и я.</p>
<p>ЗЫ А новый бассейн на территории Лицея действительно построили <img src='http://gq.net.ru/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /> </p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/gq?a=FrSOow6FWXE:gSWgshV7P5w:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/gq?i=FrSOow6FWXE:gSWgshV7P5w:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/gq?a=FrSOow6FWXE:gSWgshV7P5w:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/gq?i=FrSOow6FWXE:gSWgshV7P5w:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/gq/~4/FrSOow6FWXE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://gq.net.ru/2009/09/07/lyceum-graduates-meeting/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://gq.net.ru/2009/09/07/lyceum-graduates-meeting/</feedburner:origLink></item>
		<item>
		<title>RuNIX.org update</title>
		<link>http://feedproxy.google.com/~r/gq/~3/5Y5BjvtuVo0/</link>
		<comments>http://gq.net.ru/2009/08/28/runixorg-update/#comments</comments>
		<pubDate>Fri, 28 Aug 2009 13:18:59 +0000</pubDate>
		<dc:creator>GQ</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Runix]]></category>

		<guid isPermaLink="false">http://gq.net.ru/2009/08/28/runixorg-update/</guid>
		<description><![CDATA[Обновили RuNIX.org. Детали тут.
Порядок записей на странице &#8211; это артефакт обновления, насколько я понимаю, скорее всего в дальнейшем всё будет нормально.
Со всеми замечаниями как всегда на root@runix.org.
Cheers.
]]></description>
			<content:encoded><![CDATA[<p>Обновили <a href=http://runix.org>RuNIX.org</a>. Детали <a href=http://sovety.blogspot.com/2009/08/runixorg-upgrade.html>тут</a>.<br />
Порядок записей на странице &#8211; это артефакт обновления, насколько я понимаю, скорее всего в дальнейшем всё будет нормально.</p>
<p>Со всеми замечаниями как всегда на root@runix.org.</p>
<p>Cheers.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/gq?a=5Y5BjvtuVo0:kcGDEiHMBek:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/gq?i=5Y5BjvtuVo0:kcGDEiHMBek:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/gq?a=5Y5BjvtuVo0:kcGDEiHMBek:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/gq?i=5Y5BjvtuVo0:kcGDEiHMBek:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/gq/~4/5Y5BjvtuVo0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://gq.net.ru/2009/08/28/runixorg-update/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://gq.net.ru/2009/08/28/runixorg-update/</feedburner:origLink></item>
		<item>
		<title>Калькуляция</title>
		<link>http://feedproxy.google.com/~r/gq/~3/Ho6bMM49us0/</link>
		<comments>http://gq.net.ru/2009/07/23/calculation/#comments</comments>
		<pubDate>Thu, 23 Jul 2009 04:59:16 +0000</pubDate>
		<dc:creator>GQ</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Авто]]></category>
		<category><![CDATA[Удивильное]]></category>

		<guid isPermaLink="false">http://gq.net.ru/?p=348</guid>
		<description><![CDATA[Попалась мне тут в руки таможенная декларация на Renault Koleos. Почитал и проникся. Не ну я, конечно, слышал что всё плохо, но что так&#8230;
Итак, Автофрамос ввозит машину. Цена машины: 426т.р.
С нее снимают налог 1,8евро на кубик: 162т.р.
Потом еще и c мощности 194р. за 0,75киловатт: 33т.р.
Дальше мне очень нравится: взимается еще 18%, с получившейся суммы.
Незаметно машина [...]]]></description>
			<content:encoded><![CDATA[<p>Попалась мне тут в руки таможенная декларация на Renault Koleos. Почитал и проникся. Не ну я, конечно, слышал что всё плохо, но что так&#8230;</p>
<p>Итак, Автофрамос ввозит машину. Цена машины: 426т.р.<br />
С нее снимают налог 1,8евро на кубик: 162т.р.<br />
Потом еще и c мощности 194р. за 0,75киловатт: 33т.р.<br />
Дальше мне очень нравится: взимается еще 18%, с <b>получившейся</b> суммы.<br />
Незаметно машина дорожает до 732т.р.<br />
В нашей стране умеют делать деньги.</p>
<p>ЗЫ А под французским именем-то скрывается кореец.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/gq?a=Ho6bMM49us0:pOYbNiVfMSc:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/gq?i=Ho6bMM49us0:pOYbNiVfMSc:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/gq?a=Ho6bMM49us0:pOYbNiVfMSc:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/gq?i=Ho6bMM49us0:pOYbNiVfMSc:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/gq/~4/Ho6bMM49us0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://gq.net.ru/2009/07/23/calculation/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		<feedburner:origLink>http://gq.net.ru/2009/07/23/calculation/</feedburner:origLink></item>
		<item>
		<title>Git trac post-receive hook</title>
		<link>http://feedproxy.google.com/~r/gq/~3/MW1UvJhca0M/</link>
		<comments>http://gq.net.ru/2009/07/15/git-trac-post-receive-hook/#comments</comments>
		<pubDate>Wed, 15 Jul 2009 14:46:42 +0000</pubDate>
		<dc:creator>GQ</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[hook]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Trac]]></category>

		<guid isPermaLink="false">http://gq.net.ru/?p=344</guid>
		<description><![CDATA[Добавил тут для одного из проектов хук в репозиторий, который закрывает тикеты по коммит-логам.
Неочевидное тут вот что:
закрывать тикеты надо тогда, когда коммит попадает на master (такая у нас модель разработки), соответственно надо отлавливать мержи и в случае мержа просматривать смерженные коммиты.
Upd: Гит оказался умнее меня и сам (rev-list) выводит коммиты со смерженных веток. Поэтому всё [...]]]></description>
			<content:encoded><![CDATA[<p>Добавил тут для одного из проектов хук в репозиторий, который закрывает тикеты по коммит-логам.</p>
<p>Неочевидное тут вот что:<br />
закрывать тикеты надо тогда, когда коммит попадает на master (такая у нас модель разработки), соответственно надо отлавливать мержи и в случае мержа просматривать смерженные коммиты.</p>
<p><b>Upd</b>: Гит оказался умнее меня и сам (rev-list) выводит коммиты со смерженных веток. Поэтому всё намного проще и получившийся скрипт даже и не интересен ни разу.</p>
<p>Скрипт получился такой:<br />
<code>
<pre>#!/bin/sh
# This script is run after receive-pack has accepted a pack and the
# repository has been updated.  It is passed arguments in through stdin
# in the form
#  oldrev newrev refname
# For example:
#  aa453216d1b3e49e7f6f98441fa56946ddcd6a20 68f7abf4e6f922807889f52bc043ecd31b79f814 refs/heads/master

TRAC_HOOK="/srv/git/hooks/trac-post-commit-hook"
TRAC_DIR="/srv/trac/stand"

procrevs() {
    while read gitrev; do
	"$TRAC_HOOK" -p "$TRAC_DIR" -r "$gitrev"
    done
}

while read OLD NEW NAME;do
	test "$NAME" == "refs/heads/master"||continue
	git rev-list --no-merges "$OLD..$NEW"|procrevs
done
</pre>
<p></code></p>
<p>Где TRAC_HOOK &#8211; это trac-post-commit-hook из дистрибутива trac, TRAC_DIR &#8211; каталог с проектом trac. В самом trac&#8217;е должен быть включен и настроен плагин trac-git.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/gq?a=MW1UvJhca0M:MqLM7AS9LB8:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/gq?i=MW1UvJhca0M:MqLM7AS9LB8:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/gq?a=MW1UvJhca0M:MqLM7AS9LB8:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/gq?i=MW1UvJhca0M:MqLM7AS9LB8:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/gq/~4/MW1UvJhca0M" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://gq.net.ru/2009/07/15/git-trac-post-receive-hook/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://gq.net.ru/2009/07/15/git-trac-post-receive-hook/</feedburner:origLink></item>
		<item>
		<title>TWIMC</title>
		<link>http://feedproxy.google.com/~r/gq/~3/PHUJDKwaAmQ/</link>
		<comments>http://gq.net.ru/2009/07/02/twimc/#comments</comments>
		<pubDate>Thu, 02 Jul 2009 00:51:04 +0000</pubDate>
		<dc:creator>GQ</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Оффлайн]]></category>

		<guid isPermaLink="false">http://gq.net.ru/2009/07/02/twimc/</guid>
		<description><![CDATA[TWIMC: Новоселье откладывается-таки на август. Улетел в Таганрог, в субботу вечером только вернусь.
]]></description>
			<content:encoded><![CDATA[<p>TWIMC: Новоселье откладывается-таки на август. Улетел в Таганрог, в субботу вечером только вернусь.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/gq?a=PHUJDKwaAmQ:kclGNe5CKp4:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/gq?i=PHUJDKwaAmQ:kclGNe5CKp4:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/gq?a=PHUJDKwaAmQ:kclGNe5CKp4:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/gq?i=PHUJDKwaAmQ:kclGNe5CKp4:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/gq/~4/PHUJDKwaAmQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://gq.net.ru/2009/07/02/twimc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://gq.net.ru/2009/07/02/twimc/</feedburner:origLink></item>
		<item>
		<title>Пингвины захватывают мир</title>
		<link>http://feedproxy.google.com/~r/gq/~3/I4NkWrX2NuA/</link>
		<comments>http://gq.net.ru/2009/07/01/pinguins-world-domination/#comments</comments>
		<pubDate>Wed, 01 Jul 2009 11:33:44 +0000</pubDate>
		<dc:creator>GQ</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Оффлайн]]></category>
		<category><![CDATA[Странное]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Russian Fedora]]></category>

		<guid isPermaLink="false">http://gq.net.ru/?p=337</guid>
		<description><![CDATA[Только что на одном из подоконников в коридорах факультета ВМиК МГУ обнаружили десяток флэшек. По 2 гига каждая. На стальной боковине надпись маркером Linux. Внутри fat32 раздел с syslinux и образом RFRemix-11-i686. Бутиться пока не пробовал.
Пингвины откладывают яйца? Галагтеко опасносте?
]]></description>
			<content:encoded><![CDATA[<p>Только что на одном из подоконников в коридорах факультета ВМиК МГУ обнаружили десяток флэшек. По 2 гига каждая. На стальной боковине надпись маркером Linux. Внутри fat32 раздел с syslinux и образом RFRemix-11-i686. Бутиться пока не пробовал.</p>
<p>Пингвины откладывают яйца? Галагтеко опасносте?</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/gq?a=I4NkWrX2NuA:Q9_MhfZIi5M:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/gq?i=I4NkWrX2NuA:Q9_MhfZIi5M:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/gq?a=I4NkWrX2NuA:Q9_MhfZIi5M:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/gq?i=I4NkWrX2NuA:Q9_MhfZIi5M:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/gq/~4/I4NkWrX2NuA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://gq.net.ru/2009/07/01/pinguins-world-domination/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		<feedburner:origLink>http://gq.net.ru/2009/07/01/pinguins-world-domination/</feedburner:origLink></item>
		<item>
		<title>Пьем, танцуем, веселимся</title>
		<link>http://feedproxy.google.com/~r/gq/~3/i8xDwLQcRHY/</link>
		<comments>http://gq.net.ru/2009/07/01/drink-dance-have-fun/#comments</comments>
		<pubDate>Tue, 30 Jun 2009 20:26:36 +0000</pubDate>
		<dc:creator>GQ</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Радостное]]></category>

		<guid isPermaLink="false">http://gq.net.ru/2009/07/01/%d0%bf%d1%8c%d0%b5%d0%bc-%d1%82%d0%b0%d0%bd%d1%86%d1%83%d0%b5%d0%bc-%d0%b2%d0%b5%d1%81%d0%b5%d0%bb%d0%b8%d0%bc%d1%81%d1%8f/</guid>
		<description><![CDATA[У меня появился еще один почтовый адрес. Можете поздравлять.
]]></description>
			<content:encoded><![CDATA[<p>У меня появился еще один почтовый адрес. Можете поздравлять.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/gq?a=i8xDwLQcRHY:Z7Hw22QNDdE:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/gq?i=i8xDwLQcRHY:Z7Hw22QNDdE:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/gq?a=i8xDwLQcRHY:Z7Hw22QNDdE:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/gq?i=i8xDwLQcRHY:Z7Hw22QNDdE:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/gq/~4/i8xDwLQcRHY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://gq.net.ru/2009/07/01/drink-dance-have-fun/feed/</wfw:commentRss>
		<slash:comments>14</slash:comments>
		<feedburner:origLink>http://gq.net.ru/2009/07/01/drink-dance-have-fun/</feedburner:origLink></item>
		<item>
		<title>Рабочее</title>
		<link>http://feedproxy.google.com/~r/gq/~3/PMYjTNYj-jA/</link>
		<comments>http://gq.net.ru/2009/06/24/workrelated/#comments</comments>
		<pubDate>Wed, 24 Jun 2009 06:25:04 +0000</pubDate>
		<dc:creator>GQ</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Оффлайн]]></category>
		<category><![CDATA[Рабочее]]></category>

		<guid isPermaLink="false">http://gq.net.ru/2009/06/24/%d1%80%d0%b0%d0%b1%d0%be%d1%87%d0%b5%d0%b5/</guid>
		<description><![CDATA[Пришел на работу неожиданно рано. Аж пол-одиннадцатого. Никого кроме меня нету. Только шеф ходит, хмуро гремит ключами и осматривает пустые рабочие места. К чему бы это?
]]></description>
			<content:encoded><![CDATA[<p>Пришел на работу неожиданно рано. Аж пол-одиннадцатого. Никого кроме меня нету. Только шеф ходит, хмуро гремит ключами и осматривает пустые рабочие места. К чему бы это?</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/gq?a=PMYjTNYj-jA:0uQTfZGL6UM:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/gq?i=PMYjTNYj-jA:0uQTfZGL6UM:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/gq?a=PMYjTNYj-jA:0uQTfZGL6UM:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/gq?i=PMYjTNYj-jA:0uQTfZGL6UM:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/gq/~4/PMYjTNYj-jA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://gq.net.ru/2009/06/24/workrelated/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://gq.net.ru/2009/06/24/workrelated/</feedburner:origLink></item>
		<item>
		<title>XI-5-99</title>
		<link>http://feedproxy.google.com/~r/gq/~3/V5nQnwO25GA/</link>
		<comments>http://gq.net.ru/2009/06/05/xi-5-99/#comments</comments>
		<pubDate>Fri, 05 Jun 2009 12:25:31 +0000</pubDate>
		<dc:creator>GQ</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[1502]]></category>
		<category><![CDATA[Лицей]]></category>
		<category><![CDATA[Оффлайн]]></category>
		<category><![CDATA[XI-5]]></category>

		<guid isPermaLink="false">http://gq.net.ru/2009/06/05/xi-5-99/</guid>
		<description><![CDATA[Эй, XI-5, почему до сих пор у меня никто даже не спросил про встречу?
В итоге всё уехало на конец июня. Но таки надо. Подробности тут.
Если вдруг не подписаны, то подписаться на список можно тут, только не забудьте указать имя.
]]></description>
			<content:encoded><![CDATA[<p>Эй, XI-5, почему до сих пор у меня никто даже не спросил про встречу?</p>
<p>В итоге всё уехало на конец июня. Но таки надо. Подробности <a href="http://lists.net.ru/cgi-bin/mailman/private/xi5/2009-June/000006.html">тут</a>.<br />
Если вдруг не подписаны, то подписаться на список можно <a href="http://lists.net.ru/cgi-bin/mailman/listinfo/xi5">тут</a>, только не забудьте указать имя.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/gq?a=V5nQnwO25GA:kPWFbYDxtTM:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/gq?i=V5nQnwO25GA:kPWFbYDxtTM:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/gq?a=V5nQnwO25GA:kPWFbYDxtTM:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/gq?i=V5nQnwO25GA:kPWFbYDxtTM:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/gq/~4/V5nQnwO25GA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://gq.net.ru/2009/06/05/xi-5-99/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://gq.net.ru/2009/06/05/xi-5-99/</feedburner:origLink></item>
		<item>
		<title>NeTAMS</title>
		<link>http://feedproxy.google.com/~r/gq/~3/4s8jmmW55qE/</link>
		<comments>http://gq.net.ru/2009/05/25/netams/#comments</comments>
		<pubDate>Mon, 25 May 2009 19:39:27 +0000</pubDate>
		<dc:creator>GQ</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[NeTAMS]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://gq.net.ru/2009/05/25/netams/</guid>
		<description><![CDATA[В репозитории обновился пакет NeTAMS до версии 3.4.2c-1.
В частности исправлены ошибки в postinst скрипте.
]]></description>
			<content:encoded><![CDATA[<p>В <a href=http://gq.net.ru/debian>репозитории</a> обновился пакет NeTAMS до версии 3.4.2c-1.<br />
В частности исправлены ошибки в postinst скрипте.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/gq?a=4s8jmmW55qE:9P4RTIhSuuI:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/gq?i=4s8jmmW55qE:9P4RTIhSuuI:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/gq?a=4s8jmmW55qE:9P4RTIhSuuI:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/gq?i=4s8jmmW55qE:9P4RTIhSuuI:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/gq/~4/4s8jmmW55qE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://gq.net.ru/2009/05/25/netams/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<feedburner:origLink>http://gq.net.ru/2009/05/25/netams/</feedburner:origLink></item>
		<item>
		<title>OpenPGP key update</title>
		<link>http://feedproxy.google.com/~r/gq/~3/eit0xHbqGPI/</link>
		<comments>http://gq.net.ru/2009/05/19/openpgp-key-update/#comments</comments>
		<pubDate>Tue, 19 May 2009 15:33:51 +0000</pubDate>
		<dc:creator>GQ</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Безопасность]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[OpenPGP]]></category>

		<guid isPermaLink="false">http://gq.net.ru/?p=316</guid>
		<description><![CDATA[Продолжая волну флэшмоба тоже поменял PGP-ключик.
Мой новый ключ:
pub   2048R/2AAC33F1 2009-05-18
Отпечаток ключа = 04B5 9D90 DF7C C2AB CD49  BAEA CA87 E9E8 2AAC 33F1
uid                  Alexander GQ Gerasiov &#60;gq@cs.msu.su&#62;
Подробнее: gpg-transition-gq-2009-05-18.txt.
PS Если кто-то хочет обменяться подписями &#8211; можете отмечаться [...]]]></description>
			<content:encoded><![CDATA[<p>Продолжая волну флэшмоба тоже поменял PGP-ключик.</p>
<p>Мой новый ключ:</p>
<pre>pub   2048R/<a href="/2AAC33F1.pub">2AAC33F1</a> 2009-05-18
Отпечаток ключа = 04B5 9D90 DF7C C2AB CD49  BAEA CA87 E9E8 2AAC 33F1
uid                  Alexander GQ Gerasiov &lt;gq@cs.msu.su&gt;</pre>
<p>Подробнее: <a href='http://gq.net.ru/wp-content/uploads/2009/05/gpg-transition-gq-2009-05-18.txt'>gpg-transition-gq-2009-05-18.txt</a>.</p>
<p>PS Если кто-то хочет обменяться подписями &#8211; можете отмечаться в комментах.</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/gq?a=eit0xHbqGPI:20y-lR0tLK4:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/gq?i=eit0xHbqGPI:20y-lR0tLK4:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/gq?a=eit0xHbqGPI:20y-lR0tLK4:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/gq?i=eit0xHbqGPI:20y-lR0tLK4:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/gq/~4/eit0xHbqGPI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://gq.net.ru/2009/05/19/openpgp-key-update/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://gq.net.ru/2009/05/19/openpgp-key-update/</feedburner:origLink></item>
		<item>
		<title>О некрофилах</title>
		<link>http://feedproxy.google.com/~r/gq/~3/2LbXd3ChaqM/</link>
		<comments>http://gq.net.ru/2009/04/29/about-necrophils/#comments</comments>
		<pubDate>Wed, 29 Apr 2009 07:05:23 +0000</pubDate>
		<dc:creator>GQ</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Некрофилия]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[MINIX]]></category>

		<guid isPermaLink="false">http://gq.net.ru/?p=312</guid>
		<description><![CDATA[Таненбаум всё еще мечтает о world domination.
Хотя, с другой стороны, за такие деньги&#8230;
Почитал внимательнее minix3.org. Таненбаум, похоже, понял, что сказки про микроядро не интересны никому, кроме гиков. Теперь он упирает на BSD-лицензию и смотрит на проприетарные встроенные системы как целевую аудиторию.
В общем даже интересно. Где бы найти немножко времени, чтобы посмотреть на код&#8230;
]]></description>
			<content:encoded><![CDATA[<p>Таненбаум <a href="http://www.itsec.ru/newstext.php?news_id=57500">всё еще мечтает о world domination</a>.</p>
<p>Хотя, с другой стороны, за такие деньги&#8230;</p>
<p>Почитал внимательнее minix3.org. Таненбаум, похоже, понял, что сказки про микроядро не интересны никому, кроме гиков. Теперь он упирает на BSD-лицензию и смотрит на проприетарные встроенные системы как целевую аудиторию.<br />
В общем даже интересно. Где бы найти немножко времени, чтобы посмотреть на код&#8230;</p>
<div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/gq?a=2LbXd3ChaqM:SA9BzRax21k:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/gq?i=2LbXd3ChaqM:SA9BzRax21k:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/gq?a=2LbXd3ChaqM:SA9BzRax21k:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/gq?i=2LbXd3ChaqM:SA9BzRax21k:F7zBnMyn0Lo" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/gq/~4/2LbXd3ChaqM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://gq.net.ru/2009/04/29/about-necrophils/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://gq.net.ru/2009/04/29/about-necrophils/</feedburner:origLink></item>
	</channel>
</rss>
