<?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:xhtml="http://www.w3.org/1999/xhtml"
>

<channel>
	<title>ECWorks Blog &#187; github</title>
	<atom:link href="http://blog.ecworks.jp/archives/tag/github/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.ecworks.jp</link>
	<description>CakePHPを中心としたサイト開発情報をメインに公開。新しもの好きなので時々製品レポートなんかも。</description>
	<lastBuildDate>Fri, 09 Dec 2011 07:24:42 +0000</lastBuildDate>
	<language>ja</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.ecworks.jp/archives/tag/github/feed" />
	<div id='fb-root'></div>
					<script type='text/javascript'>
						window.fbAsyncInit = function()
						{
							FB.init({appId: 122492164489250, status: true, cookie: true, xfbml: true});
						};
						(function()
						{
							var e = document.createElement('script'); e.async = true;
							e.src = document.location.protocol + '//connect.facebook.net/ja_JP/all.js';
							document.getElementById('fb-root').appendChild(e);
						}());
					</script>	
						<item>
		<title>【サーバ関連】Ktai Libraryのリポジトリ周りと公開方法を晒してみる</title>
		<link>http://blog.ecworks.jp/archives/1187</link>
		<comments>http://blog.ecworks.jp/archives/1187#comments</comments>
		<pubDate>Fri, 30 Apr 2010 07:09:09 +0000</pubDate>
		<dc:creator>MASA-P</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[サーバ関連]]></category>
		<category><![CDATA[携帯ライブラリ]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[VMWare]]></category>

		<guid isPermaLink="false">http://blog.ecworks.jp/?p=1187</guid>
		<description><![CDATA[<!--:ja-->当方はgitの扱いに関してはまだまだど素人でして、至らない部分はあるのですが、それでも「コードを公開する」という点で興味をお持ちの方が少なからずいらっしゃると思いますし、他のご意見も聞きたかったりするので、今回「Ktai Library」周りで整備をした、ソースコードの公開方法について晒してみようと思います。<!--:-->]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fblog.ecworks.jp%252Farchives%252F1187%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22%3C%21--%3Aja--%3E%E3%80%90%E3%82%B5%E3%83%BC%E3%83%90%E9%96%A2%E9%80%A3%E3%80%91Ktai%20Library%E3%81%AE%E3%83%AA%E3%83%9D%E3%82%B8%E3%83%88%E3%83%AA%E5%91%A8%E3%82%8A%E3%81%A8%E5%85%AC%E9%96%8B%E6%96%B9%E6%B3%95%E3%82%92%E6%99%92%E3%81%97%E3%81%A6%E3%81%BF%E3%82%8B%3C%21--%3A--%3E%22%20%7D);"></div>
