47 votes

Quel type de serveur git utilisez-vous? ou comment utilisez-vous git?

Disons que nous avons une petite équipe, de 1 à 5 personnes. Ce type de "git d'installation" voulez-vous utiliser?

Souhaitez-vous utiliser gitweb et apache de sorte que vous pourriez exécuter via http? Ou voulez-vous utiliser l'utilisateur des comptes et de la ssh, d'une certaine façon?

Aujourd'hui, je suis habitué à utiliser SubVersion tu apache (http), mais je ne suis pas sûr que c'est juste pour l'installation à l'utilisation de git de la même façon...

Merci Johan


Mise à jour: Il se sent comme si nous combinons la réponse que Dietrich Ppe et un hallidave donné que j'ai pu obtenir un rapide et une bonne solution.

Une commune de la dir dans les serveurs de système de fichiers où certains peuvent écrire, et que dir est également exposée avec apache. De cette façon, tout le monde peut toujours obtenir la dernière, mais seulement des personnes de confiance peut écrire...


Mise à jour: Si vous n'avez pas besoin d'avoir le code "à la maison", github.com a un très bon service (qui fonctionne très bien).

Et leur idée que le service est gratuit si vous écrivez du code libre, et si votre code n'est pas libre de vous payer pour cela semble être une bonne idée (voir https://github.com/account/billing).

42voto

hallidave Points 3887

Pour un référentiel partagé sur votre propre serveur, le plus simple d'installation est d'utiliser ssh. Donner à chaque utilisateur un compte sur la machine serveur et configurer un nu-dépôt git dans un répertoire que tout le monde ait la permission d'écriture.

Pour cloner le repository:

git clone user@server:/path/to/repo

Si vous ne voulez pas créer des comptes d'utilisateur, vous pouvez également utiliser Gitosis qui vous permet de gérer l'accès à l'aide de clés publiques plutôt que par des comptes d'utilisateur.

http://scie.nti.st/2007/11/14/hosting-git-repositories-the-easy-and-secure-way

23voto

Dietrich Epp Points 72865

Git est encore plus facile à utiliser avec Apache de Subversion. Tout ce que vous devez faire est d'installer un dépôt public dans le serveur (utilisation de "dépôt public" comme terme de recherche pour trouver plus d'infos). Le serveur doit avoir Git, mais Git n'est pas en agissant comme un serveur, c'est juste la gestion de fichiers et la configuration d'Apache est de servir comme un bon vieux données.

Un flux de travail typique pourrait être présent:

Sally est en charge du projet. Elle a son propre référentiel sur son poste de travail et dispose d'un espace de stockage sur le serveur. Elle a un accès shell sur le serveur de sorte qu'elle peut pousser à des modifications.

Joe et le projet de Loi de travailler avec Sally. Ils tirent des changements de Sally du dépôt public, mais ils n'ont pas l'autorisation d'écrire pour elle. Quand ils ont quelque chose à donner à Sally, ils lui envoyer un courriel. Sally tire de Joe modifications de son public repo, puis pousse à son public des pensions. Le projet de loi tire alors de Sally repo et il obtient de Joe trop de changements.

Dans un sens, vous avez de la centralisation, parce qu'il y a une personne qui est en charge de décider de ce que l'autorité de la version de votre application. Vous pourriez tout aussi bien donner à chacun un accès shell à votre référentiel central, peut-être en leur donnant limitée coquilles qui ne peut exécuter git.

16voto

sturmer Points 174

Tout à fait une vieille question, mais je vais lui donner un coup puisque je n'ai pas trouver une réponse qui explique la procédure étape par étape.

Disons que vous avez un répertoire sur la machine locale contenant le code à usage en commun (code-dir). Vous avez également un public_html répertoire sur un serveur dont le contenu est servi par un serveur web Apache.

Localement:

  1. Faire les répertoires et les fichiers qui vont être créées avec drwx-----x-et -rw------- autorisations, respectivement:

    umask 076

  2. Initialiser un repo git:

    cd code_dir
    git init
    git add de tous les fichiers
    git commit-a -m "d'Abord importer"

  3. Créer un nu-copie de la mise en pension, c'est à dire sans les fichiers de code, mais simplement le contrôle de version:

    cd ..
    git clone --bare code-dir _code-dir_.git

  4. Copiez le nu repo pour le serveur apache-dossier exécutable:

    scp -r code_dir.git utilisateur@serveur

Maintenant ssh vers le serveur; puis:

  1. Informer le serveur git de la présence de la base de code:

    cd code-dir.git;
    git --bare update-server-info

  2. Activer le post-mise à jour de crochet: si la machine sur laquelle vous avez fait la nue-clone avait de version git > 1.6.6, le changement de nom de hooks/post-mise à jour; sinon, accorder des droits d'exécution au crochet:

    chmod a+x hooks/post-mise à jour (git >1.6.6) OU
    mv hooks/post-mise à jour.exemple de hooks/post-mise à jour (git <=1.6.6)

  3. Accorder des autorisations de lecture sur le monde pour tout, dans le nu de pensions, qui est un fichier (ce qui aurait pu être fait avant, sur le serveur local):

    trouver . -type f|xargs chmod o+r

Les pensions de titres sont désormais en lecture accessible à tous grâce à la commande:

git clone http://serveur-distant

Pour pousser commis des modifications locales de l'opération:

git push ssh://serveur-distant/~/chemin/vers/proj.git master

11voto

Marc Charbonneau Points 30464

En fait, j'utiliserais un compte GitHub , gratuit ou l'un des petits plans payés, en fonction de vos besoins. Ce n'est pas vraiment "décentralisé", mais GitHub présente de grands avantages et, à mon avis, rien ne cloche dans le modèle consistant à pousser vers un repo d'origine.

9voto

dbr Points 66401

Je le recommande Github. Il est simple à utiliser, dispose d'une très belle INTERFACE utilisateur et rend la collaboration trivial. Si vous travaillez sur quelque chose d'ouvrir-source, les comptes gratuits sont plus que suffisants. Si vous avez besoin des dépôts privés, vous devez le "Petit plan", qui est 12USD/mois.

Si vous voulez lancer votre propre serveur git, je vous recommande de gitolite, un outil pour simplifier l'installation/configuration/authentification (bien qu'il n'est pas difficile de le faire manuellement)

On remarque, à l'aide de git dans un système centralisé "SVN-comme" le programme d'installation est tout à fait correct. Tout simplement parce que git est "décentralisée" ne signifie pas que vous n'êtes pas autorisé un répertoire "principal"..

Git été décentralisés vous donne plus de flexibilité, de sorte qu'il n'a pas besoin d'un serveur central de la fonction.

Edit: Cette question précédemment Gitosis, ce qui est long défunt, au lieu de Gitolite.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X