it-swarm.com.de

Hosting Git Repository unter Windows

Gibt es derzeit eine Möglichkeit, ein freigegebenes Git-Repository in Windows zu hosten? Ich verstehe, dass Sie den Git-Dienst unter Linux konfigurieren können mit:

git daemon

Gibt es eine native Windows-Option, um einen Git-Dienst zu hosten, ohne Ordner freizugeben?

BEARBEITEN: Ich verwende derzeit die Cygwin-Installation von Git, um Git-Repositorys in Windows zu speichern und damit zu arbeiten, aber ich möchte den nächsten Schritt des Hostens eines Repositorys mit einem Dienst ausführen, der anderen Zugriff gewähren kann.

107
Jeff Fritz

Hier sind einige Schritte, die Sie ausführen können, um den Git-Dämon unter Windows zum Laufen zu bringen:

(Voraussetzungen: Eine Standard-Cygwin-Installation und ein Git-Client, der Git-Daemon unterstützt)

Schritt 1: Öffne eine Bash-Shell

Schritt 2: Erstellen Sie im Verzeichnis/cygdrive/c/cygwin64/usr/local/bin/eine Datei mit dem Namen "gitd" mit folgendem Inhalt:

#!/bin/bash

/usr/bin/git daemon --reuseaddr --base-path=/git --export-all --verbose --enable=receive-pack

Schritt 3: Führen Sie den folgenden Befehl cygrunsrv über eine Eingabeaufforderung mit erhöhten Rechten aus (d. H. Als Administrator), um das Skript als Dienst zu installieren (Hinweis: Es wird davon ausgegangen, dass Cygwin unter C:\cygwin64 installiert ist):

cygrunsrv   --install gitd                          \
            --path c:/cygwin64/bin/bash.exe         \
            --args c:/cygwin64/usr/local/bin/gitd   \
            --desc "Git Daemon"                     \
            --neverexits                            \
            --shutdown

Schritt 4: Führen Sie den folgenden Befehl aus, um den Dienst zu starten:

cygrunsrv - start gitd

Du bist fertig. Wenn Sie es testen möchten, finden Sie hier ein schnelles und unsauberes Skript, das zeigt, dass Sie das git-Protokoll auf Ihren lokalen Computer übertragen können:

#!/bin/bash

echo "Creating main git repo ..."
mkdir -p /git/testapp.git
cd /git/testapp.git
git init --bare
touch git-daemon-export-ok
echo "Creating local repo ..."
cd
mkdir testapp
cd testapp
git init
echo "Creating test file ..."
touch testfile
git add -A
git commit -m 'Test message'
echo "Pushing master to main repo ..."
git Push git://localhost/testapp.git master
74
Derek Greer

GitStack könnte Ihre beste Wahl sein. Es ist derzeit kostenlos (für bis zu 2 Benutzer) und Open Source zum Zeitpunkt des Schreibens.

16
poiuytrez

Hier ist ein dedizierter Git-Server für Windows: https://github.com/jakubgarfield/Bonobo-Git-Server/wiki

12
Daniel O

Wenn Sie in einer Windows-Umgebung arbeiten, haben Sie Mercurial in Betracht gezogen? Es ist ein verteiltes Versionskontrollsystem wie Git, lässt sich jedoch viel einfacher und übersichtlicher in Windows integrieren.

9
David Arno

Wenn Sie den Fehler cygrunsrv: Error starting a service: QueryServiceStatus: Win32 error 1062: The service has not been started. nach dem Ausführen des Befehls:

cygrunsrv --start gitd

das bedeutet, dass Sie den Ordner "base-path" nicht erstellt haben.

Wenn Sie den Ordner '/ git' erstellen und den Befehl erneut ausführen, wird dies behoben.

7
isaac

Das Installieren von CygWin ist ein Overkill. Lesen Sie dieses Tutorial, wie Sie es schneller und systemeigener machen können:

http://code.google.com/p/tortoisegit/wiki/HOWTO_CentralServerWindowsXP

7
Alex Burtsev

Ich verwende derzeit Cygwins ssh-Daemon unter Windows , um Fernzugriff auf mein Repo zu ermöglichen. Es funktioniert ganz gut, ich habe die vollständige Kontrolle darüber, wer über ihre SSH-Zertifikate auf mein Repo zugreift, und die Leistung ist auch über entfernte WAN und VPN-Verbindungen hervorragend.

Eine andere Lösung ist die Verwendung von Gitosis . Es ist ein Tool, das das Hosten von Repos viel einfacher macht.

5

SCM Manager

  • Leichter http-Server für Git, Mercurial, Subversion Repos aus einer Box (nur Java wird benötigt)
  • Web-Interface zur Verwaltung von Benutzern, ACLs, Repos
4
Lazy Badger

Jetzt unterstützt msysGit git daemon! Es funktioniert gut (zumindest für mich). Ich werde versuchen, es als Dienst laufen zu lassen ...

4
Artem

