My git server setup.xhtml (1789B)
- <article xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" class="h-entry">
- <h1 class="p-name"><a class="u-url" href="/articles/My%20git%20server%20setup">My git server setup</a></h1>
- <p>So after having problems with gitlab.com (not being able to push to your own repository for example). I decided to have a very simple git setup, inspired by git.linkmauve.fr. I putted all my git repos into <code>/git</code>.</p>
- <h2>started with just nginx and ssh</h2>
- <p>This one is dead-simple when you know the trick, simply put <code>git update-server-info</code> into <code>hooks/post-update</code> or <code>hooks/post-receive</code> of your git repo (they have to be bare repo, that’s done with --bare)</p>
- <h2>Added git-daemon</h2>
- <p>That one was even more simple, just had to point to where the git repositories are stored</p>
- <h2>Wanted a better interface</h2>
- <p>While searching for alternatives to GNU I saw <a href="http://git.2f30.org/stagit/">stagit</a>, a static git generator (I don’t like CGI, specially when it could have access to my git repos), to use it I added theses lines to the post-update-hook</p>
- <pre><code>repo=$(pwd)
- cd "$(pwd | sed s/.git$//)" && stagit -c "$repo.cache" "$repo"
- cd /git && stagit-index *.git > /git/index.html</code></pre>
- <h2>Garbage Collector</h2>
- <p>It’s not like my repos were getting big, git is supposed to do that itself but it seems like it doesn’t, so I’m doing <code>git gc</code> each time, which isn’t very optimised.</p>
- <h2>Final Hook code (deploy, stagit, …)</h2>
- <p>This can be seen in my <a href="/git/utils">/git/utils</a> repo, in the <code>git-hooks</code> folder.</p>
- <p>Also the blog is a symlink to <code>/git/blog.work</code> which are the raw files done by that hook.</p>
- </article>