<p><!--:ja--><img src="http://blog.ecworks.jp/wp-content/uploads/2009/03/icon_ktai.png" title="icon_ktai" width="180" height="180" class="alignleft size-full wp-image-433" />当方はgitの扱いに関してはまだまだど素人でして、至らない部分はあるのですが、それでも「コードを公開する」という点で興味をお持ちの方が少なからずいらっしゃると思いますし、他のご意見も聞きたかったりするので、今回「Ktai Library」周りで整備をした、ソースコードの公開方法について晒してみようと思います。</p>
<p>「Ktai Library」は少々特殊かもしれませんが「主にCakePHP内で利用されているライブラリ」ではありますが一応<strong>PHP全般で利用が可能な携帯サイト向けライブラリ</strong>です。また、それぞれのCakePHP環境に「上書きコピー」で適用していただく方が利便性が高いと思い、CakePHPに実装した形ではなく、必要なファイルのみをアーカイブにまとめて公開していました。<br />
ところが、当方では基本的にCakePHP内に実装した形で開発を行い、そこから必要なものを抜き出して公開イメージを作っていました。この作業が非常に面倒で、そのうちバージョン管理ミス等も起きるだろうと考え、なんとかしたい要因の一つとして前々から方法を模索していました。</p>
<p>それとは別に、Ktai Libraryの開発そのものもオープン化したいと考えていましたので、「ktai-dev」というプロジェクトも公開し、その複製物からKtai Libraryを生成するような仕組みが必要になってきました。共にgithabにて公開するつもりでしたので、つまりgitでバージョン管理されたものについて、いくつかの操作を行って連携していく必要があります。</p>
<p>そんなわけで、どうしようかとずっと悩んでいた開発環境とリポジトリ周りの構築についてようやく実用的なものが出来たので、「ktai-dev」のリリースと共に運用を始めた次第です。<br />
まずは簡単に図にしたものをご覧ください。</p>
<p><a href="http://blog.ecworks.jp/wp-content/uploads/2010/04/c6e04ec78aaac66a73617b1539b7ac6a.png"><img src="http://blog.ecworks.jp/wp-content/uploads/2010/04/c6e04ec78aaac66a73617b1539b7ac6a-300x209.png" title="Ktai Libraryのリポジトリ群" width="300" height="209" class="aligncenter size-medium wp-image-1188" /></a></p>
<p>ご覧の通り、gitリポジトリがた～くさんあるのですが、分散管理できるgitならではという感じかもしれません(笑)。</p>
<p>まず一番左はローカル環境です。自宅のデスクトップと持ち運びようのノートPCに、それぞれVMWareServerを稼働させ、VMでFedora11を動かしています。それぞれでgit によるktai-devの作業ディレクトリがあり、その右側にある非公開サーバ内にあるktai-devリポジトリに対してのみコミットしています。<br />
ここについては、最初は非公開サーバにリポジトリを置かずにUSBメモリで作業ディレクトリを共有していたこともあるのですが、何か事故があってはいけないと思いやめてそれぞれでcloneするようにしました。また他の作業者が増えた場合にも対応に困る場合もあるので。<br />
欠点もあり、「作業途中で続きをデスクトップとノートで行き来できない」点でUSBメモリ方式と比べて使い勝手が悪い点があります。当方は「電車開発」を常時行っていて、作業が未完のまま帰宅するのが当たり前なので。途中のままコミットするのが気持ち悪いので、仕方がないのでノートで作業を完結するようにしています(笑)。</p>
<p>次に非公開サーバなのですが、これは外にある専用サーバです。sshにてやりとりしています。例えば</p>
<p style="text-align: center;"><strong>git clone ssh://user@mydomain.com/home/user/git/ktai-dev</strong></p>
<p>のように取得しておけば、次からここに対して更新を行えます。<br />
git操作時(push/pull等)では、sshのパスワードを聞かれます。ここが面倒ですが、共有リポジトリを作るにはとても面倒な設定作業が必要になるのでとりあえずそのままです。</p>
<p>ここで注意するのは、サーバ内でリポジトリを作成する際、git initで「&#8211;bare」を付けないことです。何故かというと、ここに集められたコードを「KtaiLibrary」リポジトリに反映させる必要があるからです。このために、仮の作業ディレクトリを展開して実ファイルを取り出すことを行っています。<br />
そして、必要なファイルを抜き出してKtaiLibraryリポジトリに反映させるための「デプロイツール」があります。これは単純なrmやらcpが列挙されているコマンドスクリプトです。これを叩いてファイルをKtaiLibrary作業ディレクトリに反映させます。その内容でgit commitを行い、その右のgithubリポジトリにpushします。また、ktai-devはそれで別途pushします。</p>
<p>ここの部分についてはもう一つポイントがあります。それは「ktai-devの作業ディレクトリを定期的に最新のものにする」必要があるのですが、自分のmasterに対してコミットが進んできたものに対して、自分に対して普通にgit checkout masterをすると、作業ファイル内に更新されたファイルがあると見なされてcheckoutがされないのです。ここで相当はまりました。結論から言いますと</p>
<p style="text-align: center;"><strong>git checkout -f master</strong></p>
<p>で、作業ディレクトリの内容を問わずに最新のファイルが展開されます。ググってもなかなかこの情報が出てきませんでしたので、気づくのが遅すぎました(^^;。</p>
<p>そしてgithubですが…github内は特に何も行ってなくて、純粋な公開窓口です。多くを語ることもないでしょう。</p>
<p>リポジトリ公開はここまでですが、それとは別にBTSをRedmineにて行っていて、その中でgitリポジトリ(のリスト)を公開しています。これをやるためにはRedmine内にcloneをfetchする必要があり、さらにリポジトリを作っています。そして、cronでリポジトリを定期的にfetchしています(ちなみに、現在fetchを行っているのはKtaiLibraryリポジトリの方であり、図とはちょっと違います。kta-devに対して行うように修正予定です)。</p>
<p>現在非公開サーバ側からgithubにpushする行程は全て手動で行っています。ktai-devのpushについては当面ため込んでから行いたいというのもあるので非公開サーバ側でコマンドを叩く方式でいいのですが、KtaiLibraryに対しては、前述のktai-devに対してのcheckoutや、githubへのpushもデプロイツールに入れてしまおうと考えています。<br />
また、Redmine側のリポジトリもある意味無駄なので、なんとか出来ないかなと思っています。github側にフックできる仕組みがあるみたいなのでそれを活用するか、そもそもgithubを見ずに非公開サーバ側で解決するべきかなとも考えています。</p>
<p>こんな感じで多少他のプロジェクトと比べて複雑かもしれませんが、このように別のリポジトリからの複製物に対してgit管理が出来るとか、間接的にgithub公開できるとか、多少なりともノウハウがお見せできたかなと思います。<br />
何か他におもしろいアイデアがあるようでしたら是非教えてください！</p>
<p><strong>追記</strong>(2010.05.01)<br />
Twitterでいくつかアイデアをいただきました！<br />
ありがとうございます。</p>
<p><em>●非公開サーバ側の.ssh/authorized_keysに公開鍵を登録すればパスワードは聞かれなくなる</em>(<a href="https://twitter.com/nojimage" target="_blank">@nojimage</a>さん)<br />
これは常識的なものでしたね。当方の技術力のなさが露呈しました(^^;;;</p>
<p><em>●「git remote add github (githubのURL)」とかすれば、サーバのコンソールからでなくてもgithubにpushできる(<a href="https://twitter.com/kaz_29" target="_blank">@kaz_29</a>さん)</em><br />
確かにその通りです。早速設定しました！<!--:--></p>

<div class='wpfblike' style='height: 40px;'><fb:like href='http://blog.ecworks.jp/archives/1187' layout='default' show_faces='true' width='400' action='like' colorscheme='light' send='false' /></div>]]></content:encoded>
			<wfw:commentRss>http://blog.ecworks.jp/archives/1187/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.ecworks.jp/archives/1187" />
	</item>
		<item>
		<title>【プログラミング全般】githubでfork刺しっぱなしのリポジトリを更新する方法</title>
		<link>http://blog.ecworks.jp/archives/1145</link>
		<comments>http://blog.ecworks.jp/archives/1145#comments</comments>
		<pubDate>Sun, 14 Mar 2010 09:38:53 +0000</pubDate>
		<dc:creator>MASA-P</dc:creator>
				<category><![CDATA[プログラミング全般]]></category>
		<category><![CDATA[fork]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[リポジトリ]]></category>

		<guid isPermaLink="false">http://blog.ecworks.jp/?p=1145</guid>
		<description><![CDATA[<!--:ja-->時々、興味本位で他の方のプロジェクトにforkを刺したりするのですが、そのまま放置されていて知らない間に本家の方でバージョンが上がっていたりして、自分のリポジトリが古いままって事があります。gitの事を全く知らなかった頃、やり方が分からなくて結局removeしてしまったりしたのですが、やっと更新方法が分かったのでmemo書きです。<!--:-->]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fblog.ecworks.jp%252Farchives%252F1145%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22%3C%21--%3Aja--%3E%E3%80%90%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E5%85%A8%E8%88%AC%E3%80%91github%E3%81%A7fork%E5%88%BA%E3%81%97%E3%81%A3%E3%81%B1%E3%81%AA%E3%81%97%E3%81%AE%E3%83%AA%E3%83%9D%E3%82%B8%E3%83%88%E3%83%AA%E3%82%92%E6%9B%B4%E6%96%B0%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95%3C%21--%3A--%3E%22%20%7D);"></div>
