Git, Github, Infrastructure, Stash

How to migrate Gitolite or other Git-Server Repos to Stash automatic.

In one of our projects I had the need to convert many Git repositories from an old Gitolite server to a internal Stash system.

To have no need to make it for the more than 50 repositories by hand, I wrote this small script which I wanna share with you. The nice things the way which I use transfers also all branches, tags etc.

See the projects Github Page:
https://github.com/tommyziegler/gitolite-to-stash-converter

Just clone it, specify your data and have fun.

For problems in your setup create an issue on Github. Tested with Stash version v3.6.0

Standard
Git

Git Server mit Gitolite auf einen Ubuntu Server installieren

Dies wird eine kleine Anleitung wie man die Gitolite Benutzerverwaltung für Git Repositories in Betrieb nimmt.

SERVER:

Als erstes müssen wir Git und Gitolite auf dem Server installieren.

$ sudo apt-get update
$ sudo apt-get install git-core gitolite
$ sudo adduser --system --group --shell /bin/bash --disabled-password git

ADMIN CLIENT:

Dann müssen wir Public/Private SSH Keys auf einen Client generieren mit den wir das Repo verwalten möchten.

$ ssh-keygen -t rsa
$ scp ~/.ssh/id_rsa.pub regular_username@git_server_IP_address:/tmp/git-admin.pub

$ mkdir ~/git-admin-keys
$ cp ~/.ssh/id_rsa ~/git-admin-keys
$ cp ~/.ssh/id_rsa.pub ~/git-admin-keys

SERVER:

Dieser Key wird nun auf den Server installiert.

$ sudo su - git
$ gl-setup /tmp/git-admin.pub

ADMIN CLIENT:

Gitolite wird auch via einem eigenen Repository konfiguriert und eingestellt. Dieses kann man mit folgenden Befehl klonen.

$ git clone git@git_server_IP_address:gitolite-admin ~/gitolite-admin

Mit folgenden Befehl können wir Nutzer im Gitolite Repo anlegen

$ cp /path/to/john's/public/key.pub ~/gitolite-admin/keydir/john.pub
$ git add ~/gitolite-admin/keydir/john.pub
$ git commit -a -m "New user John added"

Nun könnnen wir die Hauptkonfigurationsdatei erstellen.

$ nano ~/gitolite-admin/conf/gitolite.conf

Folgende Standard Datei von mir ist sinnvoll und sollte selbsterklärend sein.

	gitolite.conf:

		################################################################################
		# Gruppen-Makros:                                                              #
		# Per Leerzeichen getrennte Usernamen; es dürfen nur solche User eingetragen   #
		# werden, die mittels ihrer im 'keydir'-Verzeichnis abgelegten public ssh keys #
		# eingerichtet worden sind.                                                    #
		#                                                                              #
		#    z.B.: @group_name = user1 user2 user3                                     #
		#                                                                              #
		################################################################################

		@magunait-admins       = user1
		@magunait-engineers    = user4 user5
		@magunait-tools        = usertoolchain


		###############################################################################
		# Admin Repository:                                                           #
		# Mit diesem Repository werden Benutzer und Repositories verwaltet.           #
		###############################################################################

		# Admin-Repository
		repo gitolite-admin
		    RW     = @magunait-admins
		    R      = @magunait-engineers

		###############################################################################
		# MagunaIT-Repositories:                                                      #
		# Diese Repositories werden vom MagunaIT-Team verwaltet.                      #
		###############################################################################

		# Masterbrain-Repositories
		repo repo1
		    RW = @magunait-engineers @magunait-tools

		repo repo2 repo3
		    RW = @magunait-engineers @magunait-tools

Nun kann man die Änderungen mit folgenden Befehlen auf den Git Server hochladen.

$ git commit -a -m "Add user credentials"

$ git push

DEVELOPER CLIENT:

Folgende Befehle um den Client Standard Werte des Benutzer(s) zu übermitteln ist ratsam.

  • Unix (Linux, Mac OS X etc.)
  •   $ git config --global core.editor your_editor_choice
      $ git config --global user.name "your_name_here"
      $ git config --global user.email "your_email@address.com"
    

    Dies ist eine kleine Anleitung wie ich bei einigen Kunden Git einfach und schnell installiert habe.

    Standard