<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	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/"
	>

<channel>
	<title>Логово Сола &#187; ruby</title>
	<atom:link href="http://fyodor.koulba.net/tag/ruby/feed/" rel="self" type="application/rss+xml" />
	<link>http://fyodor.koulba.net</link>
	<description>Домашняя страница Фёдора Кульбы</description>
	<lastBuildDate>Wed, 06 Jul 2011 06:10:49 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2</generator>
		<item>
		<title>Упал и давай валяться</title>
		<link>http://fyodor.koulba.net/2011/02/08/upal-i-davaj-valyatsya/</link>
		<comments>http://fyodor.koulba.net/2011/02/08/upal-i-davaj-valyatsya/#comments</comments>
		<pubDate>Tue, 08 Feb 2011 09:25:05 +0000</pubDate>
		<dc:creator>Fyodor Koulba</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[webdev]]></category>
		<category><![CDATA[компьютеры]]></category>
		<category><![CDATA[лытдыбр]]></category>

		<guid isPermaLink="false">http://fyodor.koulba.net/?p=1345</guid>
		<description><![CDATA[Почти двое суток лежали мои бедные говносайты. Раньше они только припадали переодически минут на пять, а тут легли основательно. Окончательно принял решение поменять хостинг. Жаль, поначалу Locum был неплох.]]></description>
			<content:encoded><![CDATA[<p>Почти двое суток лежали мои бедные говносайты. Раньше они только припадали переодически минут на пять, а тут легли основательно. Окончательно принял решение поменять хостинг. Жаль, поначалу Locum был неплох.</p>
]]></content:encoded>
			<wfw:commentRss>http://fyodor.koulba.net/2011/02/08/upal-i-davaj-valyatsya/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RubyOnRails 3 beta</title>
		<link>http://fyodor.koulba.net/2010/02/09/rubyonrails-3-beta/</link>
		<comments>http://fyodor.koulba.net/2010/02/09/rubyonrails-3-beta/#comments</comments>
		<pubDate>Tue, 09 Feb 2010 16:57:43 +0000</pubDate>
		<dc:creator>Fyodor Koulba</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[webdev]]></category>

		<guid isPermaLink="false">http://fyodor.koulba.net/?p=1165</guid>
		<description><![CDATA[Вот и опачки, вышли третьи Рельсы, пока, правда, только бета. Судя по описанию, уже есть куча несовместимостей с веткой 2.x, а в 3.1 будет ещё больше. Чё-б такое замутить на третьей версии? =)]]></description>
			<content:encoded><![CDATA[<p>Вот и опачки, <a href="http://weblog.rubyonrails.org/2010/2/5/rails-3-0-beta-release">вышли третьи Рельсы</a>, пока, правда, только бета. Судя по <a href="http://guides.rails.info/3_0_release_notes.html">описанию</a>, уже есть куча несовместимостей с веткой 2.x, а в 3.1 будет ещё больше.</p>
<p>Чё-б такое замутить на третьей версии? =)</p>
]]></content:encoded>
			<wfw:commentRss>http://fyodor.koulba.net/2010/02/09/rubyonrails-3-beta/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Программисты шутят (на английском)</title>
		<link>http://fyodor.koulba.net/2009/11/01/programmisty-shutyat-na-anglijskom/</link>
		<comments>http://fyodor.koulba.net/2009/11/01/programmisty-shutyat-na-anglijskom/#comments</comments>
		<pubDate>Sun, 01 Nov 2009 19:28:00 +0000</pubDate>
		<dc:creator>Fyodor Koulba</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[webdev]]></category>
		<category><![CDATA[смешное]]></category>

		<guid isPermaLink="false">http://fyodor.koulba.net/2009/11/01/%d0%bf%d1%80%d0%be%d0%b3%d1%80%d0%b0%d0%bc%d0%bc%d0%b8%d1%81%d1%82%d1%8b-%d1%88%d1%83%d1%82%d1%8f%d1%82-%d0%bd%d0%b0-%d0%b0%d0%bd%d0%b3%d0%bb%d0%b8%d0%b9%d1%81%d0%ba%d0%be%d0%bc/</guid>
		<description><![CDATA[RubyOnRails vs Java: RubyOnRails vs Django: Там ещё много других роликов про RubyOnRails vs everything =)]]></description>
			<content:encoded><![CDATA[<p>RubyOnRails vs Java:</p>
<p><lj-embed id="4"/></p>
<p>RubyOnRails vs Django:</p>
<p><lj-embed id="5"/></p>
<p>Там ещё много других роликов про RubyOnRails vs everything =)</p>
]]></content:encoded>
			<wfw:commentRss>http://fyodor.koulba.net/2009/11/01/programmisty-shutyat-na-anglijskom/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Рабочее</title>
		<link>http://fyodor.koulba.net/2009/09/01/rabochee/</link>
		<comments>http://fyodor.koulba.net/2009/09/01/rabochee/#comments</comments>
		<pubDate>Tue, 01 Sep 2009 18:12:00 +0000</pubDate>
		<dc:creator>Fyodor Koulba</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[webdev]]></category>
		<category><![CDATA[работа]]></category>

		<guid isPermaLink="false">http://fyodor.koulba.net/2009/09/01/%d1%80%d0%b0%d0%b1%d0%be%d1%87%d0%b5%d0%b5-3/</guid>
		<description><![CDATA[Сегодня на работе окончательно столкнулся (давно ждал) с проблемой, проистекающей из следующих моментов: 1. Есть большой веб-проект, куча файлов, все лежит на windows-шаре и хаотично модифицируется разными людьми 2. В процессе перехода к упорядоченной технологичной разработке ;) весь этот ужас затащен под SVN 3. На Linux&#8217;е НЕТ нормальных SVN-клиентов, кроме консольного, и, возможно, KDE-шного (не [...]]]></description>
			<content:encoded><![CDATA[<p>Сегодня на работе окончательно столкнулся (давно ждал) с проблемой, проистекающей из следующих моментов:</p>
<p>1. Есть большой веб-проект, куча файлов, все лежит на windows-шаре и хаотично модифицируется разными людьми<br />
2. В процессе перехода к упорядоченной технологичной разработке ;) весь этот ужас затащен под SVN<br />
3. На Linux&#8217;е НЕТ нормальных SVN-клиентов, кроме консольного, и, возможно, KDE-шного (не пробовал, ибо аллергия на Qt). Все остальные безумно тормозят и/или не осиливают. На венде я юзал TortoiseSVN, который с подобными задачами прекрасно справлялся.</p>
<p>Так вот, собственно, задача: закоммитить произвольное количество произвольных файлов в разных папках (но не все одновременно). Т.е., хочется их как-то по-простому выбирать.</p>
<p>Нет, можно, конечно, выводить список в файл, там редактировать, потом по нему прогонять commit, но долго, громоздко и лень.</p>
<p>Можно ручками составлять changelist, потом коммитить его &#8211; тоже тот ещё копипастинг.</p>
<p>Можно ставить галочки мышкой (a-la TortoiseSVN) с помощью всяких там NautilusSVN и т.п., но оно тормозит на таком количестве файлов (дома уже не помню, но МНОГО). Впрочем, как и остальные GUI-клиенты.</p>
<p>В общем, в процессе поиска решения наткнулся на Ruby-скрипт, который делает список измененных/удалённых/добавленных/неверсифицированных файлов, выдаёт его на редактирование, а потом коммитит. Почему мне не хватило мозгов написать самому &#8211; непонятно. Не привык мараться, видимо, да и просто ленивый. :( Но таки скрипт, на вид, вполне работоспособный, ломаться там нечему. </p>
<p>В общем, кому надо, вот:</p>
<p><span id="more-1000"></span><code>#!/usr/bin/ruby</p>
<p># A script that works in conjuction with Subversion. This script works by<br />
# running svn status and finding all files which should be either added or<br />
# committed. It then pops up SVN_EDITOR to allow modifying the list<br />
# of files to commit. Once the editor is closed, this script calls svn commit<br />
# without a message, allowing the user to create an appropriate message.<br />
# If the list of files to commit includes files which have not yet been<br />
# added to the repository, the script automagically adds them.<br />
#<br />
# Author: Francois Beausoleil (fbos_at_users.sourceforge.net)<br />
# Date: 2003/08/23</p>
<p>require "tempfile"</p>
<p>SeparatorLine = "-- Move the files below above this point to add them automatically --"</p>
<p>files = []<br />
unknown = []<br />
open("|svn status", 'r') do |io|<br />
&nbsp;&nbsp;io.each do |line|<br />
&nbsp;&nbsp;&nbsp;&nbsp;files << $1 if line =~ /^[^?]\s+(.*)$/<br />
&nbsp;&nbsp;&nbsp;&nbsp;unknown << $1 if line =~ /^\?\s+(.*)$/<br />
&nbsp;&nbsp;&nbsp;&nbsp;raise "#{$1} has conflicts. Resolve the issue before committing" if<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line =~ /^C\s+(.*)/<br />
&nbsp;&nbsp;&nbsp;&nbsp;raise "#{$1} is missing. Run svn update to update your working copy" if<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;line =~ /^!\s+(.*)/<br />
&nbsp;&nbsp;&nbsp;&nbsp;raise if line =~ /error/i<br />
&nbsp;&nbsp;end<br />
end</p>
<p>io = Tempfile.new("svn-commit.tmp")<br />
files.each do |file|<br />
&nbsp;&nbsp;io.print file, $/<br />
end</p>
<p>io.print $/, SeparatorLine, $/, $/</p>
<p>unknown.each do |file|<br />
&nbsp;&nbsp;io.print file, $/<br />
end</p>
<p>io.close</p>
<p>raise "Unable to edit temporary file" unless<br />
&nbsp;&nbsp;system("vim", io.path)</p>
<p>io.open<br />
filestocommit = []<br />
filestoadd = []<br />
io.each do |line|<br />
&nbsp;&nbsp;next if line =~ /^$/<br />
&nbsp;&nbsp;break if line =~ /^#{SeparatorLine}$/</p>
<p>&nbsp;&nbsp;line.chomp!</p>
<p>&nbsp;&nbsp;filestoadd << line if unknown.include?(line)<br />
&nbsp;&nbsp;filestocommit << line<br />
end<br />
io.close</p>
<p>if filestoadd.size > 0<br />
&nbsp;&nbsp;raise "An error occured while adding files" unless<br />
&nbsp;&nbsp;&nbsp;&nbsp;system "svn add #{filestoadd.join(' ')}"<br />
end</p>
<p>if filestocommit.size > 0<br />
&nbsp;&nbsp;raise "An error occured while committing the files" unless<br />
&nbsp;&nbsp;&nbsp;&nbsp;system "svn commit #{filestocommit.join(' ')}"<br />
end</code></p>
]]></content:encoded>
			<wfw:commentRss>http://fyodor.koulba.net/2009/09/01/rabochee/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

