Dienstag, 30. Oktober 2012

Git Extensions kann Git Hooks.

Es scheint so zu sein als würde Git Extensions seit einiger Zeit Git Hooks verstehen. Was zur Folge hat, dass man mit Git Extensions auch für Qt Gerrit Commits erzeugen kann.
(Meine bisherige Version war zumindest so alt, dass sie es nicht konnte...)
Gerrit Codereview unterstützt es auch direkt, da muss ich aber erst noch rausfinden, wie man da das jeweilige Gerrit einrichtet.

Montag, 29. Oktober 2012

Qt, Git, Gerrit, ssh und Proxy. Teil 3. (Hooks)

Hat man das alles ans Laufen gebracht, funktioniert übrigens auch:
>scp -p BENUTZER@codereview.qt-project.org:hooks/commit-msg .git/hooks
Damit bekommt man dann die Git Hooks in sein eigenes Repository, die zwingend notwendig sind, damit die Commits eine eindeutige Id bekommen. Sonst muss man die von Hand runterladen und in den richtigen Ordner kopieren.

Qt, Git, Gerrit, ssh und Proxy. Teil 2. (Push)

Kommt man dann mit:
>git push BENUTZER@codereview.qt-project.org:29418/qt/MODUL HEAD:ref/for/master
oder üblicher (sofern man sich an die Anleitung gehalten hat):
 >git push gerrit HEAD:ref/for/master
nicht durch und erhält folgenden Fehler:
ssh: connect to host codereview.qt-project.org port 22: Bad file number
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
So sollte es testweise hiermit gehen:
>git push ssh://BENUTZER@ssh.qt-project.org:443/qt/MODUL HEAD:ref/for/master  
Hängt man nämlich hinter einem Proxy, so darf man Port 29418 nicht benutzen und der Shortcut gerrit wird in der Regel mit diesem Port angelegt. Hier funktioniert es nur über den Port 443. Kommt man jetzt also durch, sollte man sich mit:
>git config --list
mal ansehen was dort unter remote.gerrit.url eingetragen ist.
Steht dort nicht der Port 443, wahrscheinlich aber sogar die URL codereview.qt-project.org, dann ändert man es so um:
>git config remote.gerrit.url ssh://BENUTZER@ssh.qt-project.org:443/qt/MODUL
Mit:
>git push gerrit HEAD:ref/for/master
sollte man dann endlich durchkommen.
Auch hier wieder Private/Public Schlüsselpaar muss erzeugt seien und Gerrit bekannt gemacht werden.
(BENUTZER: Gerrit Benutzername; MODUL: das zum Repository gehörende Qt Modul.)

Qt, Git, Gerrit, ssh und Proxy. (SSH Test)

Die testweise Verbindung mit dem Qt Codereview Gerrit mit ssh durch einen Proxy funktioniert so:
ssh -p 443 BENUTZER@ssh.qt-project.org
Dann, sofern man schön seinen Public/Private Schlüsselpaar angelegt hat, wird man nach seinem Passwort gefragt und der Server meldet:

 ****    Welcome to Gerrit Code Review    ****Hi BENUTZER, you have successfully connected over SSH. 
Unfortunately, interactive shells are disabled.
To clone a hosted Git repository, use: 
git clone ssh://egonuel@codereview.qt-project.org:29418/REPOSITORY_NAME.git
Man kommt also rein.
(BENUTZER: der Benutzername für Gerrit.)

Freitag, 26. Oktober 2012

Git und Proxy unter Windows.

Um Git (msysgit) unter Windows durch einen Proxy durchzubohren, erstellt man im Git Unterordner bin eine Textdatei mit dem Inhalt:
@echo off
set CONNECT=connect.exe
set PROXY=PROXYADDRESS:PROXYPORT


"%CONNECT%" -H %PROXY% %*
und ersetzt dort PROXYADDRESS und PROXYPORT gegen den zu durchbohrenden Proxy und speichert die Datei als bat ab, beispielsweise proxy.bat.
Dann führt man in der Git Bash Shell im Git Hauptordner folgenden Befehl aus:
git config --global core.gitproxy proxy.bat
Das wars.

Mit
git ls-remote git:://ADDRESS/REPO.git
kann man dann testen ob die Verbindung durchgeht, wobei natürlich ADDRESS und REPO durch das gewünschte Repository ersetzt werden müssen.