<?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/"
	xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule"
>

<channel>
	<title>Dariusz Łuksza &#187; git</title>
	<atom:link href="http://luksza.org/tag/git/feed/" rel="self" type="application/rss+xml" />
	<link>http://luksza.org</link>
	<description>myśli luźno zebrane ... ja i moja jaźń w intenecie</description>
	<lastBuildDate>Wed, 29 Feb 2012 10:11:35 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>

   <image>
    <title>Dariusz Łuksza</title>
    <url>http://0.gravatar.com/avatar/ed2d261ca5db36a17e690dc736dcd9ef.png?s=48</url>
    <link>http://luksza.org</link>
   </image>
		<item>
		<title>Get a free private Git hosting!</title>
		<link>http://luksza.org/2010/get-a-free-private-git-hosting/</link>
		<comments>http://luksza.org/2010/get-a-free-private-git-hosting/#comments</comments>
		<pubDate>Sun, 14 Nov 2010 14:26:58 +0000</pubDate>
		<dc:creator>Dariusz Łuksza</dc:creator>
				<category><![CDATA[eclipse]]></category>
		<category><![CDATA[english]]></category>
		<category><![CDATA[dropbox]]></category>
		<category><![CDATA[git]]></category>

		<guid isPermaLink="false">http://luksza.org/?p=713</guid>
		<description><![CDATA[&#160; I think that every one knows GitHub and as you should know that we can host there for free ours open source project&#8217;s but if we want to have a private repository we should pay for it. It seams fair &#8230; but what if I don&#8217;t want to pay ? I can setup my [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp;</p>
<p>I think that every one knows GitHub and as you should know that we can host there for free ours open source project&#8217;s but if we want to have a private repository we should pay for it. It seams fair &#8230; but what if I don&#8217;t want to pay ? I can setup my own server somewhere or &#8230; use one of on-line file hosting service like <a href="http://www.dropbox.com/referrals/NTE0OTk2OTkxOQ" target="_blank">dropbox</a> (for free we get here 2GB, this is lots of space for git repositories <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ).</p>
<p>How it is possible? It is only about files. As we all know git keeps everything inside .git folder, therefore we can put it in <a href="http://www.dropbox.com/referrals/NTE0OTk2OTkxOQ" target="_blank">dropbox</a>. To do it we only need to have an account and configured dropbox-folder on ours hard drive, and here is recipe:</p>
<ol>
<li>First of all we should add new remote to our git remote configuration, I&#8217;ll call it <em>dropbox</em>:

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">git</span> remote add dropbox <span style="color: #c20cb9; font-weight: bold;">file</span>:<span style="color: #000000; font-weight: bold;">///</span>home<span style="color: #000000; font-weight: bold;">/</span>lock<span style="color: #000000; font-weight: bold;">/</span>path<span style="color: #000000; font-weight: bold;">/</span>to<span style="color: #000000; font-weight: bold;">/</span>dropbox-folder<span style="color: #000000; font-weight: bold;">/</span>project.git</pre></div></div>

</li>
<li>Now we should create folder <em>project.git</em></li>
<li>Launch a terminal and enter <em>project.git</em> folder</li>
<li>Run:

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">git</span> init <span style="color: #660033;">--bare</span></pre></div></div>

</li>
<li>Go back to yours project directory and push into <em>dropbox</em>:

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">git</span> push dropbox</pre></div></div>

</li>
</ol>
<p>Viola! Dropbox daemon will automatically synchronize with remote &#8220;repository&#8221;. And there is another feature of this solution, you can share this folder with yours friends!</p>
<p>But there are also some disadvantages:</p>
<ol>
<li>No access control &#8211; if you share yours project with friend she (or he) have full access and can even delete everything &#8230; but you always have yours local copy</li>
<li>No web interface &#8211; this obvious &#8230; I think <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </li>
</ol>
<p>This solution I figure out few minutes ago and use it to backup my BS project, and it seams to be working very well <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><strong>UPDATE:</strong></p>
<p>As <a href="http://luksza.org/2010/11/14/get-a-free-private-git-hosting/comment-page-1/#comment-5181" target="_self">Tim said</a> it is also possible to have a free Git hosting on <a href="http://bettercodes.org/" target="_blank">bettercodes.org</a>. To be honest I didn&#8217;t check it because solution with dropbox meets my needs.</p>
<p><strong>NEXT UPDATE:</strong></p>
<p>According to <a href="http://luksza.org/2010/11/14/get-a-free-private-git-hosting/comment-page-1/#comment-5198" target="_blank">Machu&#8217;s comment</a>, there is also <a href="http://www.assembla.com/" rel="nofollow">assembla.com</a> that gives 2GB for SVN or Git repository.<br />
<strong></strong></p>
 <img src="http://luksza.org/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=713" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://luksza.org/2010/get-a-free-private-git-hosting/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>GSoC10 midterm and EGit common ancestor</title>
		<link>http://luksza.org/2010/gsoc10-midterm-and-egit-common-ancestor/</link>
		<comments>http://luksza.org/2010/gsoc10-midterm-and-egit-common-ancestor/#comments</comments>
		<pubDate>Fri, 16 Jul 2010 23:07:58 +0000</pubDate>
		<dc:creator>Dariusz Łuksza</dc:creator>
				<category><![CDATA[eclipse]]></category>
		<category><![CDATA[english]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[soc10]]></category>
		<category><![CDATA[common ancestor]]></category>
		<category><![CDATA[egit]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[gsoc10]]></category>

		<guid isPermaLink="false">http://luksza.org/?p=614</guid>
		<description><![CDATA[I don&#8217;t know exactly when we hit a Google Summer of Code 2010 midterm date &#8230; time runs so fast, few weeks ago I was writing that I&#8217;ve got accepted in this year&#8217;s program edition, and now we hit a midterm evaluations. This is a quite good time to sum up this short period of [...]]]></description>
			<content:encoded><![CDATA[<p>I don&#8217;t know exactly when we hit a Google Summer of Code 2010 midterm date &#8230; time runs so fast, few weeks ago I was writing that I&#8217;ve got accepted in this year&#8217;s program edition, and now we hit a midterm evaluations. This is a quite good time to sum up this short period of time.</p>
<p>Starting from the begging &#8230; estimating a project; now I know that initially I was very, very (and even more very, very <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ) optimistic about project time line. According to my initial estimation I should now start working on stashing support in JGit &#8230; but for now I&#8217;m &#8220;stuck&#8221; in synchronize view. Even more because now I see that I&#8217;ll need two or more weeks to make it ready for 0.9.0 release, now it has two major issues that I would like to solve before upcoming release. I even  don&#8217;t want to think where I would be right now if <a href="http://blog.hantsuki.org/" target="_blank">Remy</a> didn&#8217;t made initial contribution &#8230;</p>
<p>OK, so what is project current status? Well we had an synchronize action and it works quite well. It shows upcoming, outgoing and conflicting changes &#8230; but there are few issues in current implementation. First of all common ancestor isn&#8217;t calculated properly (according to bug: <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=317934" target="_blank">317371</a>). Next issue is that we always use HEAD as a &#8216;local&#8217; in three-way-compare, to be honest this seams to be an Team Framework limitation because &#8216;local&#8217; is always instance of IResource .. btw. I should raise an issue for this <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> . Last thing (for now) that in my humble opinion should be included in 0.9.0 is support for change set&#8217;s (bug: <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=318473" target="_blank">3318473</a>) because Git works on repository state changes not on file changes. Additionally there is one small feature that also should be included in 0.9.0: merging support from synchronization view, but (for now) it seams to be a simple thing to achieve.</p>
<p>What are my plans? <a href="http://egit.eclipse.org/r/#change,1064" target="_blank">Fix for bug 317371 currently wait for approvement</a><a href="http://egit.eclipse.org/r/#change,1064" target="_blank"> in Gerrit</a>, so I thing that this is rather a closed thing. For now I&#8217;ll focus on change set support. In case of popper handling of source branch setup I&#8217;ll wait for any hints on <a href="http://www.eclipse.org/forums/index.php?t=msg&amp;th=172016&amp;start=0&amp;" target="_blank">eclipse forum thread</a>, then I thin that I&#8217;ll try to implement it <em><strong>somehow</strong></em>. If I fail in this task, I thing that we should disable source branch selecting and set it by default to HEAD.</p>
<p>Some statistics and numbers:</p>
<ul>
<li><a href="http://egit.eclipse.org/w/?p=egit.git;a=commit;h=6a4218ebd200b139c292807fe41b4d05bf9284ff" target="_blank">Add preliminary synchronization support within Eclipse for branches</a>. &#8211; based on <a href="http://blog.hantsuki.org/" target="_blank">Remy Suen</a> work<br />
<em>32 files changed, 2902 insertions(+), 10 deletions(-)</em></li>
<li><a href="http://egit.eclipse.org/w/?p=egit.git;a=commit;h=4fec29460f0cd3d3a507fc5118815d991afd44cb" target="_blank">Refactored UI tests</a><br />
<em>15 files changed, 434 insertions(+), 393 deletions(-)</em></li>
<li><a href="http://egit.eclipse.org/w/?p=egit.git;a=commit;h=ba6eb8c99f603e5d570785d9d9a4a165bf8a34ba" target="_blank">Fixes strange result set in Synchronize view on Windows</a><br />
<em>1 files changed, 26 insertions(+), 19 deletions(-)</em></li>
<li><a href="http://egit.eclipse.org/w/?p=egit.git;a=commit;h=41ada1c42f7a02d06e8e2030f4c81455e2319aca" target="_blank">Fix NPE when deleting project used in Synchronize View</a><br />
<em>1 files changed, 14 insertions(+), 8 deletions(-)</em></li>
<li><a href="http://egit.eclipse.org/w/?p=egit.git;a=commit;h=a58311f91838f1c8a6f6f31d99cb343f1acc1d18" target="_blank">Show repository path in Synchronize View</a><br />
<em> 4 files changed, 14 insertions(+), 6 deletions(-)</em></li>
<li><a href="http://egit.eclipse.org/w/?p=egit.git;a=commit;h=29b7ae92f1e4dec4a17ba6078e499342f2df83ea" target="_blank">Simplify API of GitSynchronizeData class.</a><br />
<em>5 files changed, 33 insertions(+), 72 deletions(-)</em></li>
<li><a href="http://egit.eclipse.org/w/?p=egit.git;a=commit;h=02a3f9d4e537892fb6116789ea1ac26247da84c8" target="_blank">Prevent from NullPointerException&#8217;s</a><br />
<em>2 files changed, 24 insertions(+), 8 deletions(-)</em></li>
<li><a href="http://egit.eclipse.org/w/?p=egit.git;a=commit;h=fd5bd31f476676e77e6c67c28fe12391f85d9fa0" target="_blank">Add tests for integration with Synchronize view</a><br />
<em>13 files changed, 2249 insertions(+), 12 deletions(-)</em></li>
<li><a href="http://egit.eclipse.org/r/#change,1064" target="_blank">Fixes obtaining common ancestor in Synchronize view</a> &#8211; wait for code review<br />
<em>22 files changed, 1499 insertions(+), 1329 deletions(-)</em></li>
</ul>
<p>In my humble opinion this is quite good result for around 7 weeks of work <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
 <img src="http://luksza.org/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=614" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://luksza.org/2010/gsoc10-midterm-and-egit-common-ancestor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>EGit @ Poznań Eclipse DemoCamp</title>
		<link>http://luksza.org/2010/egit-poznan-eclipse-democamp/</link>
		<comments>http://luksza.org/2010/egit-poznan-eclipse-democamp/#comments</comments>
		<pubDate>Thu, 03 Jun 2010 14:09:33 +0000</pubDate>
		<dc:creator>Dariusz Łuksza</dc:creator>
				<category><![CDATA[eclipse]]></category>
		<category><![CDATA[english]]></category>
		<category><![CDATA[democamp]]></category>
		<category><![CDATA[egit]]></category>
		<category><![CDATA[git]]></category>

		<guid isPermaLink="false">http://luksza.org/?p=584</guid>
		<description><![CDATA[Yesterday Matthias Sohn, my mentor in Google Sumer of Code, ask me would I like to talk about EGit on Poznan Eclipse DemoCamp. After a moment&#8217;s reflection I&#8217;ve decided that this a great opportunity for me to get more involved in Eclipse community. There are not much time for preparation, but I&#8217;m not a guy [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday Matthias Sohn, my mentor in Google Sumer of Code, ask me would I like to talk about EGit on<a href="http://wiki.eclipse.org/Eclipse_DemoCamps_Helios_2010/Poznan" target="_blank"> Poznan Eclipse DemoCamp</a>. After a moment&#8217;s  reflection I&#8217;ve decided that this a great opportunity for me to get more involved in Eclipse community.</p>
<p>There are not much time for preparation, but I&#8217;m not a guy that prefer to have everything fixed, I&#8217;m rather prefer to improvise and let thing just happed <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> . So I&#8217;m plan to have a quick introduction in Git, briefly describe differences between CVS/SVN and Git. Then I&#8217;ll move to describe features that we have in EGit 0.8 (that was released yesterday <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ). Last one but not least part would be a live demo covering some day to day use cases, describing how we, our company can benefit from distributed version control system.</p>
<p>btw. This would be my first public speak so I&#8217;m feeling stressed &#8230; I hope that everything went well during presentation <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>P.S. I&#8217;ll be speaking in Polish of course <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
 <img src="http://luksza.org/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=584" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://luksza.org/2010/egit-poznan-eclipse-democamp/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>Google Summer of Code 2010 &#8230; I&#8217;m in ;&gt;</title>
		<link>http://luksza.org/2010/google-summer-of-code-2010-im-in/</link>
		<comments>http://luksza.org/2010/google-summer-of-code-2010-im-in/#comments</comments>
		<pubDate>Mon, 26 Apr 2010 19:56:10 +0000</pubDate>
		<dc:creator>Dariusz Łuksza</dc:creator>
				<category><![CDATA[polish]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[soc10]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[egit]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[gsoc10]]></category>
		<category><![CDATA[swt]]></category>

		<guid isPermaLink="false">http://luksza.org/?p=553</guid>
		<description><![CDATA[Na początku tego roku zastanawiałem się czy wziąć ponownie udział w Google Summer of Code &#8230; jak widać po tytule zdecydowałem się wystartować, a nawet mój projekt został zaakceptowany &#8230; YEAH! Drugi raz znalazłem się w elitarnym gronie 10001025 studentów z całego świata. W tegorocznej edycji będę współpracował z Matthias&#8217;em Sohn&#8217;nem przy rozwoju EGita i [...]]]></description>
			<content:encoded><![CDATA[<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } -->Na początku tego roku <a href="http://luksza.org/2010/01/03/anno-domini-2009/" target="_blank">zastanawiałem</a> się czy wziąć ponownie udział w Google Summer of Code &#8230; jak widać po tytule zdecydowałem się wystartować, a nawet <a href="https://socghop.appspot.com/gsoc/student_project/show/google/gsoc2010/eclipse/t127230758145" target="_blank">mój projekt</a> został zaakceptowany &#8230; YEAH! Drugi raz znalazłem się w elitarnym gronie <span style="text-decoration: line-through;">1000</span>1025 studentów z całego świata.</p>
<p>W tegorocznej edycji będę współpracował z Matthias&#8217;em Sohn&#8217;nem przy rozwoju EGita i JGita (było to do przewidzenia po moich ostatnich wpisach). Dokładniej rzecz ujmując <a href="https://socghop.appspot.com/gsoc/student_project/show/google/gsoc2010/eclipse/t127230758145" target="_blank">mój projekt</a> obejmuje integrację EGit&#8217;a z <em>Synchronization View</em> oraz implementację wsparcja dla schowka (git stash). W tak zwanym między czasie czyli <em>Community Bonding Period</em> chcę zaimplementować UI dla tworzenia tag&#8217;ów w EGit&#8217;cie, już poczyniłem nawet ku temu pierwsze kroki.</p>
<p>W sumie będzie to dla mnie pewna odmiana w stosunku do Web Developmentu z którym miałem do czynienia do tej pory &#8230; zapowiada się ciekawy okres, oj będzie się działo ;&gt; ;D</p>
<p>BTW. W tym roku <a href="http://www.wi.zut.edu.pl/" target="_blank">Wydział Informatyki ZUT</a> ma wyjątkowo wyjątkowo silną reprezentaję. Z moich infromacji wynika, że do SoC zakwalifikowały się jeszcze dwie osoby:</p>
<ul>
<li><a href="https://socghop.appspot.com/gsoc/student_project/show/google/gsoc2010/apache/t127230759172" target="_blank">Tomasz Oponowicz do Apache Software Fundation</a></li>
<li><a href="https://socghop.appspot.com/gsoc/student_project/show/google/gsoc2010/kde/t127230762526" target="_blank">Adam Rakowski do KDE</a></li>
</ul>
 <img src="http://luksza.org/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=553" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://luksza.org/2010/google-summer-of-code-2010-im-in/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>EGit development</title>
		<link>http://luksza.org/2010/egit-development/</link>
		<comments>http://luksza.org/2010/egit-development/#comments</comments>
		<pubDate>Mon, 12 Apr 2010 07:20:48 +0000</pubDate>
		<dc:creator>Dariusz Łuksza</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[polish]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[contribution]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[egit]]></category>
		<category><![CDATA[git]]></category>

		<guid isPermaLink="false">http://luksza.org/?p=538</guid>
		<description><![CDATA[Nie będę ukrywał, że jestem fanem zarówno Eclipse&#8216;a jak i Git&#8216;a. Idealnym połączeniem obu faktów jest projekt EGit, czyli (jak by ktoś jeszcze nie wiedział albo się nie domyślał) wtyczka dodająca obsługę repozytoriów Git&#8217;a do Eclipse&#8217;a. Jakiś czas temu opisywałem EGit&#8217;a. Wtedy to już zauważyłem brak kilku opcji w UI. Jedną z nich była np. [...]]]></description>
			<content:encoded><![CDATA[<p>Nie będę ukrywał, że jestem fanem zarówno <a href="http://eclipse.org" target="_blank">Eclipse</a>&#8216;a jak i <a href="http://git-scm.com/" target="_blank">Git</a>&#8216;a. Idealnym połączeniem obu faktów jest projekt <a href="http://eclipse.org/egit/" target="_blank">EGit</a>, czyli (jak by ktoś jeszcze nie wiedział albo się nie domyślał) wtyczka dodająca obsługę repozytoriów Git&#8217;a do Eclipse&#8217;a.</p>
<p>Jakiś czas temu <a href="http://luksza.org/wp-admin/post.php?action=edit&amp;post=489" target="_blank">opisywałem EGit&#8217;a</a>. Wtedy to już zauważyłem brak kilku opcji w UI. Jedną z nich była np. obsługa tagowania &#8230; ale już tak nie jest (a właściwie to nie będzie), gdyż <a href="http://egit.eclipse.org/r/#change,544" target="_blank">wczoraj wysłałem do Code review</a> efekt kilku godzin mojej pracy. Jeżeli patch zostanie zaaplikowany to w najnowszej wersji EGit&#8217;a będzie można już swobodnie tagować i zmieniać nazwy tagów prosto z UI.</p>
<p>BTW. Nie jest to mój pierwszy patch w tym projekcie, kilka dni temu zostały zaakceptowane moje <a href="http://egit.eclipse.org/r/#change,362" target="_blank">poprawki do jednej z klas w EGit&#8217;cie</a> <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  W zanadrzu mam jeszcze coś &#8230; ale o tym za jakiś czas dopiero ;&gt;</p>
 <img src="http://luksza.org/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=538" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://luksza.org/2010/egit-development/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>Git, EGit i Gerrit &#8230;</title>
		<link>http://luksza.org/2010/git-egit-i-gerrit/</link>
		<comments>http://luksza.org/2010/git-egit-i-gerrit/#comments</comments>
		<pubDate>Wed, 17 Mar 2010 21:15:43 +0000</pubDate>
		<dc:creator>Dariusz Łuksza</dc:creator>
				<category><![CDATA[java]]></category>
		<category><![CDATA[polish]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[egit]]></category>
		<category><![CDATA[gerrit]]></category>
		<category><![CDATA[git]]></category>

		<guid isPermaLink="false">http://luksza.org/?p=520</guid>
		<description><![CDATA[Podczas prac nad moją pracą inżynierska mam przyjemność używać git&#8217;a jako systemu kontroli wersji. Żeby współpraca układała się „zgrabniej” używam wtyczki do Eclipse&#8216;a EGit znajdującej się w inkubatorze Eclispe Fundation (kilka dni temu zdarzyło się mi popełnić mały artykuł na temat EGit&#8217;a). W naszej współpracy brakowało mi pewnych dwóch małych wodotrysków w dialogu do wybierania [...]]]></description>
			<content:encoded><![CDATA[<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } -->Podczas prac nad moją <a href="http://luksza.org/tag/inzynierka/" target="_blank">pracą inżynierska</a> mam przyjemność używać git&#8217;a jako systemu kontroli wersji. Żeby współpraca układała się „zgrabniej” używam wtyczki do <a href="http://www.eclipse.org/" target="_blank">Eclipse</a>&#8216;a <a href="http://www.eclipse.org/egit/" target="_blank">EGit</a> znajdującej się w inkubatorze Eclispe Fundation (kilka dni temu zdarzyło się mi popełnić <a href="http://luksza.org/2010/03/05/jgit-egit-eclipse-git-support/" target="_blank">mały artykuł na temat EGit&#8217;a</a>).</p>
<p>W naszej współpracy brakowało mi pewnych dwóch małych wodotrysków w dialogu do wybierania gałęzi, mianowicie reakcji na podwójne kliknięcie w nazwę gałęzi oraz poruszania się po drzewie za pomocą kursorów. Pomyślałem sobie, że warto by było chłopaków wesprzeć w pracy, w końcu odwalili kawał dobrej roboty … tak więc stworzyłem odpowiednią poprawkę. Niby nic wielkiego … do czasu … okazuje się projekt ten używa rozbudowanego narzędzia do przeglądania (review) i współtworzenia (conribute) kodu no i właśnie tutaj znajduje się problem … ale do rzeczy.</p>
<p><a href="http://code.google.com/p/gerrit/" target="_blank">Gerrit</a>, jest rozbudowanym (przynajmniej z mojego punktu widzenia) narzędziem do zarządzania rozproszonym projektem. Wymusza on pewien system pracy. Każdy patch musi zostać przejrzany oraz oceniony zanim trafi do głównego repozytorium. Nad każdą poprawką odbywa się głosowanie; dopiero po uzyskaniu odpowiedniej liczby głosów (od osób uprawnionych) zostanie ona włączona do głównej gałęzi kodu. Dodatkowo każdą linie poprawki można skomentować co ułatwia współpracę w rozproszonym zespole, zwłaszcza z nowymi jego członkami. Wprowadzane poprawki do poprawki ( <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  ) np. na podstawie komentarzy, są widoczne w jednym miejscu. Całość od strony interfejsu wygląda ładnie i przejrzyście (osobiście nie miałem najmniejszych kłopotów żeby się „połapać” w tym web&#8217;owym interfejsie).</p>
<p>Projekt <a href="http://www.eclipse.org/egit/" target="_blank">EGit</a> udostępnia <a href="http://wiki.eclipse.org/EGit/Contributor_Guide#Contributing_Patches" target="_blank">dokumentację</a> ułatwiającą rozpoczęcie współpracy z Gerrit&#8217;em. Bezproblemowo przez nią przebrnąłem, stworzyłem potrzebne konto, dodałem klucz publiczny, odpowiednio skonfigurowałem Git&#8217;a dodając <em>hook</em>&#8216;i … więc można zaczynać zabawę. ;&gt;</p>
<p>Szybkie ogarnięcie w kodzie, lokalizacja odpowiedniej klasy, chwila google&#8217;ania o SWT … i gotowa jest poprawka. Szybki commit do lokalnego repo, potem <a href="http://egit.eclipse.org/r/#change,351" target="_blank">wypchnięcie tego</a> do Gerrit&#8217;a … i oczekiwanie na werdykt developerów ;&gt;</p>
<p>Minęły 3 dni … jest pierwszy werdykt … -1 <img src='http://luksza.org/wp-includes/images/smilies/icon_neutral.gif' alt=':|' class='wp-smiley' /> . Z mojego pośpiechu wkradły się dwie literówki błąd dość infantylny … no i nie trzymam standardów formatowania (nie potrzebnie ujmuję w klamry jedno-instrukcjowe linie w if&#8217;ach i else&#8217;ach). Trzeba to poprawić … no i tutaj właśnie zaczęły się strome schody …</p>
<p>Zrobiłem poprawkę, <em>commit</em>, <em>push</em> … Gerrit zamiast dodać tą poprawkę do już istniejącej wyodrębnił to jako zupełnie osobną zmianę … nie tak się umawialiśmy, nie tak miało być.</p>
<p>Jak się po chwili okazuje, <em>EGit</em> nie wspiera hook&#8217;ów …  w ogóle ich nie używa tak więc w moim commit&#8217;cie zabrakło jednej bardzo ważnej linii:</p>
<pre>Change-Id:</pre>
<p>Teraz muszę to jakoś ręcznie połączyć …</p>
<p>Nie równa walka trwała dwie czy trzy godziny … w tym czasie za-spamowałem trochę skrzynki mailowe <em>commit</em>&#8216;erą, bo dostają maila o każdej nowej poprawce zgłoszonej do systemu, a ja takich nie prawdziwych poprawek podczas walki wprowadziłem :/. Na szczęście całość zakończyła się sukcesem. Tak więc co zrobić jeżeli wypchniemy do Gerrit&#8217;a naszą zmianę bez <em>Change-Id</em> i chcemy do niej wprowadzić poprawkę ?</p>
<p>Najpierw musimy się na pewno znajdować w odpowiednim miejscu historii Git&#8217;a. Tak więc na początku tworzymy sobie nową gałąź i przełączamy się na nią (oczywiście wszystko robimy z linii poleceń):</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">git</span> branch fixes
<span style="color: #c20cb9; font-weight: bold;">git</span> checkout fixes</pre></div></div>

<p>Za pomocą <em>git log</em> znajdujemy commit który wypchnęliśmy do repozytorium, niech to będzie np. f4a33b1 (wystarczy 6 pierwszych znaków z SHA-1) i cofamy się w czasie:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">git</span> reset –hard  f4a33b1</pre></div></div>

<p>Dokonujemy potrzebnych zmian, za pomocą <em>git add</em> dodajemy nasze zmiany do commit&#8217;a i (ważne), poprawiamy ostatni commit (czyli ten  f4a33b1):</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">git</span> commit –amend</pre></div></div>

<p>Najlepiej w samej treści wiadomości dołączonej do <em>commit</em>&#8216;a nic nie zmieniać, zatwierdzamy <em>commit</em> wychodząc z edytora. Teraz ponownie odpalamy <em>git log</em> i zapisujemy/zapamiętujemy 6 pierwszych znaków z nowego commit&#8217;a (na pewno będą różne od poprzednich), np. ee421a. Wypychamy naszą poprawkę do repozytorium</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">git</span> push <span style="color: #c20cb9; font-weight: bold;">ssh</span>:<span style="color: #000000; font-weight: bold;">//</span>username<span style="color: #000000; font-weight: bold;">@</span>egit.eclipse.org:<span style="color: #000000;">29418</span><span style="color: #000000; font-weight: bold;">/</span>egit.git ee421a:refs<span style="color: #000000; font-weight: bold;">/</span>for<span style="color: #000000; font-weight: bold;">/</span>master</pre></div></div>

<p>Po chwili powinniśmy dostać maila potwierdzającego wprowadzenie zmian.</p>
<p>Uff, to na tyle. Być może jest na to lepszy sposób … ale ten na pewno działa (a nie chcę wystawiać cierpliwości developerów EGit&#8217;a na zbyt dużą próbę).</p>
<p>BTW. Ten post starałem się pisać bez zbędnych anglikanizmów … wyszło to raczej średnio, nie mogłem skojarzyć odpowiedniego polskiego odpowiednika dla <em>commit</em> oraz <em>hook</em>.</p>
 <img src="http://luksza.org/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=520" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://luksza.org/2010/git-egit-i-gerrit/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>JGit + EGit = Eclipse Git support</title>
		<link>http://luksza.org/2010/jgit-egit-eclipse-git-support/</link>
		<comments>http://luksza.org/2010/jgit-egit-eclipse-git-support/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 22:50:05 +0000</pubDate>
		<dc:creator>Dariusz Łuksza</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[eclipse]]></category>
		<category><![CDATA[egit]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[jgit]]></category>

		<guid isPermaLink="false">http://luksza.org/?p=489</guid>
		<description><![CDATA[Jakiś czas temu projekty jgit (czyli implementacja git&#8216;a w java&#8217;ie) oraz egit (plugin do eclipse&#8217;a dodający wsparcie dla git&#8217;a) znalazły się w inkubatorze fundacji Eclipse. Dawno temu wyczytałem nawet, że git ma zastąpić CVS&#8216;a na miejscu domyślnego systemu kontroli wersji w IDE &#8230; ale zanim to nastąpi upłynie pewnie jeszcze sporo czasu &#8230; nie mniej [...]]]></description>
			<content:encoded><![CDATA[<p><!-- 		@page { margin: 0.79in } 		P { margin-bottom: 0.08in } -->Jakiś czas temu projekty <em>jgit</em> (czyli implementacja <em>git</em>&#8216;a w <em>java&#8217;</em>ie) oraz <em>egit</em> (plugin do <em>eclipse&#8217;</em>a dodający wsparcie dla <em>git&#8217;</em>a) znalazły się w inkubatorze fundacji <em>Eclipse</em>. Dawno temu wyczytałem nawet, że <em>git</em> ma zastąpić <em>CVS</em>&#8216;a na miejscu domyślnego systemu kontroli wersji w <em>IDE</em> &#8230; ale zanim to nastąpi upłynie pewnie jeszcze sporo czasu &#8230; nie mniej jednak już teraz można podejrzeć jak się mają rzeczy, co też właśnie w uczynię <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</p>
<p>Może na początek kilka numerków 3.5.2 oraz 0.6.0.201002030558, nie nie są to numery dużego lotka <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> . Pierwszy oczywiście opisuje aktualną wersje stabilną <em>Eclipse</em>, drugi zaś jest numerem wersji <em>egit/jgit</em>.</p>
<p>Pierwotnie stroną domową obu projektów było <a href="http://jgit.org" target="_blank">jgit.org</a> (tutaj też znajduje się <em>update site</em> dla <em>eclpse</em>&#8216;a) ale po przejściu projektu pod skrzydła <em>Eclipse Fundation</em> dostępne są dwie stronki <a href="http://eclipse.org/egit/" target="_blank">eclipse.org/egit/</a> oraz <a href="http://eclipse.org/jgit/" target="_blank">eclipse.org/jgit/</a> na obu w sekcji download znajdziemy ten sam link do update site&#8217;u:</p>
<pre>http://download.eclipse.org/egit/updates</pre>
<p>Ja używam ciągle starego <em>update site</em>&#8216;u:</p>
<pre>http://www.jgit.org/updates</pre>
<p>Z tego co sprawdziłem to podana wcześniej wersja jest dostępna tylko w drugim repo, możliwe że jest to jakiś <em>nightly build</em> czy coś &#8220;nie stabilnego&#8221; &#8230; nie wiem, u mnie działa ;&gt;</p>
<p>W tym wpisie chciał bym omówić jak &#8220;podłączyć&#8221; nowy projekt pod <em>git</em> <em>SCM</em> (zakładając, że wcześniej nie współdzieliliśmy go w żadnym <em>SCM</em>&#8216;ie). Jeżeli chodzi natomiast o dodanie istniejącego już projektu podpiętego pod jakieś <em>git</em>&#8216;owe repo to robi się to przez <em>File -&gt; Import</em>, nie ma do tego nowej perspektywy wszystko robią <em>wizard</em>&#8216;y.</p>
<p>Tak więc dla przykładu zakładamy sobie nowy projekt GitTest, dodajemy tam jedną klasę Main z &#8220;standardowym&#8221;</p>
<pre>System.out.println("Hello git!");</pre>
<p>Następnie na tak spreparowanym projekcie klikamy prawym myszy i wybieramy po kolei <em>Team -&gt; Schare Project&#8230;</em> z dostępnej listy oczywiście wybieramy <em>git</em>. Jeżeli plugin znajdzie w jakimś katalogu nadrzędnym katalog <em>.git</em> (czyli miejsce gdzie git przechowuje swoje metadane) to zasugeruje podpięcie się pod już istniejące repo. W moim przypadku taka sytuacja nie występuje.</p>
<p><img class="aligncenter size-full wp-image-497" title="git-init" src="http://luksza.org/wp-content/uploads/2010/03/git-init.jpg" alt="" width="660" height="338" /> Zaznaczmy nasz projekt, klikamy w <em>Create Repository</em>, następnie w <em>Next</em> i oto wykonaliśmy odpowiednik <em>git init</em> &#8230; sam nie wiem co jest prostsze, chyba jednak wolał bym to zrobić z &#8220;palca&#8221;.</p>
<p>Skoro już zainicjalizowaliśmy nasze repo trzeba by je czymś wypełnić, czyli wykonać odpowiednik <em>git add</em>. Spokojnie, wszystko można wyklikać <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  tak wiec zaczynajmy klikać ;&gt;. Parawym myszy na pliku/katalogu który chcemy dodać (w moim wypadku jest tylko jeden katalog <em>src</em>) i poklei <em>Team -&gt; Add to version control</em>.</p>
<p><img class="aligncenter size-full wp-image-500" title="git-add" src="http://luksza.org/wp-content/uploads/2010/03/git-add.jpg" alt="" width="252" height="135" /></p>
<p>Kolejny krok to <em>git commit</em>. Znowu to wyklikamy ;&gt; <em>Team -&gt; Commit</em>. Możemy teraz dodać komentarz do <em>commit</em>&#8216;a jak również odznaczyć pliki które nie chcemy dodać do repo. Po kliknięciu w <em>Commit</em> nasze zmiany zostaną zapisane w repozytorium.</p>
<p><img class="aligncenter size-full wp-image-501" title="git-commit" src="http://luksza.org/wp-content/uploads/2010/03/git-commit.jpg" alt="" width="634" height="611" /></p>
<p>Jako że przez pomyłkę na dodałem cały projekt do commita (<em>Team -&gt; Add to version control</em>) również &#8220;nie chciane pliki&#8221; takie jak <em>.setting</em>, <em>.classpath</em> oraz <em>.project</em> dodały się co <em>commit</em>&#8216;a. W takim wypadku odpalamy widok <em>Navigator</em> i na każdym takim pliku wykonujemy po kolei operację <em>Team -&gt; Remove from version control</em>, <em>Team -&gt; Add to .gitignore</em>. Tak powstały plik <em>.gitignore</em> dodajemy do <em>git</em>&#8216;a i<em> commit</em>&#8216;ujemy (czyli: <em>Team -&gt; Add to version control</em>, <em>Team -&gt; Commit</em>).</p>
<p>Pora zrobić coś bardziej szalonego &#8230; zmieńmy zawartość Main.java ! Żeby za bardzo nie szaleć ja dodałem dodatkowy wykrzyknik na końcu &#8220;Hello git!&#8221; ;&gt;. Zapisujemy zmiany. <em>Eclipse</em> automatycznie (podobnie z resztą jak to ma miejsce podczas korzystania z <em>CVS</em>&#8216;a) informuje nas o tym, że względem repozytorium nasz plik jest zmieniony. Jak sprawdzić zmiany ? Nie ma czegoś takiego jak <em>Synchronize with repository</em> &#8230; ale jest za to: <em>Compare with -&gt; Git index</em>. Moje „szalone zmiany” są widoczne jak na dłoni &#8230; albo jak kto woli &#8220;jak na CVS&#8217;ie&#8221; <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><img class="aligncenter size-full wp-image-502" title="git-compare" src="http://luksza.org/wp-content/uploads/2010/03/git-compare.jpg" alt="" width="660" height="344" /></p>
<p>Niestety na chwilę obecną nie dopatrzyłem się żadnych możliwości porównania całego projektu, jak to jest możliwe w CVS&#8217;ie. Trzeba porównywać każdy plik z osobna &#8230; jest to trochę męczące ale mam nadzieje, że w kolejnych wydaniach taka funkcjonalność zostanie &#8220;jakoś&#8221; zaimplementowana oraz dodana.</p>
<p>Po sprawdzeniu jakie zmiany, względem repo, wprowadziliśmy w naszym projekcie możemy śmiało wyklikać <em>Team -&gt; Commit</em> na naszym zmienionym pliku. W ten sposób moje repo zawiera już 3 <em>commit</em>&#8216;y ;&gt;</p>
<p>Może teraz sobie po-<em>branch</em>&#8216;ujemy. Prawie standardowo klikamy na projekt i wybieramy <em>Team -&gt; Branch&#8230;</em> wyskakuje nam okienko w którym możemy dodać nową gałąź, zmienić jej nazwę oraz przełączyć się na wybraną gałąź. Aktualna gałąź jest <strong>pogrubiona</strong> oraz dodatkowo oznaczona przypisem <em>(current)</em>. Klikamy w <em>New branch</em> nazwa jest praktycznie dowolna, ja nazwałem nowy branch jako &#8220;awesome-changes&#8221; <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> , akceptujemy zaznaczamy nowo dodany branch i klikamy <em>Checkout</em>, żeby się na niego przełączyć. Prawda, że proste ? <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><img class="aligncenter size-full wp-image-504" title="git-branch" src="http://luksza.org/wp-content/uploads/2010/03/git-branch.jpg" alt="" width="533" height="430" /></p>
<p>Teraz jeżeli klikniemy na projekt prawym myszy i z menu wybierzmy <em>Team -&gt; Show in Resource History</em> widzimy historię zmian w naszym projekcie.</p>
<p><img class="aligncenter size-full wp-image-506" title="egit-resource_history" src="http://luksza.org/wp-content/uploads/2010/03/egit-resource_history.jpg" alt="" width="660" height="350" /></p>
<p>Niestety na chwilę obecną plugin nie pozwala <em>merge</em>&#8216;ować <em>branch</em>&#8216;y &#8230; szkoda, trzeba to robić ręcznie z linii poleceń czyli <em>git merge &lt;target&gt; &lt;source&gt;</em>.</p>
<p>Dostępna jest natomiast opcja nadpisywania poczynionych zmian. Przez <em>Team -&gt; Reset</em> można wykonać reset wprowadzonych zmian do poziomu w wskazanej gałęźi.</p>
<p><img class="aligncenter size-full wp-image-507" title="git-reset" src="http://luksza.org/wp-content/uploads/2010/03/git-reset.jpg" alt="" width="533" height="493" /></p>
<p>To tyle mojego małego przeglądu, więcej informacji można znaleźć w <a href="http://wiki.eclipse.org/EGit/User_Guide" target="_blank">User Guide EGit</a>&#8216;a.</p>
 <img src="http://luksza.org/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=489" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://luksza.org/2010/jgit-egit-eclipse-git-support/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>Gitosis dodanie repo</title>
		<link>http://luksza.org/2010/gitosis-dodanie-repo/</link>
		<comments>http://luksza.org/2010/gitosis-dodanie-repo/#comments</comments>
		<pubDate>Wed, 03 Mar 2010 19:52:34 +0000</pubDate>
		<dc:creator>Dariusz Łuksza</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[polish]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[gitosis]]></category>

		<guid isPermaLink="false">http://luksza.org/?p=482</guid>
		<description><![CDATA[Prace nad programem do inżynierki zaszły już tak &#8220;daleko&#8221;, że wypadało by gdzieś ten kod przetrzymywać dla bezpieczeństwa. Dobrym dodatkowym feature&#8217;m byla by też możliwość jego wersjonowania &#8230; jako, że jakiś temu postawiłem sobie własne repo git&#8217;a (dwie (1, 2) z zamierzonych trzech części opisu instalacji zostały już opublikowane) wybór był oczywisty. Początkowo zadanie wydawało [...]]]></description>
			<content:encoded><![CDATA[<p>Prace nad programem do inżynierki <a href="http://luksza.org/2010/03/02/inzynierka-v0-1/" target="_blank">zaszły już tak &#8220;daleko&#8221;</a>, że wypadało by gdzieś ten kod przetrzymywać dla bezpieczeństwa. Dobrym dodatkowym feature&#8217;m byla by też możliwość jego wersjonowania &#8230; jako, że jakiś temu postawiłem sobie własne repo git&#8217;a (dwie (<a href="http://luksza.org/2009/11/29/prywatne-repo-gita-cz-1/" target="_blank">1</a>, <a href="http://luksza.org/2009/12/02/prywatne-repo-git%e2%80%99a-cz-2/" target="_blank">2</a>) z zamierzonych trzech części opisu instalacji zostały już opublikowane) wybór był oczywisty.</p>
<p>Początkowo zadanie wydawało się bardzo banalne &#8230; dodać repozytorium do <em>gitosis</em> i wszystko powinno się zrobić automatycznie &#8230; cóż tak niestety <strong>nie było</strong>. Dla potomności (oraz mojej często wątpliwej pamięci) postanowiłem opisać całą procedurę.</p>
<p>Będzie do tego potrzebna nam konfiguracja <em>gitosis</em>. Jako że jest ona przetrzymywana jako jedno z repozytoriów nie powinno być żadnych problemów z jej uzyskaniem. Tak więc jeżeli nie mamy już jakiejś kopi na dysku wywołujemy komendę:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">git</span> clone <span style="color: #c20cb9; font-weight: bold;">ssh</span>:<span style="color: #000000; font-weight: bold;">//</span>gitosis<span style="color: #000000; font-weight: bold;">@</span>server.z.gitem.org<span style="color: #000000; font-weight: bold;">/</span>gitosis-admin.git</pre></div></div>

<p>Następnie edytujemy plik gitosis.conf w którym odajemy nowe repo:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">&#91;</span>repo nazwa-nowego-repo<span style="color: #7a0874; font-weight: bold;">&#93;</span>
owner = joe
description = opis</pre></div></div>

<p>No i niby wygląda na to, że to wszystko &#8230; niestety nie jest tak łatwo, z tego co doświadczyłem to  <em>gitosis</em> wymaga, żeby każde repo posiadało osobną grupę o tej samej nazwie (możliwe, że można to jakoś przekonfigurować ale ja nie znalazłem takich informacji). Więc nie pozostaje nam nic innego jak dodać kolejną grupę:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #7a0874; font-weight: bold;">&#91;</span>group nazwa-nowego-repo<span style="color: #7a0874; font-weight: bold;">&#93;</span>
owner = joe
writable = nazwa-nowego-repo
members = joe</pre></div></div>

<p>Zapisujemy zmiany i za pomocą <em>git push</em> wypychamy je na serwer &#8230; no to konfiguracje gitosis mamy za sobą. Teraz zostało nam jeszcze utworzyć repo ;&gt;</p>
<p>Tak więc w lokalnym systemie tworzymy sobie nowy katalog albo wchodzimy do katalogu projektu który chcemy wrzucić do repo, w środku wywołujemy <em>git init</em>, następnie przy użyciu <em>git add</em> dodajemy wszystkie pliki do commit&#8217;a. Potem commit&#8217;ujemy zmiany do lokalnego repo (<em>git commit -m &#8220;initial commit&#8221;</em>) &#8230; no i teraz najważniejsze, dodajemy nasze zdalne repo:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">git</span> remote add dowolna-nazwa-repo <span style="color: #c20cb9; font-weight: bold;">ssh</span>:<span style="color: #000000; font-weight: bold;">//</span>gitosis<span style="color: #000000; font-weight: bold;">@</span>server.z.gitem.org<span style="color: #000000; font-weight: bold;">/</span>nazwa-nowego-repo.git</pre></div></div>

<p>i tryumfalnie wypychamy wszystko na serwer</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">git</span> push dowolna-nazwa-repo <span style="color: #660033;">--all</span></pre></div></div>

<p>To tyle, wszystko powinno działać &#8230; przynajmniej na razie u mnie działa ;&gt;</p>
<p><del>Dziś</del> lub <del>jutro</del> dodam wpis odnośnie aktualnego stanu wtyczki dodającej obsługę git&#8217;a dla Eclipse <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  będzie to bardzo szybkie overview funkcjonalności których do tej pory użyłem/używałem.</p>
<p>UPDATE:<br />
Wpis o git&#8217;cie i eclipse jest prawie gotowy, zostało mi jeszcze opisać <del>branche&#8217;owanie</del>, merge&#8217;owanie, <del>push&#8217;owanie</del> oraz <del>pull&#8217;owanie</del> i wstawić screenshot&#8217;y <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>UPDATE2:<br />
Dziś git też mnie pokonał <img src='http://luksza.org/wp-includes/images/smilies/icon_neutral.gif' alt=':|' class='wp-smiley' />  &#8230; okazało się, że aktualnie plugin nie wspiera merge&#8217;owania branche&#8217;y, a push&#8217;owanie i fetch&#8217;owanie jest zbyt skomplikowane żeby opisywać je w jednym wpisie (zwłaszcza jeżeli nie ma się z tym zbyt wiele doświadczenia). Postaram się skończyć wpis jutro (zapamiętać: <em>jutro</em> nigdy nie umiera <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ) i <a href="http://http://luksza.org/2010/03/05/jgit-egit-eclipse-git-support/">go opublikować</a>.</p>
 <img src="http://luksza.org/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=482" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://luksza.org/2010/gitosis-dodanie-repo/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>Prywatne repo git’a cz.2</title>
		<link>http://luksza.org/2009/prywatne-repo-git%e2%80%99a-cz-2/</link>
		<comments>http://luksza.org/2009/prywatne-repo-git%e2%80%99a-cz-2/#comments</comments>
		<pubDate>Wed, 02 Dec 2009 21:38:08 +0000</pubDate>
		<dc:creator>Dariusz Łuksza</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[polish]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[gitosis]]></category>

		<guid isPermaLink="false">http://luksza.org/?p=436</guid>
		<description><![CDATA[W poprzednim poście de facto mało zajmowaliśmy się git&#8217;em &#8230; szczerze powiedziawszy to skonfigurowaliśmy tylko lighttpd które to później będzie nam potrzebne do uruchomienia cgit&#8216;a czyli interfejsu www w którym będziemy mogli obejrzeć sobie nasze repo. Dziś za to zajmiemy się instalacją i konfiguracją gitosis. Czym jest gitosis i o czego będzie nam potrzebne? Cóż, [...]]]></description>
			<content:encoded><![CDATA[<p>W poprzednim poście de facto mało zajmowaliśmy się git&#8217;em &#8230; szczerze powiedziawszy to skonfigurowaliśmy tylko <em>lighttpd</em> które to później będzie nam potrzebne do uruchomienia <em>cgit</em>&#8216;a czyli interfejsu www w którym będziemy mogli obejrzeć sobie nasze repo. Dziś za to zajmiemy się instalacją i konfiguracją gitosis.</p>
<p>Czym jest gitosis i o czego będzie nam potrzebne?</p>
<p>Cóż, podobnie jak sam git, gitosis jest zestawem skryptów ułatwiającym prace z repozytorium. Zestaw tych skryptów odpowiedzialny jest za kontrolę dostępu do repo jak i za sam dostęp do niego.</p>
<p>Jak działa gitosis?</p>
<p>&#8220;Integruje&#8221; się ono z serwerem SSH, &#8220;integruje się&#8221; to za wiele powiedziane, bo <em>sshd</em> wykorzystywane jest tylko do autoryzacji użytkowników oraz transferu danych z i do repo. Samo gitosis nie uruchamia dodatkowego daemona, jak już wspomniałem korzysta z <em>sshd</em>.</p>
<p>Jak przebiega proces autoryzacji ?</p>
<p>Podobnie jak w <a href="http://github.com/" target="_blank">GitHub</a>&#8216;ie najpierw trzeba dodać nasz klucz publiczny, żebyśmy mogli zostać z autoryzowani, następnie przy każdej próbie połączenia z repo będzie on wykorzystywany do przeprowadzenia autoryzacji &#8230; nie ma w tym żadnej wielkiej filozofii, dorzycamy nasz klucz i wszystko po prostu działa.</p>
<p>Ok, więc może w końcu do sedna &#8230; zaczynamy od zainstalowania pakietu <em>gitosis</em> w systemie:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> gitosis</pre></div></div>

<p>Proces instalacji sam utworzy w systemie konto użytkownika (standardowy login to <em>gitosis</em>), założy mu katalog domowy (standardowo: <em>/srv/gitosis</em>). Jeżeli bardzo chcemy to możemy to zmienić korzystając ze standardowej komendy <em>usermod</em> dla uproszczenia ja będę się posługiwał standardową nazwą użytkownika. Pozostaje nam tylko inicjalizacja i konfiguracja:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #660033;">-H</span> <span style="color: #660033;">-u</span> gitosis gitosis-init <span style="color: #000000; font-weight: bold;">&lt;</span> id_rsa.pub</pre></div></div>

<p>Gdzie <em>id_rsa.pub</em> jest naszym kluczem publicznym używanym przez naszego klienta ssh &#8230; fajnie to brzmi ale co to właściwie jest ? <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  Dokładny opis jak taki klucz sobie wygenerować (i co z nim zrobić) znajduje się <a href="http://help.github.com/key-setup-redirect" target="_blank">tutaj</a>. Generalnie powinien być to klucz który będzie identyfikował naszą maszynę z której będziemy się łączyć do repozytorium (tj. klucz prywatny i publiczny powinny być zapisane w katalogu <em>~/.ssh</em> na twoim desktopie/laptopie, tylko klucz publiczny w celu instalacji go w konfiguracji gitosis powinieneś skopiować na serwer na którym instalujesz repozytorium). Powyższa komęda powinna zainicjalizować repozytorium git/gitosis oraz dodać wskazany klucz publiczny jako klucz administratora. Jeżeli mamy szczęście to po wykonaniu poniżeszej komędy na naszym desktopie/laptopie (tj. na tym na którym znajduje się para <em>~/.ssh/id_rsa</em> i <em>~/.ssh/id_rsa.pub</em>):</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">git</span> clone gitosis<span style="color: #000000; font-weight: bold;">@</span>adres_serwera:gitosis-admin.git</pre></div></div>

<p>Jeżeli powyższa komenda nie wykona się poprawnie (jak to było w moim przypadku) zmuszeni jesteśmy skonfigurować gitosis ręcznie. W tym celu udajemy musimy przeedytować plik <em>/srv/gitosis/.ssh/authorized_keys</em> (tak wiem, że nie powinno się go edytować &#8230; ale co nam pozostaje ?) i zmienić &#8220;domyślny&#8221; login na identyczny z tym podanym w komentarzu do naszego klucza prywatnego (to jest to co podaliśmy za przełącznikiem <em>-C</em> podczas jego tworzenia), wartość klucza publicznego (to jest ten dziwny ciąg znaków za <em>ssh-rsa</em>) oraz na samym końcu ponownie wstawiamy wartość z naszego komentarza. Po wykonaniu tych zmian i ich zapisaniu ponownie próbujemy sklonować repozytorium z konfiguracją (czyli jeszcze raz wydajemy poprzednią komendę) &#8230; jeżeli znowu nie wykona się poprawnie &#8230; cóż czasem trzeba sobie radzić samemu <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>Ok, zakładam że w końcu uda się pobrać z serwera konfigurację z serwera &#8230; tak, na prawdę gitosis przechowuje swoją konfigurację w formie jednego z repozytoriów. Jest to dość wygodne, gdyż nie wymusza na nas logowania się na serwer celem zmiany konfiguracji (w wypadku dodania użytkownika repozytorium, czy też nowego projektu). W każdej chwili możemy sobie ta konfigurację pobrać, zmodyfikować, &#8220;wepchnąć&#8221; z powrotem i usunąć <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  jak dla mnie bomba <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</p>
<p>Co do samej konfiguracji to składa się ona z 2 rzeczy:</p>
<ul>
<li>pliku z konfiguracją (znajdują się tam definicje repozytoriów, grup i praw dostępu)</li>
<li>katalogu z kluczami publicznymi użytkowników</li>
</ul>
<p>W katalogu <em>keydir/</em> znajdują się klucze publiczne użytkowników, w postaci:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">uzywany_login.pub</pre></div></div>

<p>najczęściej login ma postać adresu email, więc przykładowy plik dla użytkownika <em>wlodek@luksza.org</em> będzie się nazywał<em> wlodek@luksza.org.pub</em> &#8230; jest to niezmiernie skomplikowane, nieprawdaż <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>W przypadku kiedy chcemy dodać nowego użytkownika bądź repozytorium musimy przeedytować plik <em>gitosis.conf</em>, jego opis można znaleźć <a href="http://eagain.net/gitweb/?p=gitosis.git;a=blob_plain;f=example.conf;hb=HEAD" target="_blank">tutaj</a>. W przypadku użytkowników należy pamiętać o zgodności nawy użytkownika z nazwą pliku zawierającą jego klucz publiczny. Dodatkowo warto wspomnieć o tym, że dla każdego repozytorium możemy zdefiniować właściciela (parametr <em>owner</em> <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ) oraz opis (<em>description</em>), są to przydatne parametry zwłaszcza podczas eksploracji repozytorium przy użyciu <em>cgit</em>&#8216;a czy też <em>gitweb</em>&#8216;a.</p>
<p>Kiedy już wykonamy wszystkie zmiany commit&#8217;ujemy je do lokalnego repo, a potem wypychamy do głównego:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">git</span> commit <span style="color: #660033;">-a</span>
<span style="color: #c20cb9; font-weight: bold;">git</span> push</pre></div></div>

<p>W ten prosty sposób administrujemy repozytorium git&#8217;a zarządzanym przez <em>gitosis</em> <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>BTW. Chyba szykuje się nam zmiana na miejscu domyślnego repo Eclipse Fundation możliwe, że nowe repo będzie obsługiwane przez git&#8217;a, &#8220;pierwsze&#8221; takie przesłanki można znaleźć <a href="http://dev.eclipse.org/blogs/wayne/2009/12/01/git-at-eclipse/" target="_blank">tutaj</a>.</p>
 <img src="http://luksza.org/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=436" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://luksza.org/2009/prywatne-repo-git%e2%80%99a-cz-2/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
	</item>
		<item>
		<title>Prywatne repo git&#8217;a cz.1</title>
		<link>http://luksza.org/2009/prywatne-repo-gita-cz-1/</link>
		<comments>http://luksza.org/2009/prywatne-repo-gita-cz-1/#comments</comments>
		<pubDate>Sun, 29 Nov 2009 22:09:21 +0000</pubDate>
		<dc:creator>Dariusz Łuksza</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[polish]]></category>
		<category><![CDATA[cgit]]></category>
		<category><![CDATA[Debian]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[gitosis]]></category>
		<category><![CDATA[https]]></category>
		<category><![CDATA[lighttpd]]></category>

		<guid isPermaLink="false">http://luksza.org/?p=417</guid>
		<description><![CDATA[Jakiś czas temu pisałem jak za pomocą git&#8217;a i pendirve&#8217;a można w łatwy sposób zabezpieczyć się przed utratą projektu. Dziś przedstawię bardziej skomplikowane podejście, a mianowicie postawimy repozytorium git&#8217;a na serwerze. W moich założeniach takie repozytorium nie będzie dostępnie publicznie (w przeciwieństwie do rozwiązania jakie na starcie proponuje GitHub; mają też rozwiązanie płatne w którym [...]]]></description>
			<content:encoded><![CDATA[<p>Jakiś czas temu pisałem jak za pomocą <a href="http://luksza.org/2009/04/24/wlasne-zapasowe-repozytorium-git/" target="_blank">git&#8217;a i pendirve&#8217;a można w łatwy sposób zabezpieczyć się przed utratą projektu</a>. Dziś przedstawię bardziej skomplikowane podejście, a mianowicie postawimy repozytorium git&#8217;a na serwerze. W moich założeniach takie repozytorium nie będzie dostępnie publicznie (w przeciwieństwie do rozwiązania jakie na starcie proponuje <a href="http://github.com/" target="_blank">GitHub</a>; mają też rozwiązanie płatne w którym to możemy mieć  prywatne repo, ale ja wole mieć je u siebie <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ).</p>
<p>Moje oczekiwania od takiego repo są następujące:</p>
<ul>
<li>dostępność do repo z każdego zakątka świata (czyli serwer musi być dostępny szeroko pojętej sieci)</li>
<li>możliwość dostępu do repo tylko dla wybranych użytkowników</li>
<li>możliwość przeglądania repo z poziomu www</li>
<li>bezpieczeństwo stosowanego rozwiązania (https, ssh)</li>
</ul>
<p>Jakie wybrałem oprogramowanie ?</p>
<ul>
<li>systemem bazowym będzie Debian (znany, <em>lubiany</em> i standardowy linux)</li>
<li>gitosis (prosty soft do hostowania repozytorium git&#8217;a z równie prostą kontrolą dostępu, IMO rozwiązanie w sam raz do moich potrzeb)</li>
<li><a href="http://www.lighttpd.net/" target="_blank">lighttpd</a> (mały i szybki httpd)</li>
<li>mod_ssl oraz mod_auth do wyżej wymienionego httpd</li>
<li><a href="http://hjemli.net/git/cgit/" target="_blank">cgit</a> odpowiednik gitweb&#8217;a ale moim zdaniem ładniejszy i bardziej przejrzysty</li>
</ul>
<p>We własnym zakresie trzeba zadbać o system bazowy, oraz jego konfigurację <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> . Zakładam, że Debian jest już zainstalowany, skonfigurowany, <em>zabezpieczony</em> oraz podpięty do sieci.</p>
<p>Zaczynamy od instalacji i konfiguracji <em>lighttpd</em></p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">apt-get</span> <span style="color: #c20cb9; font-weight: bold;">install</span> lighttpd apache2-utils</pre></div></div>

<p>Pakiet <em>apache2-utils</em> będzie nam potrzebny do wygenerowania <em>hash</em>&#8216;a hasła potrzebnego do <em>mod_auth</em> (swoją drogą system pakietowania debiana coraz bardziej mnie zadziwia &#8230; nie rozumiem po co w zależnościach do tego pakietu znajduje się libmysqlclient &#8230;). Po zainstalowaniu włączamy dwa interesujące nas moduły:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">lighttpd-enable-mod auth
lighttpd-enable-mod ssl</pre></div></div>

<p>Oraz przechodzimy do konfiguracji zarówno httpd jak i modułów. Zaczniemy od <em>mod_auth</em>, czyli edytujemy pliczek <em>/etc/lighttpd/conf-enabled/05-auth.conf</em>, w którym to wybieramy backend (czyli algorytm szyfrowania haseł oraz miejsce ich zapisu) oraz konfigurujemy miejsca do których dostęp będzie strzeżony hasłem. Po modyfikacjach plik konfiguracyjny powinien wyglądać mniej więcej tak:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">## Authentication for lighttpd</span>
<span style="color: #666666; font-style: italic;">##</span>
<span style="color: #666666; font-style: italic;">## Documentation: /usr/share/doc/lighttpd-doc/authentication.txt.gz</span>
<span style="color: #666666; font-style: italic;">##                http://www.lighttpd.net/documentation/authentication.html</span>
server.modules                += <span style="color: #7a0874; font-weight: bold;">&#40;</span> <span style="color: #ff0000;">&quot;mod_auth&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#41;</span>
<span style="color: #666666; font-style: italic;"># htdigest jest najmocniejszym dostepnym &quot;algorytmem&quot; szyfrujacym</span>
auth.backend                   = <span style="color: #ff0000;">&quot;htdigest&quot;</span>
auth.backend.htdigest.userfile = <span style="color: #ff0000;">&quot;/etc/lighttpd/lighttpd-htdigest.user&quot;</span>
&nbsp;
auth.require                 = <span style="color: #7a0874; font-weight: bold;">&#40;</span> <span style="color: #ff0000;">&quot;/&quot;</span> =<span style="color: #000000; font-weight: bold;">&gt;</span>
                                     <span style="color: #7a0874; font-weight: bold;">&#40;</span>
                                       <span style="color: #ff0000;">&quot;method&quot;</span>  =<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #ff0000;">&quot;digest&quot;</span>,
                                       <span style="color: #ff0000;">&quot;realm&quot;</span>   =<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #ff0000;">&quot;secure content&quot;</span>,
                                       <span style="color: #ff0000;">&quot;require&quot;</span> =<span style="color: #000000; font-weight: bold;">&gt;</span> <span style="color: #ff0000;">&quot;valid-user&quot;</span>
                                      <span style="color: #7a0874; font-weight: bold;">&#41;</span>
                                <span style="color: #7a0874; font-weight: bold;">&#41;</span></pre></div></div>

<p>Opcja <em>auth.require</em> zawiera tylko jeden element, którym jest root serwera httpd, czyli dostęp do dowolnego pliku na serwerze będzie chroniony hasłem. Warto tutaj wspomnieć, że hash hasła zostanie <em>posolony</em> wartością w <em>realm</em>, dzięki temu uzyskujemy prosty mechanizm kontroli dostępu (tj. gdybyśmy mieli dwa zasoby z różnymi wartościami w <em>realm</em>, każdego użytkownika który powinien posiadać dostęp do obu powinniśmy dodać osobno). Teraz wystarczy tylko dodać użytkownika:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">htdigest <span style="color: #660033;">-c</span> <span style="color: #000000; font-weight: bold;">/</span>etc<span style="color: #000000; font-weight: bold;">/</span>lighttpd<span style="color: #000000; font-weight: bold;">/</span>lighttpd-htdigest.user <span style="color: #ff0000;">'secure content'</span> user_name</pre></div></div>

<p>Po wydaniu tej komendy zostaniemy poproszeni o podanie oraz potwierdzenie hasła dla tego użytkownika.</p>
<p>Po skonfigurowaniu <em>mod_auth</em> przechodzimy do konfiguracji <em>mod_ssl</em>, w tym celu edytujemy <em>/etc/lighttpd/conf-enabled/10-ssl.conf</em>. Ja zdecydowałem się udostępniać usługę http tylko na porcie 443 z szyfrowaniem (czyli popularny https <img src='http://luksza.org/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> ), więc w konfiguracji <em>mod_ssl</em> wskazałem na którym dokładnie adresie IP oraz na jakim porcie ma nasłuchiwać daemon; plik konfiguracyjny wygląda mniej więcej tak:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">## lighttpd support for SSLv2 and SSLv3</span>
<span style="color: #666666; font-style: italic;">##</span>
<span style="color: #666666; font-style: italic;">## Documentation: /usr/share/doc/lighttpd-doc/ssl.txt</span>
<span style="color: #666666; font-style: italic;">##      http://www.lighttpd.net/documentation/ssl.html</span>
&nbsp;
<span style="color: #666666; font-style: italic;">#### SSL engine</span>
<span style="color: #007800;">$SERVER</span><span style="color: #7a0874; font-weight: bold;">&#91;</span><span style="color: #ff0000;">&quot;socket&quot;</span><span style="color: #7a0874; font-weight: bold;">&#93;</span> == <span style="color: #ff0000;">&quot;111.222.3.4:443&quot;</span> <span style="color: #7a0874; font-weight: bold;">&#123;</span>
ssl.engine                  = <span style="color: #ff0000;">&quot;enable&quot;</span>
ssl.pemfile                 = <span style="color: #ff0000;">&quot;/etc/lighttpd/server.pem&quot;</span>
<span style="color: #7a0874; font-weight: bold;">&#125;</span></pre></div></div>

<p>następnie generujemy certyfikat <em>self-signed</em> dla naszego serwera:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">openssl req <span style="color: #660033;">-new</span> <span style="color: #660033;">-x509</span> <span style="color: #660033;">-keyout</span> server.pem <span style="color: #660033;">-out</span> server.pem <span style="color: #660033;">-days</span> <span style="color: #000000;">365</span> <span style="color: #660033;">-nodes</span></pre></div></div>

<p>Który to kopujemy do <em>/etc/lighttpd/server.pem</em>.</p>
<p>Ostatnią częścią konfiguracji lighttpd będzie ogólna konfiguracja serwera, czyli edytujemy plik<br />
<em>/etc/lighttpd/lihttpd.conf.</em> W którym to odkomentowujemy tylko linie:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;">server.bind = <span style="color: #ff0000;">&quot;localhost&quot;</span></pre></div></div>

<p>Spowoduje to, że port 80 zostanie otwarty tylko na interfejsie <em>loopback</em>, co w konsekwencji prowadzi do tego, że wszystkie połączenia (z sieci) do portu 80 będą odrzucane (za to akceptowane będą połączenia do portu 443, zgodnie z konfiguracją w pliku <em>10-ssl.conf</em>).</p>
<p>Na razie to wszystko w kwestii konfiguracji lighttpd, wrócimy jeszcze do niej podczas konfiguracji cgit&#8217;a. W następnej części zajmiemy się konfiguracją gitosis.</p>
<p>PS. Tutaj jest <a href="http://luksza.org/2009/12/02/prywatne-repo-git%e2%80%99a-cz-2/" target="_self">część druga</a>.</p>
 <img src="http://luksza.org/wp-content/plugins/wordpress-feed-statistics/feed-statistics.php?view=1&post_id=417" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://luksza.org/2009/prywatne-repo-gita-cz-1/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	<creativeCommons:license>http://creativecommons.org/licenses/by-nc-sa/3.0/</creativeCommons:license>
	</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Minified using disk: basic
Page Caching using disk: basic
Database Caching 11/23 queries in 0.036 seconds using disk: basic

Served from: luksza.org @ 2012-05-22 23:22:37 -->