<p><!--:ja--><img src="http://blog.ecworks.jp/wp-content/uploads/2009/03/prog-logo.png" title="prog-logo" width="180" height="180" class="size-full wp-image-402 alignleft" />時々、興味本位で他の方のプロジェクトにforkを刺したりするのですが、そのまま放置されていて知らない間に本家の方でバージョンが上がっていたりして、自分のリポジトリが古いままって事があります。gitの事を全く知らなかった頃、やり方が分からなくて結局removeしてしまったりしたのですが、やっと更新方法が分かったのでmemo書きです。</p>
<p>仮にhogeさんのfugaプロジェクトをgithub内でforkしたとしましょう。<br />
そして、hogeさんがpushして、本家の方は最新版、ところが自分のfork刺したやつは古いまま、という状況です。<br />
この場合、次のようにすることで最新版にすることが出来ます。</p>
<p style="padding-left: 30px;">git pull git@github.com:hoge/fuga.git master<br />
git push</p>
<p>まあ、よくよく考えてみればごく当たり前なのかもしれませんが(^^;;;。<br />
というか、刺しっぱなしにしておかないで、改良してpull requestするようにしましょう！<!--:--></p>

<div class='wpfblike' style='height: 40px;'><fb:like href='http://blog.ecworks.jp/archives/1145' layout='default' show_faces='true' width='400' action='like' colorscheme='light' send='false' /></div>]]></content:encoded>
			<wfw:commentRss>http://blog.ecworks.jp/archives/1145/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.ecworks.jp/archives/1145" />
	</item>
		<item>
		<title>【KtaiLibrary】githubにて開発ソースコードを公開！</title>
		<link>http://blog.ecworks.jp/archives/870</link>
		<comments>http://blog.ecworks.jp/archives/870#comments</comments>
		<pubDate>Tue, 01 Sep 2009 15:12:14 +0000</pubDate>
		<dc:creator>MASA-P</dc:creator>
				<category><![CDATA[CakePHP]]></category>
		<category><![CDATA[携帯ライブラリ]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[github]]></category>

		<guid isPermaLink="false">http://blog.ecworks.jp/?p=870</guid>
		<description><![CDATA[前々からやりたかった、開発コード公開を試しにしてみました。
githubにて、現状の最新ソースをダウンロードできます。]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fblog.ecworks.jp%252Farchives%252F870%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22%E3%80%90KtaiLibrary%E3%80%91github%E3%81%AB%E3%81%A6%E9%96%8B%E7%99%BA%E3%82%BD%E3%83%BC%E3%82%B9%E3%82%B3%E3%83%BC%E3%83%89%E3%82%92%E5%85%AC%E9%96%8B%EF%BC%81%22%20%7D);"></div>
<p><a href="http://blog.ecworks.jp/wp-content/uploads/2009/03/icon_ktai.png"><img class="alignleft size-thumbnail wp-image-433" style="margin: 5px;" title="icon_ktai" src="http://blog.ecworks.jp/wp-content/uploads/2009/03/icon_ktai-150x150.png" alt="icon_ktai" width="150" height="150" /></a>前々からやりたかった、開発コード公開を試しにしてみました。<br />
githubにて、現状の最新ソースをダウンロードできます。</p>
<p><strong>▼github : MASA-P / KtaiLibrary</strong><br />
<a href="http://github.com/MASA-P/KtaiLibrary/tree/master" target="_blank">http://github.com/MASA-P/KtaiLibrary/tree/master</a></p>
<p>自分も実はgitを使うのが初めてでして、きっかけとしてはgit習得目的があるんですけど(笑)。<br />
ただ、今後のKtaiLibraryの方向性として、完全オープンなプロジェクトとしてやっていきたいと思っていますので、まーその先取りも兼ねています。<br />
もし修正していただける奇特な方がいらっしゃいましたら、是非フォークを刺していただいて、pull requestしていただけますと幸いです(でも反映させる方法がまだわかりません。勉強しておきます&#8230;)。</p>

<div class='wpfblike' style='height: 40px;'><fb:like href='http://blog.ecworks.jp/archives/870' layout='default' show_faces='true' width='400' action='like' colorscheme='light' send='false' /></div>]]></content:encoded>
			<wfw:commentRss>http://blog.ecworks.jp/archives/870/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
	<xhtml:link rel="alternate" media="handheld" type="text/html" href="http://blog.ecworks.jp/archives/870" />
	</item>
	</channel>
</rss>

