<?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>harry.blog &#187; git</title>
	<atom:link href="http://blog.harrspy.com/tag/git/feed" rel="self" type="application/rss+xml" />
	<link>http://blog.harrspy.com</link>
	<description>留住往昔的美丽，去开创未来的光明。</description>
	<lastBuildDate>Wed, 01 Sep 2010 14:30:35 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>一个git管理的小应用 （希望有人来一起开发..）</title>
		<link>http://blog.harrspy.com/gitube-first-meet</link>
		<comments>http://blog.harrspy.com/gitube-first-meet#comments</comments>
		<pubDate>Fri, 16 Jul 2010 17:17:09 +0000</pubDate>
		<dc:creator>harry</dc:creator>
				<category><![CDATA[harry]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[gitube]]></category>

		<guid isPermaLink="false">http://blog.harrspy.com/?p=231</guid>
		<description><![CDATA[git是一个非常不错的版本控制软件，如果需要一个可以远程push代码的地方，开源软件可以选择像github这样的网站，如果是自己的私有代码，也可用利用一台比如linux的服务器，几乎不用什么配置，只需要支持ssh就能往上面push代码。 但是如果是一个小型团队，可能就要涉及到一些权限的控制，还有考虑版本库建立还有查看的易用性。 之前我用过gitosis，这是个不错的git管理工具，有基本的权限控制，不过所有的操作都是需要登录到服务器后使用命令行进行，对于一个人的东西当然没什么问题，但是如果这个服务器服务于多人，那么其他人想建立一个仓库的时候就必需联系管理员或自己登录上去操作，这样对命令行不熟悉的人不太方便，如果可以像github那样通过web界面来操作的话那就很方便了。 于是我就基于django框架写了一个小小的应用，可以通过web界面来建立git仓库，并且有一些很简陋的权限设置。 基本的使用流程是 登录（通过openid） 如果是第一次注册，为自己的帐号里添加ssh公钥（用过github应该都知道是什么意思吧） 建立一个项目（注意，我这个东西的项目并不是一个git仓库） 进入项目后可以在这个项目下面建立1个或多个仓库 复制显示出来的仓库地址然后就可以往里面push代码了。 设置项目成员（也就是与其他人共享了） 基本也就是这些功能，建立项目和仓库的时候，可以写一些描述信息，方便知道这个项目和仓库里放的是什么。 除了对git仓库的一些基本操作，这个东西还有个要做的就是管理linux用户目录下的 .ssh/authorized_keys ，因为用户提交上来的ssh公钥都是保存在这个文件里，所以运行这个应用必须使用指定的用户权限，之前说的apache下使用指定用户运行虚拟主机就是为了解决这个问题，不过我现在使用fastcgi+nginx来跑这个东西，所以只要用。sudo su 用户名 -c "./manage.py runfcgi ....." 就行了，方便许多。 这个东西我给他起名gitube，基于django框架开发的，也使用了一些其他的库，操作git仓库和在push和pull的时候做权限判断使用的还是gitosis的代码。 代码都放在github上了: http://github.com/harryxu/gitube 这玩意我有段时间没有更新了，不过和几个朋友一直在使用中，目前还算满足我们的需求。 在已实现的功能中还是有许多需要改进，比如整个目录结构需要调整，加入setuptools的安装功能，权限机制的改进，打算以后用django1.2的object-level permissions hook来试试看。 现在还没有详细的安装配置说明，有空写下，如果需要试用的话需要看下代码或者联系我。 如果你有兴趣参与一起开发的话，欢迎联系我阿，哈哈，希望可以做成一个比较完善的东西。 下面是一些截图：]]></description>
			<content:encoded><![CDATA[<p>git是一个非常不错的版本控制软件，如果需要一个可以远程push代码的地方，开源软件可以选择像github这样的网站，如果是自己的私有代码，也可用利用一台比如linux的服务器，几乎不用什么配置，只需要支持ssh就能往上面push代码。</p>
<p>但是如果是一个小型团队，可能就要涉及到一些权限的控制，还有考虑版本库建立还有查看的易用性。</p>
<p>之前我用过<a href="http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way" target="_blank">gitosis</a>，这是个不错的git管理工具，有基本的权限控制，不过所有的操作都是需要登录到服务器后使用命令行进行，对于一个人的东西当然没什么问题，但是如果这个服务器服务于多人，那么其他人想建立一个仓库的时候就必需联系管理员或自己登录上去操作，这样对命令行不熟悉的人不太方便，如果可以像github那样通过web界面来操作的话那就很方便了。</p>
<p>于是我就基于django框架写了一个小小的应用，可以通过web界面来建立git仓库，并且有一些很简陋的权限设置。<br />
<span id="more-231"></span></p>
<p>基本的使用流程是</p>
<ul>
<li>登录（通过openid）</li>
<li>如果是第一次注册，为自己的帐号里添加ssh公钥（用过github应该都知道是什么意思吧）</li>
<li>建立一个项目（注意，我这个东西的项目并不是一个git仓库）</li>
<li>进入项目后可以在这个项目下面建立1个或多个仓库</li>
<li>复制显示出来的仓库地址然后就可以往里面push代码了。</li>
<li>设置项目成员（也就是与其他人共享了）</li>
</ul>
<p>基本也就是这些功能，建立项目和仓库的时候，可以写一些描述信息，方便知道这个项目和仓库里放的是什么。</p>
<p>除了对git仓库的一些基本操作，这个东西还有个要做的就是管理linux用户目录下的 .ssh/authorized_keys ，因为用户提交上来的ssh公钥都是保存在这个文件里，所以运行这个应用必须使用指定的用户权限，之前说的<a href="http://blog.harrspy.com/apache2-mpm-itk" target="_blank">apache下使用指定用户运行虚拟主机</a>就是为了解决这个问题，不过我现在使用fastcgi+nginx来跑这个东西，所以只要用。<code>sudo su 用户名 -c "./manage.py runfcgi ....."</code> 就行了，方便许多。</p>
<p>这个东西我给他起名<a href="http://github.com/harryxu/gitube" target="_blank">gitube</a>，基于django框架开发的，也使用了<a href="http://github.com/harryxu/gitube/blob/master/README" target="_blank">一些其他的库</a>，操作git仓库和在push和pull的时候做权限判断使用的还是gitosis的代码。</p>
<p>代码都放在github上了: <a href="http://github.com/harryxu/gitube" target="_blank">http://github.com/harryxu/gitube</a><br />
这玩意我有段时间没有更新了，不过和几个朋友一直在使用中，目前还算满足我们的需求。</p>
<p>在已实现的功能中还是有许多需要改进，比如整个目录结构需要调整，加入setuptools的安装功能，权限机制的改进，打算以后用django1.2的<a href="http://docs.djangoproject.com/en/dev/releases/1.2/#object-level-permissions">object-level permissions</a> hook来试试看。</p>
<p>现在还没有详细的安装配置说明，有空写下，如果需要试用的话需要看下代码或者联系我。</p>
<p>如果你有兴趣参与一起开发的话，<a href="http://blog.harrspy.com/about" target="_blank">欢迎联系我阿</a>，哈哈，希望可以做成一个比较完善的东西。</p>
<p>下面是一些截图：</p>
<p><a title="首页，显示自己的所有项目" rel="lightbox[gitube]" href="http://pic.yupoo.com/harryxu/087299a4076d/qqhk9gsl.png"><img class="alignnone" src="http://pic.yupoo.com/harryxu/087299a4076d/medium.png" alt="" width="500" height="131" /></a></p>
<p><a title="仓库列表" rel="lightbox[gitube]" href="http://pic.yupoo.com/harryxu/105559a4076d/g62nhqiu.png"><img class="alignnone" src="http://pic.yupoo.com/harryxu/105559a4076d/medium.png" alt="" width="500" height="346" /></a></p>
<p><a title="项目成员管理" rel="lightbox[gitube]" href="http://pic.yupoo.com/harryxu/013009a4076f/uuc3runp.png"><img class="alignnone" src="http://pic.yupoo.com/harryxu/013009a4076f/medium.png" alt="" width="500" height="361" /></a></p>
<p><a title="ssh公钥管理" rel="lightbox[gitube]" href="http://pic.yupoo.com/harryxu/619269a40770/zjemqico.png"><img class="alignnone" src="http://pic.yupoo.com/harryxu/619269a40770/medium.png" alt="" width="500" height="239" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.harrspy.com/gitube-first-meet/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>利用GAE来发送git push的通知</title>
		<link>http://blog.harrspy.com/send-git-push-im-by-gae</link>
		<comments>http://blog.harrspy.com/send-git-push-im-by-gae#comments</comments>
		<pubDate>Wed, 23 Jun 2010 15:38:04 +0000</pubDate>
		<dc:creator>harry</dc:creator>
				<category><![CDATA[harry]]></category>
		<category><![CDATA[gae]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[Python]]></category>

		<guid isPermaLink="false">http://blog.harrspy.com/?p=226</guid>
		<description><![CDATA[如果想要在git push后自动通知团队中的其他成员，可以利用git的hook脚本，git源代码里 contrib/hooks/post-receive-email 就可以直接用来发送邮件通知。 如果觉得邮件还不够即时，可以试试利用gae发送通知到gtalk上，google提供了很方便的api，可以通过部署在gae上的程序发送xmpp协议的即时消息。 我无聊写了个这样的小程序，放在github上了，用的是Python版的GAE SDK。 使用方法: 下载后，先把gae目录中的程序部署到gae上，然后可以访问 domain/sendim/invite 向所需通知的用户发一个邀请，然后可以访问 domain/sendim/demo 测试下消息是否能够正常发送。 接着将scripts目录中的post-receive-im链接到git服务器里指定仓库的hooks目录中，名为post-receive，post-receive-im这个是我直接在post-receive-email里改的 &#8211; - 最后修改git服务器仓库目录里的config文件加入下面的内容 [hooks] # 要通知到的用户的gmail，如果有多个用空格分开 jids = xxx1@gmail.com xxx2@gmail.com # 就是刚才部署的那个gae的地址 imurl = http://xxxx.appspot.com/sendim 这样弄完，push后应该就会收到消息了， svn hg等应该都可以用类似的方法实现一个通知，利用gae真的是可以玩出很多花样阿，哈哈。 目前只弄了一点点，如果谁有兴趣，欢迎加入一起改进阿 。]]></description>
			<content:encoded><![CDATA[<p>如果想要在git push后自动通知团队中的其他成员，可以利用git的hook脚本，git源代码里 contrib/hooks/post-receive-email 就可以直接用来发送邮件通知。</p>
<p>如果觉得邮件还不够即时，可以试试利用gae发送通知到gtalk上，google提供了很方便的<a href="http://code.google.com/appengine/docs/python/xmpp/" target="_blank">api</a>，可以通过部署在gae上的程序发送xmpp协议的即时消息。</p>
<p>我无聊写了个这样的小程序，放在<a href="http://github.com/harryxu/git-sendim-gae" target="_blank">github</a>上了，用的是Python版的GAE SDK。</p>
<p><em>使用方法:</em></p>
<p>下载后，先把gae目录中的程序部署到gae上，然后可以访问 domain/sendim/invite 向所需通知的用户发一个邀请，然后可以访问 domain/sendim/demo 测试下消息是否能够正常发送。</p>
<p>接着将scripts目录中的post-receive-im链接到git服务器里指定仓库的hooks目录中，名为post-receive，post-receive-im这个是我直接在post-receive-email里改的 &#8211; -</p>
<p>最后修改git服务器仓库目录里的config文件加入下面的内容</p>
<pre>
[hooks]
    # 要通知到的用户的gmail，如果有多个用空格分开
    jids = xxx1@gmail.com xxx2@gmail.com

    # 就是刚才部署的那个gae的地址
    imurl = http://xxxx.appspot.com/sendim
</pre>
<p>这样弄完，push后应该就会收到消息了， svn hg等应该都可以用类似的方法实现一个通知，利用gae真的是可以玩出很多花样阿，哈哈。</p>
<p>目前只弄了一点点，如果谁有兴趣，欢迎加入一起改进阿 <img src='http://blog.harrspy.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> 。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.harrspy.com/send-git-push-im-by-gae/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>记录下我在win下配置git的过程</title>
		<link>http://blog.harrspy.com/%e8%ae%b0%e5%bd%95%e4%b8%8b%e6%88%91%e5%9c%a8win%e4%b8%8b%e9%85%8d%e7%bd%aegit%e7%9a%84%e8%bf%87%e7%a8%8b</link>
		<comments>http://blog.harrspy.com/%e8%ae%b0%e5%bd%95%e4%b8%8b%e6%88%91%e5%9c%a8win%e4%b8%8b%e9%85%8d%e7%bd%aegit%e7%9a%84%e8%bf%87%e7%a8%8b#comments</comments>
		<pubDate>Sun, 10 Jan 2010 07:38:16 +0000</pubDate>
		<dc:creator>harry</dc:creator>
				<category><![CDATA[harry]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[msysgit]]></category>
		<category><![CDATA[tortoisegit]]></category>

		<guid isPermaLink="false">http://blog.harrspy.com/?p=212</guid>
		<description><![CDATA[首先下载安装msysgit，安装过程一般使用默认选项即可。不过如果团队中可能有使用Linux unix等非windows系统的话，最好选择 Use unix style line endings msysgit装完就能用命令行的方式玩git了，如果需要一个类似乌龟svn的GUI工具，可以装下 tortoisegit。 现在基本就能在本地玩git了。 如果是在一个团队中，要参与合作开发，一般是需要生成ssh key，然后把公钥发给git服务器管理员，让管理员给你设置权限。这样才能push或pull。 打开 msysgit 的cygwin窗口 ，可以双击桌面上的图标，也可以在任何文件夹上右键 选 Git Bash Here 输入 ssh-keygen -t rsa -C "xxx@xxx.com" 并回车（-C 后面的引号里就输入邮箱地址好了&#8230;），如果你不清楚回车后提示你输入的是啥，就一直回车直到完成好了。 然后到 系统盘你的用户目录里的.ssh目录下，比如 C:\Documents and Settings\Administrator\.ssh ，把里面的 id_rsa.pub 文件发给管理员，如果使用类似github的git服务提供网站，就把那个文件里的内容添加到账户的SSH Public Keys里。 最后在乌龟git里设置2样东西 首先进入Network选项，把ssh client的程序设置为msysgit安装目录里的bin/ssh.exe ，如下图 然后进入Config，输入你的名字和Email，再勾上下面的Save as globa，就行了，以后你做了提交，在git log的Author就是你这里设置的名字和Email。 完喽，这样在Win下就基本配置完了一个git客户端。]]></description>
			<content:encoded><![CDATA[<p>首先下载安装<a href="http://code.google.com/p/msysgit/" target="_blank">msysgit</a>，安装过程一般使用默认选项即可。不过如果团队中可能有使用Linux unix等非windows系统的话，最好选择 Use unix style line endings<br />
<img class="alignnone" src="http://pic.yupoo.com/harryxu/5665395c7501/kv9ybyor.jpg" alt="" width="503" height="385" /></p>
<p>msysgit装完就能用命令行的方式玩git了，如果需要一个类似乌龟svn的GUI工具，可以装下 <a href="http://code.google.com/p/tortoisegit/">tortoisegit</a>。</p>
<p>现在基本就能在本地玩git了。</p>
<p>如果是在一个团队中，要参与合作开发，一般是需要生成ssh key，然后把公钥发给git服务器管理员，让管理员给你设置权限。这样才能push或pull。</p>
<p>打开 msysgit 的cygwin窗口 ，可以双击桌面上的图标，也可以在任何文件夹上右键 选 Git Bash Here<br />
输入 <code>ssh-keygen -t rsa -C "xxx@xxx.com"</code> 并回车（-C 后面的引号里就输入邮箱地址好了&#8230;），如果你不清楚回车后提示你输入的是啥，就一直回车直到完成好了。</p>
<p>然后到 系统盘你的用户目录里的.ssh目录下，比如 C:\Documents and Settings\Administrator\.ssh ，把里面的 id_rsa.pub 文件发给管理员，如果使用类似github的git服务提供网站，就把那个文件里的内容添加到账户的<a href="https://github.com/account#ssh_bucket" target="_blank">SSH Public Keys</a>里。</p>
<p>最后在乌龟git里设置2样东西<br />
<img src="http://pic.yupoo.com/harryxu/8573695c74f8/diio2k7b.png" alt="" width="344" height="274" /></p>
<p>首先进入Network选项，把ssh client的程序设置为msysgit安装目录里的bin/ssh.exe ，如下图<br />
<a href="http://pic.yupoo.com/harryxu/9471195c74fb/kfygj5ox.jpg"><img src="http://photo.yupoo.com/harryxu/9471195c74fb/medium.jpg" alt="" width="500" height="307" /></a></p>
<p>然后进入Config，输入你的名字和Email，再勾上下面的Save as globa，就行了，以后你做了提交，在git log的Author就是你这里设置的名字和Email。<br />
<a href="http://pic.yupoo.com/harryxu/4332195c74fe/72xu1f6s.jpg"><img src="http://photo.yupoo.com/harryxu/4332195c74fe/medium.jpg" alt="" width="500" height="307" /></a></p>
<p>完喽，这样在Win下就基本配置完了一个git客户端。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.harrspy.com/%e8%ae%b0%e5%bd%95%e4%b8%8b%e6%88%91%e5%9c%a8win%e4%b8%8b%e9%85%8d%e7%bd%aegit%e7%9a%84%e8%bf%87%e7%a8%8b/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
