<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
     xmlns:content="http://purl.org/rss/1.0/modules/content/"
     xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
     xmlns:atom="http://www.w3.org/2005/Atom"
     xmlns:dc="http://purl.org/dc/elements/1.1/"
     xmlns:wfw="http://wellformedweb.org/CommentAPI/"
     >
  <channel>
    <title>Jaemok</title>
    <link>http://jmjeong.com</link>
    <description>jmjeong, Jaemok Jeong</description>
    <pubDate>Wed, 09 Jun 2010 02:16:35 GMT</pubDate>
    <generator>Blogofile</generator>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Ubuntu(Debian)에 Gitosis Install</title>
      <link>http://jmjeong.com/blog/gitosisinstallonubuntu</link>
      <pubDate>Thu, 03 Sep 2009 15:37:00 KST</pubDate>
      <category><![CDATA[git]]></category>
      <category><![CDATA[linux]]></category>
      <guid isPermaLink="true">http://jmjeong.com/blog/gitosisinstallonubuntu</guid>
      <description><p>
Install package가 gitosis 계정을 자동으로 만들어준다. 긴 이름 대신에 짧은 이름이 낫기 때문에 
gitosis 계정 대신 git 로 변경한다. git 계정은 passwd는 필요하지 않지만, 유효한 shell을 가져야만
로긴이 된다. 
</p><p>
gitosis를 관리한 <i>local host</i> 에서 ssh-keygen을 이용하여 public SSH를 key를 등록한다. 
</p><i>Read more...</i></description>
      <content:encoded><![CDATA[
<div id="outline-container-1" class="outline-2">

<div class="outline-text-2" id="text-1">
</div>
<div id="outline-container-1.1" class="outline-3">
<h3 id="sec-1.1">gitosis package  install </h3>
<div class="outline-text-3" id="text-1.1">
<pre class="example">
sudo apt-get install gitosis
</pre>
<p>
Install package가 gitosis 계정을 자동으로 만들어준다. 긴 이름 대신에 짧은 이름이 낫기 때문에 
gitosis 계정 대신 git 로 변경한다. git 계정은 passwd는 필요하지 않지만, 유효한 shell을 가져야만
로긴이 된다. 
</p>
<pre class="example">
sudo vi /etc/passwd/ /etc/group 
pwconv &amp;&amp; grpconv
</pre>
<p>
gitosis를 관리한 <i>local host</i> 에서 ssh-keygen을 이용하여 public SSH를 key를 등록한다. 
</p>
<pre class="example">
ssh-keygen -t rsa
</pre>
<p>
$HOME/.ssh/id_rsa.pub 파일을 gitosis가 <i>운영될 서버</i> 로 copy한다.
</p>
<p>
public SSH key를 authorized key로 등록한다. 
</p>
<pre class="example">
jmjeong@jmhost:/srv/gitosis$ sudo -H -u git gitosis-init &lt; /tmp/id_rsa.pub 
Initialized empty Git repository in /srv/gitosis/repositories/gitosis-admin.git/
Reinitialized existing Git repository in /srv/gitosis/repositories/gitosis-admin.git/
</pre>
<p>
<i>local host</i> 에서 gitosis가 운영 중인 admin 파일을 받아온다.
</p>
<pre class="src src-sh">jmlocal:~ jmjeong$ git clone git@YOUR_SERVER_HOSTNAME:gitosis-admin.git 
Initialized empty Git repository<span style="color: #7f007f;"> in</span> /Users/jmjeong/gitosis-admin.git/.git/
remote: Counting objects: 5, done.
Receiving objects: 100% (5/5), done./4)Receiving objects:  20% (1/5)   
Resolving deltas: 100% (1/1), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 5 (delta 1), reused 5 (delta 1)
</pre>
</div>
</div>
<div id="outline-container-1.2" class="outline-3">
<h3 id="sec-1.2">새로운 repository를 만들기 </h3>
<div class="outline-text-3" id="text-1.2">
<p>
<i>gitosis.conf</i> 를 열어 보면 아래와 같은 default 값이 설정되어 있다. 
</p>
<pre class="example">
[gitosis]

[group gitosis-admin]
writable = gitosis-admin
members = jmjeong@jaemok-jeongyi-macbook-pro.local 
</pre>
<p>
<i>gitosis.conf</i> 에 새로운 group을 생성한다.
</p>
<p>
private group 이름은 다른 이름이나 상관없고, 이 그룹에 속해 있는 사람은 <i>journal</i> 이라는 repository에 대해
write 권한을 가진다.
</p>
<pre class="example">
[group private]
members = jmjeong@jaemok-jeongyi-macbook-pro.local
writable = journal

[repo journal]
description = Jaemok's journal
owner = jmjeong@jaemok-jeongyi-macbook-pro.local
</pre>
<p>
<i>john</i> 이라는 사람이 journal이라는 repository에 readonly access 권한을 주고 싶은 경우에는 아래와 같이
설정이 가능하다.
</p>
<pre class="example">
[group private-ro]
members = john
readonly = journal
</pre>
<p>
설정을 마친 후에는 commit &amp; push 한다. 
</p>
<pre class="example">
git commit -am "Create journal repository &amp; grant jmjeong to write journal"
git push 
</pre>
</div>
</div>
</div>]]></content:encoded>
    </item>
    <item>
      <title>Git 배포를 위한 압축파일 만들기</title>
      <link>http://jmjeong.com/blog/gitdist</link>
      <pubDate>Fri, 06 Nov 2009 10:12:00 KST</pubDate>
      <category><![CDATA[git]]></category>
      <guid isPermaLink="true">http://jmjeong.com/blog/gitdist</guid>
      <description><p>