Sie müssen keinen Dienst hosten. Sie können auch ein freigegebenes Repository auf einem freigegebenen Laufwerk erstellen. Erstellen Sie einfach ein nacktes Repository. Sie können ein vorhandenes Repo mit "git clone --bare --shared [source] [dest]" in ein freigegebenes klonen. Sie können ein neues Repository auch mit "git init --bare --shared = all" initialisieren.

Henk

4
Henk

Haben Sie darüber nachgedacht, die Cygwin-Ebene zu verwenden? Siehe dieser Link .

4
Clokey

dies ist eine Antwort von 2015 auf eine Frage, die älter als 7 Jahre ist.

Für eine einmalige Zahlung von 10 US-Dollar kann von https://bitbucket.org/product/server eine 64-Bit-Windows-Lizenz für bis zu 10 Benutzer erworben werden .

Anscheinend sind 32-Bit-Versionen nur über ihr Archiv verfügbar.

Bitbucket Server war früher als Stash bekannt.

Bitte beachten Sie, dass ich diese Version nicht ausprobiert habe, aber 10 US-Dollar ein gutes Geschäft zu sein scheinen. hier Ich habe gelesen, dass Atlassian die 10 Dollar für wohltätige Zwecke gibt. FWIW

2
gerryLowry

Unter Windows können Sie auch Git-Repositorys mit Apache über HTTP oder HTTPS mit der DAV-Erweiterung bereitstellen.

Der Git-Repository-Pfad kann dann mit Apache-Authentifizierungsprüfungen wie der Beschränkung auf bestimmte IP-Adressen oder der Authentifizierung mit dem Typ htpasswd/htdigest geschützt werden.

Die Einschränkung bei der Verwendung der Authentifizierung htpasswd/htdigest besteht darin, dass der Benutzername: Kennwort in der angeforderten Git-URL übergeben wird. Daher ist es besser, den Zugriff auf die Git-URL auf bestimmte IP-Adressen zu beschränken.

Bearbeiten: Beachten Sie, dass Sie das Passwort aus der Git-URL herauslassen können und Git Sie stattdessen beim Drücken und Abrufen/Ziehen zur Eingabe des Passworts auffordert.

Die Verwendung von HTTPS bedeutet, dass alle Daten bei der Übertragung verschlüsselt werden.

Es ist einfach einzurichten und funktioniert.

Das folgende Beispiel zeigt die Kombination aus Zugriffssteuerung nach IP-Adresse und Benutzer: Kennwort über Standard-HTTP.

Beispiel Apache Virtualhost

## GIT HTTP DAV ##
<VirtualHost *:80>

  ServerName git.example.com
  DocumentRoot C:\webroot\htdocs\restricted\git
  ErrorLog C:\webroot\Apache\logs\error-git-webdav.log

    <Location />
      DAV on
      # Restrict Access
      AuthType Basic
      AuthName "Restricted Area"
      AuthUserFile "C:\webroot\Apache\conf\git-htpasswd"
      # To valid user
      Require valid-user
      # AND valid IP address
      Order Deny,Allow
      Deny from all
      # Example IP 1
      Allow from 203.22.56.67 
      # Example IP 2
      Allow from 202.12.33.44 
      # Require both authentication checks to be satisfied
      Satisfy all
    </Location>

</VirtualHost>

Beispiel .git/config

[core]
    repositoryformatversion = 0
    filemode = true
    bare = false
    logallrefupdates = true
[remote "Origin"]
    fetch = +refs/heads/*:refs/remotes/Origin/*
    url = http://username:[email protected]/codebase.git
[branch "master"]
    remote = Origin
    merge = refs/heads/master
2
David Thomas

Bei der Arbeit verwende ich GitBlit GO, das auf einem Windows Server installiert ist. Arbeiten Sie fehlerfrei und integrieren Sie sich für die Benutzerauthentifizierung und -autorisierung gut in ActiveDirectory. Es ist auch kostenlos und Open Source (Apache lizensiert)

GitBlit homepage

Es wird nur HTTP (S) -Zugriff unterstützt, kein SSH, aber unter Windows sollten Sie nichts mehr benötigen.

2

Ich denke, was Henk sagt, ist, dass Sie ein freigegebenes Repository auf einem Laufwerk erstellen und es dann an einen gemeinsamen Speicherort kopieren können, auf den Sie beide Zugriff haben. Wenn es einen Firmenserver oder etwas gibt, auf das Sie beide ssh-Zugriff haben, können Sie das Repository an einem Ort ablegen, an dem Sie es wieder auf Ihren eigenen Computer kopieren und von dort herunterladen können. Ich habe das für mich getan, da ich zwei Computer habe. Es ist ein Ärger, aber es funktioniert.

0
Ibrahim

Für Windows 7 x64 und Cygwin 1.7.9 musste ich/usr/bin/gitd als Argument für cygrunsrv verwenden

cygrunsrv   --install gitd                          \
            --path c:/cygwin/bin/bash.exe           \
            --args /usr/bin/gitd                    \
            --desc "Git Daemon"                     \
            --neverexits                            \
            --shutdown

Außerdem musste ich bash als Administrator ausführen, um den Dienst zu installieren.

0
disrvptor