Skip to main content

Gitblit - The Little Git Repo Manager That Could

I've been tweeting about Gitblit every now and then, and also recommended it to people who want to run some Git infrastructure on Windows.

Seeing Gitblit v1.0.0 was released a few hours ago (Google+), I would like to celebrate and congratulate the project with a two blog-posts. This is the first, and the second I hope to do soon in shape of some interviews with a couple of Gitblit users.

Uh, what is a Git repository manager?

It can be several things. Most people look for these features in a repo manager:

  • A central place to share repositories
  • A web-frontend for said repositories
  • Manages users and access-control 
Just to mention an alternative setup: At my dayjob, we use:
  • A simple folder on a Linux server to put central repositories, accessible over SSH
  • Gitweb as a web-frontend
  • Access-control with SSH users and certificates
We're quite happy with the above setup because we are a very Linux/Mac oriented shop, with a small team that have no fancy requirements on the access-control part. For a larger, Windows based shop it won't be so easy.

An alternative is to use Github, which is probably the best all-round solution for repository management. But it costs money, which can be a hard pill to swallow for some organizations.

Other free alternatives are Gitorious, Gitlab (wich uses Gitolite) and Gitolite, but I think these three are pretty Linux oriented.

Note that both Gitorious and Github are available in SaaS form (that is, you store the central repositories on their servers, so you don't need any infrastructure yourself), and they are free to use for open-source projects.

My favorite things about Gitblit


  • It's free/open source (Apache license).
  • Comes with authorization built in. No need to figure out OpenSSH on Windows (a lot of people really struggle with this).
  • It's Java. Call it a plus or a minus, but a cool consequence of this is that Gitblit has Groovy hooks.
  • Another consequence: Runs well on Windows.
  • Great just-works factor

Wait, who makes this Gitblit anyway? What's the catch?

No catch, it's just a project that was started to scratch an itch. It's a really charming story really. James Moger, the author of the project, wrote about it a while ago, and I recommend you give it a read.

A small tour of Gitblit

I just took version 1.0.0 for a spin on my Ubuntu laptop. Downloaded the Gitblit GO, unzipped and started with java -jar gitblit.jar (could it be any easier?).

Just started Gitblit GO, no configuration necessary
Browse to https://localhost:8443/ and there it is (it generates a self-signed https certificate if you don't tell it otherwise, that's why you get a warning in your browser).

First view of Gitblit. You'll need to log in as admin/admin top-left there to start creating repos
Just created an empty repo. Note the helpful instructions for getting started.
Note that I had to do:

git config http.sslVerify false 

in my local repository before I could push as described above (more about this in the Gitblit Setup docs).

First repo up and running!
Managing users and teams in Gitblit

Pretty, isn't it? It also runs well on Windows of course, also as a Windows service (with the right coctail of Java versions and configuration).

There are more screenshots on the Gitblit homepage, and also a live instance you can try out.

I'll come back to some more reasons on when or why you should choose to run Gitblit in the next blog post.

Comments

  1. hello, your information is very interesting but I would like you to talk a little about federation, I have a question I can create a copy of a repository for security and to leave actomaticamente updating?

    ReplyDelete
  2. Hi Diana, thanks for commenting. You'd better take up questions like that on the Gitblit mailing list.

    ReplyDelete

Post a Comment

Popular posts from this blog

Open source CMS evaluations

I have now seen three more or less serious open source CMS reviews. First guy to hit the field was Matt Raible ( 1 2 3 4 ), ending up with Drupal , Joomla , Magnolia , OpenCms and MeshCMS being runner-ups. Then there is OpenAdvantage that tries out a handful ( Drupal , Exponent CMS , Lenya , Mambo , and Silva ), including Plone which they use for their own site (funny/annoying that the entire site has no RSS-feeds, nor is it possible to comment on the articles), following Matt's approach by exluding many CMS that seem not to fit the criteria. It is somewhat strange that OpenAdvantage cuts away Magnolia because it "Requires J2EE server; difficult to install and configure; more of a framework than CMS", and proceed to include Apache Lenya in the full evaluation. Magnolia does not require a J2EE server. It runs on Tomcat just like Lenya does (maybe it's an idea to bundle Magnolia with Jetty to make it seem more lightweight). I'm still sure that OpenAdvant

Considerations for JavaScript in Modern (2013) Java/Maven Projects

Disclaimer: I'm a Java developer, not a JavaScript developer. This is just what I've picked up the last years plus a little research the last days. It's just a snapshot of my current knowledge and opinions on the day of writing, apt to change over the next weeks/months. We've gone all modern in our web applications, doing MVC on the client side with AngularJS or Ember , building single-page webapps with REST backends. But how are we managing the growing amount of JavaScript in our application? Yeoman 's logo (not necessarily the conclusion of this blog post) You ain't in Kansas anymore So far we've just been doing half-random stuff. We download some version of a library and throw it into our src/main/webapp/js/lib , or we use it from a CDN , which may be down or unreachable when we want to use the application.. Some times the JS is minified, other times it's not. Some times we name the file with version number, other times without. Some

Git Stash Blooper (Could not restore untracked files from stash)

The other day I accidentally did a git stash -a , which means it stashes *everything*, including ignored output files (target, build, classes, etc). Ooooops.. What I meant to do was git stash -u , meaning stash modifications plus untracked new files. Anyhows, I ended up with a big fat stash I couldn't get back out. Each time I tried, I got something like this: .../target/temp/dozer.jar already exists, no checkout .../target/temp/core.jar already exists, no checkout .../target/temp/joda-time.jar already exists, no checkout .../target/foo.war already exists, no checkout Could not restore untracked files from stash No matter how I tried checking out different revisions (like the one where I actually made the stash), or using --force, I got the same error. Now these were one of those "keep cool for a second, there's a git way to fix this"situation. I figured: A stash is basically a commit. If we look at my recent commits using   git log --graph --

Managing dot-files with vcsh and myrepos

Say I want to get my dot-files out on a new computer. Here's what I do: # install vcsh & myrepos via apt/brew/etc vcsh clone https://github.com/tfnico/config-mr.git mr mr update Done! All dot-files are ready to use and in place. No deploy command, no linking up symlinks to the files . No checking/out in my entire home directory as a Git repository. Yet, all my dot-files are neatly kept in fine-grained repositories, and any changes I make are immediately ready to be committed: config-atom.git     -> ~/.atom/* config-mr.git     -> ~/.mrconfig     -> ~/.config/mr/* config-tmuxinator.git       -> ~/.tmuxinator/* config-vim.git     -> ~/.vimrc     -> ~/.vim/* config-bin.git        -> ~/bin/* config-git.git               -> ~/.gitconfig config-tmux.git       -> ~/.tmux.conf     config-zsh.git     -> ~/.zshrc How can this be? The key here is to use vcsh to keep track of your dot-files, and its partner myrepos/mr for o

Leaving eyeo

Thirteen blog posts later, this one notes my departure from eyeo after 4 years and 3 months. I joined eyeo around the headcount of 80 employees, and now I think there's just over 250 people there. My role coming in was as operations manager, doing a mix of infrastructure engineering and technical project management. I later on took on organizational development to help the company deal with its growing pains . We introduced cross-functional teams, departments (kind of like guilds), new leadership structures, goal-setting frameworks, onboarding processes and career frameworks.  And all of this in a rapidly growing distributed company. I'm proud and happy that for a long time I knew every employee by name and got to meet every single new-hire through training them on company structure and processes.  At some point, we had enough experienced leaders and organizational developers that I could zoom back in on working in one team, consulting them on  Git and continuous integration