<?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>xlab &#187; svn</title>
	<atom:link href="http://xlab.pl/tag/svn/feed/" rel="self" type="application/rss+xml" />
	<link>http://xlab.pl</link>
	<description>XSolve laboratory - dzielimy się tym co wiemy...</description>
	<lastBuildDate>Mon, 30 Aug 2010 07:34:03 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>pl</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>GIT-SVN, czyli połączenie dwóch światów</title>
		<link>http://xlab.pl/2010/08/git-svn-czyli-polaczenie-dwoch-swiatow/</link>
		<comments>http://xlab.pl/2010/08/git-svn-czyli-polaczenie-dwoch-swiatow/#comments</comments>
		<pubDate>Thu, 19 Aug 2010 12:24:20 +0000</pubDate>
		<dc:creator>Wojtek Sznapka</dc:creator>
				<category><![CDATA[Lorem Ipsum]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[kontrola wersji]]></category>
		<category><![CDATA[scm]]></category>
		<category><![CDATA[svn]]></category>

		<guid isPermaLink="false">http://xlab.pl/?p=1531</guid>
		<description><![CDATA[SVN jest jednym z najpopularniejszych i najpowszechniej używanych systemów kontroli wersji w dzisiejszych czasach. Nie oznacza to jednak, że jest rozwiązaniem najlepszym. Coraz większą popularność zyskują rozproszone systemy kontroli wersji, takie jak Git, Mercurial czy Bazaar. W tym artykule skupimy się na Gicie, który został stworzony przez Linusa Torvaldsa, w celu wersjonowania kernela Linuksa (zastąpił [...]]]></description>
			<content:encoded><![CDATA[<p>SVN jest jednym z najpopularniejszych i najpowszechniej używanych systemów kontroli wersji w dzisiejszych czasach. Nie oznacza to jednak, że jest rozwiązaniem najlepszym. Coraz większą popularność zyskują rozproszone systemy kontroli wersji, takie jak Git, Mercurial czy Bazaar. W tym artykule skupimy się na Gicie, który został stworzony przez Linusa Torvaldsa, w celu wersjonowania kernela Linuksa (zastąpił BitKeepera). Nie sposób wymienić wszystkich zalet, ale można wymienić kilka projektów, które go używają, co pokaże jego pozycję na rynku: Andorid, Arch Linux, Fedora, Gimp, Gnome, jQuery, OpenSuSE, Perl, Ruby On Rails, Wine, X.Org.</p>
<p>Poniżej pokażę rozwiązanie następującego problemu: &#8220;jestem programistą, znam i lubię Gita, ale w mojej firmie używa się SVNa&#8221;.<span id="more-1531"></span> Z pomocą przychodzi rozszrzenie <strong>git-svn</strong>, które umożliwia obustronną synchronizację repozytoriów. Rozpoczynamy od instalacji w systemach z rodziny Debian:</p>
<pre class="bash">sudo apt-get install git-svn</pre>
<p>Następnie inicjalizujemy repozytorium:</p>
<pre class="bash">mkdir repo
cd repo
git svn init svn://repo.path/trunk
git svn fetch -r HEAD</pre>
<p>Po tych czynnościach w folderze <em>repo</em> mamy już źródła naszego projektu. Możemy przystąpić do kodowania. Standardowo procedura nie różni się od normalnego używania Gita (czyli branch&#8217;owanie, rebase&#8217;y, mergowanie). Jedynie dochodzą dwie komendy którymi synchronizujemy się z repozytorium SVN:</p>
<pre class="bash">git svn rebase</pre>
<p>Pobiera najnowsze zmiany z repozytorium SVN do gałęzi <em>master</em> (odpowiednik <em>svn update</em>).</p>
<pre class="bash">git svn dcommit</pre>
<p>Wysyła nasze najnowsze zmiany z gałęzi <em>master</em> do repozytorium SVN (odpowiednik <em>svn commit</em>).</p>
<p>Warto jeszcze nadmienić o często spotykanej metodyce pracy z Gitem, tzw. ticket-workflow. Korzystając z aplikacji zarządzania zadaniami, takiej jak Jira lub Trac, każde zadanie ma swój numer. Dla każdego zadania tworzymy osobny <em>branch</em> w Gicie o nazwie TICKET_NR-krotki-opis. Dzięki temu możemy łatwo przełączać konteksty, jeśli przyjdzie nam nagle pracować nad innym zadaniem, a także porządkować commity przez spłaszczanie ich przy mergowaniu do gałęzi master. W naszym branchu na zadanie commitujemy do woli, a mergując do mastera używamy opcji <em>squash</em>, która stworzy nam jeden commit. Można też użyć mechanizmu <em>rebase</em> z opcją <em>interactive</em>, dzięki któremu możemy grupować lub reorganizować commity.</p>
<p>Powyższe rozwiązania zostały sprawdzone w praktyce i sprawowały się bardzo dobrze, obecność SVN była praktycznie nieodczuwalna w całym procesie :-)</p>
<p>Więcej informacji o samym Gicie znajdziesz w artykule Konrada: <a href="http://xlab.pl/2010/07/git-owy-piatek-z-xsolve/">GIT-owy piątek z XSolve</a></p>
]]></content:encoded>
			<wfw:commentRss>http://xlab.pl/2010/08/git-svn-czyli-polaczenie-dwoch-swiatow/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GIT-owy piątek z XSolve</title>
		<link>http://xlab.pl/2010/07/git-owy-piatek-z-xsolve/</link>
		<comments>http://xlab.pl/2010/07/git-owy-piatek-z-xsolve/#comments</comments>
		<pubDate>Wed, 14 Jul 2010 15:04:41 +0000</pubDate>
		<dc:creator>Konrad Malawski</dc:creator>
				<category><![CDATA[Lorem Ipsum]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[scm]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[vcs]]></category>

		<guid isPermaLink="false">http://xlab.pl/?p=1499</guid>
		<description><![CDATA[Od zeszłego tygodnia mam niewątpliwą przyjemność uczestniczenia w praktykach organizowanych przez XSolve. W tym czasie zastanawiałem się troszkę nad systemami kontroli wersji &#8211; a konkretniej porównaniem (lubianego i używanego przeze mnie) Gita z SVNem. Są to narzędzia na pierwszy rzut oka podobne &#8211; &#8220;jakieś SCMy&#8221;, jednak różnice w podejściach obu projektów do problemu są naprawdę [...]]]></description>
			<content:encoded><![CDATA[<p>Od zeszłego tygodnia mam niewątpliwą przyjemność uczestniczenia w praktykach organizowanych przez XSolve. W tym czasie zastanawiałem się troszkę nad systemami kontroli wersji &#8211; a konkretniej porównaniem (lubianego i używanego przeze mnie) Gita z SVNem. Są to narzędzia na pierwszy rzut oka podobne &#8211; &#8220;jakieś SCMy&#8221;, jednak różnice w podejściach obu projektów do problemu są naprawdę ogromne.<br />
<span id="more-1499"></span></p>
<p style="text-align:center"><object id="__sse4721725" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=git4xsolve-100709124340-phpapp01&#038;stripped_title=dlaczego-git-to-nie-svn" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed name="__sse4721725" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=git4xsolve-100709124340-phpapp01&#038;stripped_title=dlaczego-git-to-nie-svn" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object></p>
<p>W ramach &#8220;Piątków z XSolve&#8221; miałem zaszczyt i przyjemność pokazać reszcie zespołu czym ten GIT jest, i dlaczego warto się nim zainteresować. Podczas prezentacji osoby bardziej obeznane w SCMach &#8211; w tym poza SVN oraz Gitem również Mercurialem &#8211; wtrącały swoje trzy grosze co zawsze jest mile widziane i bardzo pomogło ogólnej wartości prezentacji. Mam nadzieję że ta króciutka prezentacja zachęci niektórych z obecnych &#8211; lub Was, czytających bloga &#8211; do rzucenia okiem na dokumentację lub liczne poradniki dotyczące Gita &#8211; poniżej kilka dobrych linków od których można by zacząć:</p>
<ul>
<li><a href="http://www.youtube.com/watch?v=4XpnKHJAok8">http://www.youtube.com/watch?v=4XpnKHJAok8</a> Wystąpienie Linusa Torvaldsa dotyczące Git</li>
<li><a href="http://whygitisbetterthanx.com">http://whygitisbetterthanx.com</a> &#8211; przechwalająca Git&#8217;a stronka, zestawiająca go z innymi SCM</li>
<li><a href="http://git.or.cz/course/svn.html">http://git.or.cz/course/svn.html</a> &#8211; porównanie side-by-side z SVN</li>
<li><a href="http://git-scm.com">http://git-scm.com</a> &#8211; Strona domowa projektu</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://xlab.pl/2010/07/git-owy-piatek-z-xsolve/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>svn error: Cannot reintegrate into a working copy not entirely at infinite depth</title>
		<link>http://xlab.pl/2009/09/svn-error-cannot-reintegrate-into-a-working-copy-not-entirely-at-infinite-depth/</link>
		<comments>http://xlab.pl/2009/09/svn-error-cannot-reintegrate-into-a-working-copy-not-entirely-at-infinite-depth/#comments</comments>
		<pubDate>Tue, 15 Sep 2009 08:43:04 +0000</pubDate>
		<dc:creator>Mateusz Kubiczek</dc:creator>
				<category><![CDATA[Lorem Ipsum]]></category>
		<category><![CDATA[svn]]></category>

		<guid isPermaLink="false">http://www.xlab.pl/?p=478</guid>
		<description><![CDATA[Dzisiaj przy próbie użycia merge &#8211;reintegrate w celu przeniesienia zmian z brancha z powrotem do trunka dostałem ciekawy błąd:

Cannot reintegrate into a working copy not entirely at infinite depth
Szybki googiel zasugerował, że to coś związane z &#8220;rzadkimi katalogami&#8221; w svn.
Zrobiłem nową kopię roboczą trunka i do niej już bez problemów udało się wykonać reintegrate.
]]></description>
			<content:encoded><![CDATA[<p>Dzisiaj przy próbie użycia <strong>merge &#8211;reintegrate</strong> w celu przeniesienia zmian z brancha z powrotem do trunka dostałem ciekawy błąd:</p>
<blockquote><p>
Cannot reintegrate into a working copy not entirely at infinite depth</p></blockquote>
<p>Szybki googiel zasugerował, że to coś związane z <a href="http://svnbook.red-bean.com/en/1.5/svn.advanced.sparsedirs.html">&#8220;rzadkimi katalogami&#8221;</a> w svn.</p>
<p>Zrobiłem nową kopię roboczą trunka i do niej już bez problemów udało się wykonać reintegrate.</p>
]]></content:encoded>
			<wfw:commentRss>http://xlab.pl/2009/09/svn-error-cannot-reintegrate-into-a-working-copy-not-entirely-at-infinite-depth/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Problemy z svn merge reintegrate</title>
		<link>http://xlab.pl/2009/04/problemy-z-svn-merge-reintegrate/</link>
		<comments>http://xlab.pl/2009/04/problemy-z-svn-merge-reintegrate/#comments</comments>
		<pubDate>Mon, 06 Apr 2009 12:39:39 +0000</pubDate>
		<dc:creator>Mateusz Kubiczek</dc:creator>
				<category><![CDATA[Lorem Ipsum]]></category>
		<category><![CDATA[mergeinfo]]></category>
		<category><![CDATA[svn]]></category>
		<category><![CDATA[svn:mergeinfo]]></category>

		<guid isPermaLink="false">http://www.xlab.pl/?p=105</guid>
		<description><![CDATA[SVN 1.5 posiada bardzo miłe wsparcie dla tworzenia gałęzi w repozytorium oraz nanoszania zmian wykonanych tam spowrotem do trunka. Wyklikanie tego w tortoiseSVN zajmuje parę minut (o tym w następnej notce). A przynajmniej powinno &#8211; niestety bardzo często dostaję komunikat:
svn: Cannot reintegrate from 'url://feature-branch' yet:
Some revisions have been merged under it that have not been [...]]]></description>
			<content:encoded><![CDATA[<p>SVN 1.5 posiada bardzo miłe wsparcie dla tworzenia gałęzi w repozytorium oraz nanoszania zmian wykonanych tam spowrotem do trunka. Wyklikanie tego w <a href="http://tortoisesvn.tigris.org/">tortoiseSVN </a>zajmuje parę minut (o tym w następnej notce). A przynajmniej powinno &#8211; niestety bardzo często dostaję komunikat:</p>
<blockquote><p><code>svn: Cannot reintegrate from 'url://feature-branch' yet:<br />
Some revisions have been merged under it that have not been merged<br />
into the reintegration target; merge them first, then retry.</code></p></blockquote>
<p>Wiadomość nie podsuwa oczywistego rozwiązania. Pierwszą rzeczą którą sprawdziłem było ponowne uaktualnienie mojej gałęzi trunkiem, ale to nie pomogło.<br />
Rozwiązanie problemu znalazłem na blogu <a href="http://blogs.open.collab.net/svn/2008/07/subversion-merg.html">Submerged</a>. Można tam znaleźć dokładne wyjaśnienie, skąd ten błąd (a także kilka ciekawych informacji o samym SVN &#8211; polecam). Tutaj tylko szybkie rozwiązanie, które mi zawsze pomaga (operacje wykonujemy na gałęzi):</p>
<ul>
<li>W korzeniu kopii roboczej wpisujemy:</li>
</ul>
<blockquote><p>svn propget svn:mergeinfo -R</p></blockquote>
<ul>
<li>Powinniśmy dążyć do tego, żeby svn:mergeinfo istniało tylko dla korzenia kopii roboczej, np.:</li>
</ul>
<blockquote><p>. &#8211; /branches/Foo:2055-2223</p></blockquote>
<ul>
<li> Usuwamy kolejno własność na wszystkich katalogach w głównym katalogu kopii roboczej:</li>
</ul>
<blockquote><p>svn propdel svn:mergeinfo -R nazwa_katalogu</p></blockquote>
<ul>
<li>Znowu robimy svn propget svn:mergeinfo -R. Jeżeli widzimy tylko katalog główny (np /trunk, albo /branches/foo) to wszystko jest ok.</li>
</ul>
<p>Możemy teraz spróbować ponownie zreintegrować naszą gałąź. Powinno działać.</p>
]]></content:encoded>
			<wfw:commentRss>http://xlab.pl/2009/04/problemy-z-svn-merge-reintegrate/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
