Visual Studio 2013 und Bonobo Git Server


Da ich nun mittlerweile neben C# auch andere Sprachen verwende, stellte sich die Frage nach einer geeigneten Quellcodeverwaltung. Den bisher eingesetzten Microsoft Team Foundation Server wollte ich damit vollständig ablösen. Zudem war es an der Zeit, die mittlerweile 3 vorhandenen Versionen zusammenzuführen.

Nach kurzem Einlesen habe ich mich für die Quellcodeverwaltung Git entschieden.

Die verwendeten Programme, Konfiguration und ersten Schritte möchte ich nun aufzeigen.

Der Server: Bonobo

Als Server habe ich mich für den Bonobo Git Server entschieden.
Ein Windows Server 2008 R2 mit freier Kapazität war noch vorhanden, der IIS war schon drauf und somit perfekt geeignet.
Die Installation ist tatsächlich so einfach wie auf der Homepage beschrieben: Dateien entpacken, Berechtigungen anpassen, in Application konvertieren, fertig!
Einzig auf meinem Demo-System (neu installiert) musste ich noch das MVC-Framework mittels

%windir%\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -ir registrieren.

Der Client (Windows)

Unter Windows habe ich mich für msysgit entschieden. Ich wollte vor der Verwendung im Visual Studio sehen, daß alles reibungslos funktioniert (wie sich leider herausstellte, benötigt man es zu Konfiguration, da Visual Studio hier nicht zu einer erfreulichen Zusammenarbeit zu bewegen war – dazu aber später mehr).

Die Installation ist eigentlich unspektakulär. Hier aber trotzdem die einzelnen Schritte:
001 002

004 005

006 007

008

Die Auswahl „Use Git from Git Bash only“ bringt einen Nachteil mit sich: Das Stammverzeichnis ist das Installationsverzeichnis!
Ich habe meine Daten, die repliziert werden, aber auf einer eigenen SSD liegen.
Glücklicherweise gibt es seit einigen Windows-Versionen eine Möglichkeit, Symbolische Links zu erstellen.
In einer als Administrator gestarteten Eingabeaufforderung lautet der Befehl

mklink /D /J D:\SourceRepos "C:\Program Files (x86)\Git\work"

Damit habe ich in meiner Git Bash ein Unterverzeichnis work, daß aber auf D:\SourceRepos verweist. Die Quellcodeverwaltung (und auch Visual Studio) haben damit kein Problem.

009

Erste Schritte mit Git

Zuerst muss auf dem Server ein neues Repository angelegt werden.
Ich habe es der Einfachheit halber gittest genannt.

Lokales Verzeichnis erstellen und auf den Server replizieren

In dem Arbeitsverzeichnis (bei mir D:\SourceRepos) ein neues Verzeichnis erstellen. Darin dann eine Textdatei (info.txt) erstellen und der Datei etwas Inhalt geben.

D:\SourceRepos\gittest>dir
Datenträger in Laufwerk D: ist DATA
Volumeseriennummer: 0000-0000
Verzeichnis von D:\SourceRepos\gittest
09.04.2015  16:32                .
09.04.2015  16:32                ..
09.04.2015  16:32                25 info.txt
               1 Datei(en),             25 Bytes
               2 Verzeichnis(se), 78.199.525.376 Bytes frei

Dann in die Git-Bash wechseln und in das Verzeichnis wechseln. Den Inhalt mit ls anzeigen.

$ cd /work/gittest
$ ls
info.txt

Um das Repository nun zu initialisieren

$ git init
Initialized empty Git repository in C:/Program Files (x86)/Git/work/gittest/.git/
user@pc1 /work/gittest (master)

alle vorhandenen Dateien hinzufügen

$ git add *

den Status anzeigen

$ git status
On branch master
Initial commit
Changes to be committed:
(use "git rm --cached ..." to unstage)
new file: info.txt

und übernehmen (commit)

$ git commit -m "initial version"
[master (root-commit) a63c383] initial
1 files changed, 2 insertions(+)
create mode 100644 info.txt

Dann das Remote Repository hinzufügen und Konfig anschauen

$ git remote add gittest https://user@git.server.tld/git/gittest.git
$ git remote -v

Und auf den Server replizieren

$ git push gittest master
Password for 'https://user@git.server.tld':
Counting objects: 5, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (5/5), 343 bytes | 0 bytes/s, done.
Total 5 (delta 0), reused 0 (delta 0)
To https://user@git.server.tld/git/gittest.git
* [new branch] master -> master

dann noch den upstream branch konfigurieren

$ git push --set-upstream gittest master
Password for 'https://user@git.server.tld/git/gittest.git':
Branch master set up to track remote branch master from gittest.
Everything up-to-date

Quellcode vom Server in ein neues Verzeichnis replizieren

Um eine kopie vom Server in das (nicht vorhandene) Verzeichnis gittest zu erhalten

$ git clone https://user@git.server.tld/git/gittest.git gittest

Einbinden in Visual Studio 2013

Unter Visual Studio 2013 konnte ich kein Remote Repository konfigurieren. Das wurde dann manuell in der Git Bash vorgenommen. Ich gehe folgendermaßen vor, um ein Visual Studio Projekt hinzuzufügen:
Mit File > New Projekt ein neues Projekt erstellen. Darauf achten, daß es in einem Verzeichnis gespeichert wird, welches von der Git Bash erreichbar ist.

19342999764a44098d94e1ddcfbeb6e9

Dann das Projekt mit File -> Add to Source Control -> Git der Quellcodeverwaltung hinzufügen. Im Solution Explorer erkennt man an den grünen + nun, daß die Quellcodeverwaltung aktiv ist.

1d7eb902bd3844d181c1ccd3a5fdd213

Rechte Maustaste auf das Projekt und Commit… auswählen

4e802b6737a14a41876db9f3e8fe6b99
Die notwendige Commit Message eingeben und durch anklicken von Commit absenden.

943b2a0c0e244496b4f9a08f7c600d96
Eigentlich sollte mann nun auch unter Visual Studio 2013 das Remote Repository hinzufügen können.
Das ist bei mir aber immer mir unterschiedlichen Fehlermeldungen fehlgeschlagen. Zuerst erstellt man im Web Interface von Bonobo Git ein neues Repository.
Dann fügt man das Remote Repository hinzu

$ cd /work/VsGitTest
$ git remote add origin https://user@git.server.tld/git/vsgittest.git
$ git push origin master
Password for 'https://user@git.server.tld':
Counting objects: 12, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (11/11), done.
Writing objects: 100% (12/12), 4.74 KiB | 0 bytes/s, done.
Total 12 (delta 1), reused 0 (delta 0)
To https://user@git.server.tld/git/VsGitTest.git
* [new branch] master -> master
$ git push --set-upstream origin master
Password for 'https://user@git.server.tld':
Branch master set up to track remote branch master from origin.
Everything up-to-date

Am besten Visual Studio beenden und das Projekt neu laden. Wenn Änderungen gemacht wurden, diese wieder mit Rechte Maustaste -> Commit … übernehmen, den Kommentar eingeben und mit Commit and Push absenden.

fb32376a14de4eeb8b8108673df1631a

d323ade931d94eac9dae0422644e5251