Existe-t-il actuellement un moyen d’héberger un référentiel Git partagé dans Windows? Je comprends que vous pouvez configurer le service Git sous Linux avec:
git daemon
Existe-t-il une option Windows native, hormis le partage de dossiers, pour héberger un service Git?
EDIT: J'utilise actuellement l'installation cygwin de git pour stocker et utiliser des référentiels git sous Windows, mais j'aimerais passer à l'étape suivante consistant à héberger un référentiel avec un service pouvant fournir un accès à d'autres.
Voici quelques étapes à suivre pour que le démon git s'exécute sous Windows:
(Prérequis: une installation Cygwin par défaut et un client git prenant en charge le démon git)
Étape 1: Ouvrez un shell bash
Étape 2: Dans le répertoire/cygdrive/c/cygwin64/usr/local/bin /, créez un fichier nommé "gitd" avec le contenu suivant:
#!/bin/bash
/usr/bin/git daemon --reuseaddr --base-path=/git --export-all --verbose --enable=receive-pack
Étape: Exécutez la commande cygrunsrv suivante à partir d'une invite élevée (en tant qu'administrateur) pour installer le script en tant que service (Remarque: suppose que Cygwin est installé sur C:\cygwin64):
cygrunsrv --install gitd \
--path c:/cygwin64/bin/bash.exe \
--args c:/cygwin64/usr/local/bin/gitd \
--desc "Git Daemon" \
--neverexits \
--shutdown
Étape 4: Exécutez la commande suivante pour démarrer le service:
cygrunsrv --start gitd
Vous avez terminé. Si vous voulez le tester, voici un script rapide et sale qui montre que vous pouvez transférer le protocole git vers votre machine locale:
#!/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
GitStack pourrait être votre meilleur choix. Il est actuellement gratuit (pour 2 utilisateurs maximum) et open source au moment de l'écriture.
Voici un serveur git dédié pour Windows: https://github.com/jakubgarfield/Bonobo-Git-Server/wiki
Si vous travaillez dans un environnement Windows, avez-vous envisagé Mercurial ? C'est un système de contrôle de version distribué comme Git, mais il s'intègre beaucoup plus facilement et plus facilement avec Windows.
Si vous obtenez l'erreur cygrunsrv: Error starting a service: QueryServiceStatus: Win32 error 1062: The service has not been started.
après avoir exécuté la commande:
cygrunsrv --start gitd
cela signifie que vous n'avez pas créé le dossier 'base-path'.
La création du dossier '/ git' et la réexécution de la commande résoudront ce problème.
Installer CygWin est une overkill, lisez ce tutoriel sur la façon de le faire plus rapidement et en natif:
http://code.google.com/p/tortoisegit/wiki/HOWTO_CentralServerWindowsXP
J'utilise actuellement le démon ssh de cygwin sous Windows pour servir et autoriser l'accès à distance à mon référentiel. Cela fonctionne assez bien, je contrôle totalement qui accède à mon dépôt avec leurs certificats ssh et les performances en flammes, même sur des liaisons distantes WAN et VPN.
ne autre solution consiste à utiliser Gitosis . C'est un outil qui facilite beaucoup l'hébergement des pensions.
MsysGit prend maintenant en charge le démon git! Cela fonctionne bien (du moins pour moi). Je vais essayer de le faire fonctionner comme un service ...
Vous n'avez pas besoin d'héberger un service, vous pouvez également créer un référentiel partagé sur un lecteur partagé. Il suffit de créer un référentiel nu. Vous pouvez cloner un référentiel existant dans un référentiel partagé en utilisant: "git clone --bare --shared [source] [dest]". Vous pouvez également initier un nouveau référentiel en utilisant "git init --bare --shared = all".
Henk
Avez-vous envisagé d'utiliser la couche cygwin? Voir ce lien .
ceci est une réponse 2015 à une question de plus de 7 ans.
Pour un paiement unique de 10 $, à partir de https://bitbucket.org/product/server , vous pouvez acheter une licence Windows 64 bits pour un maximum de 10 utilisateurs .
Apparemment, les versions 32 bits ne sont disponibles que via leurs archives.
Bitbucket Server s'appelait auparavant Stash .
S'il vous plaît noter que je n'ai pas essayé cette version mais $ 10 semble être une bonne affaire; ici J'ai lu qu'Atlassian donnait 10 $ à une organisation caritative. FWIW
Sous Windows, vous pouvez également servir les référentiels Git avec Apache via HTTP ou HTTPS, en utilisant l’extension DAV.
Le chemin du référentiel Git peut ensuite être protégé avec des vérifications d'authentification Apache, telles que la restriction à certaines adresses IP ou l'authentification de type htpasswd/htdigest.
L'utilisation de l'authentification htpasswd/htdigest est limitée par le fait que le nom d'utilisateur: mot de passe est transmis dans l'URL Git demandée. Il est donc préférable de limiter l'accès à l'URL Git à certaines adresses IP.
Edit: Remarque, vous pouvez laisser le mot de passe en dehors de l'URL Git et Git vous demandera le mot de passe pour Push et chercher/extraire à la place.
L'utilisation de HTTPS signifie que toutes les données sont cryptées lors du transfert.
C'est assez facile à installer et ça marche.
L'exemple suivant illustre la combinaison du contrôle d'accès par adresse IP et utilisateur: mot de passe via HTTP standard.
Exemple 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>
Exemple .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
Au travail, j'utilise GitBlit GO installé sur un serveur Windows. Travaillez parfaitement et intégrez bien ActiveDirectory pour l'authentification et l'autorisation des utilisateurs. Il est également gratuit et opensource (sous licence Apache)
Seul l’accès HTTP (S) est pris en charge, pas de SSH, mais sous Windows, vous n’auriez besoin de rien de plus.
Je pense que ce que Henk dit, c'est que vous pouvez créer un référentiel partagé sur un lecteur, puis le copier dans un emplacement commun auquel vous avez tous les deux accès. S'il y a un serveur de l'entreprise ou quelque chose auquel vous avez tous les deux accès ssh, vous pouvez placer le référentiel dans un endroit où vous pouvez le SCP le retourner sur votre propre ordinateur, puis en tirer un extrait. Je l'ai fait moi-même depuis un moment, car j'ai deux ordinateurs. C'est un problème, mais ça fonctionne.
Pour Windows 7 x64 et Cygwin 1.7.9, j'avais besoin d'utiliser/usr/bin/gitd comme argument args de cygrunsrv.
cygrunsrv --install gitd \
--path c:/cygwin/bin/bash.exe \
--args /usr/bin/gitd \
--desc "Git Daemon" \
--neverexits \
--shutdown
En outre, je devais exécuter bash en tant qu'administrateur pour installer le service.