<code>git-archive</code>명령은 프로젝트 내의 어떤 버젼에서도 tar또는 zip 압축 파일을 만들 수 있다. 
예를들어, 
</p><p>
위 명령은 HEAD 버젼에 해당하는 tar archive 파일을 모으는데, 모든 파일의 앞에다가 <code>emacs/</code>가 추가
된다. 
</p><i>Read more...</i></description>
      <content:encoded><![CDATA[
<div id="outline-container-1" class="outline-2">

<div class="outline-text-2" id="text-1">
<p>
<code>git-archive</code>명령은 프로젝트 내의 어떤 버젼에서도 tar또는 zip 압축 파일을 만들 수 있다. 
예를들어, 
</p>
<pre class="src src-text">git archive --format=tar --prefix=emacs/ HEAD | gzip &gt; jmjeong-emacs.tar.gz
</pre>
<p>
위 명령은 HEAD 버젼에 해당하는 tar archive 파일을 모으는데, 모든 파일의 앞에다가 <code>emacs/</code>가 추가
된다. 
</p></div>
</div>]]></content:encoded>
    </item>
    <item>
      <title>Git Tips</title>
      <link>http://jmjeong.com/blog/gittips</link>
      <pubDate>Tue, 08 Sep 2009 15:42:00 KST</pubDate>
      <category><![CDATA[git]]></category>
      <category><![CDATA[linux]]></category>
      <guid isPermaLink="true">http://jmjeong.com/blog/gittips</guid>
      <description><p>
현재 Working tree에서 untracked file을 지우는 명령어
</p><p>
git push 할때 default 지정 
</p><i>Read more...</i></description>
      <content:encoded><![CDATA[
<div id="outline-container-1" class="outline-2">

<div class="outline-text-2" id="text-1">
</div>
<div id="outline-container-1.1" class="outline-3">
<h3 id="sec-1.1">git clean </h3>
<div class="outline-text-3" id="text-1.1">
<p>
현재 Working tree에서 untracked file을 지우는 명령어
</p>
</div>
</div>
<div id="outline-container-1.2" class="outline-3">
<h3 id="sec-1.2">git config branch.&lt;name&gt;.remote &lt;remote&gt; </h3>
<div class="outline-text-3" id="text-1.2">
<p>
git push 할때 default 지정 
</p>
</div>
</div>
<div id="outline-container-1.3" class="outline-3">
<h3 id="sec-1.3">git log &ndash;walk-reflogs </h3>
<div class="outline-text-3" id="text-1.3">
<p>
중간에 삭제된 branch나 unreachable한 commit에 대해서 log를 보고자 할때 사용
</p>
</div>
</div>
<div id="outline-container-1.4" class="outline-3">
<h3 id="sec-1.4">git push origin :staging </h3>
<div class="outline-text-3" id="text-1.4">
<p>
origin repository로부터 staging branch를 삭제 
</p>
</div>
</div>
<div id="outline-container-1.5" class="outline-3">
<h3 id="sec-1.5">subversion repository를 git로 변환 </h3>
<div class="outline-text-3" id="text-1.5">
<pre class="example">
authores file 
jmjeong = Jaemok Jeong&lt;jmjeong@gmail.com&gt;
</pre>
<pre class="example">
git svn clone --stdlayout --no-metadata --authors=./authores file:///home/svn/happydays 
</pre>
<p>
from mac
</p>
<pre class="example">
git clone ssh://home.jmjeong.com/~/git/happydays
</pre>
<p>
from mac to github
</p>
<pre class="example">
git remote add github git@github.com:jmjeong/happydays.git
git push github master
</pre>
</div>
</div>
</div>]]></content:encoded>
    </item>
  </channel>
</rss>

