64 votes

Flux de travail Git sans serveur

Git est censé être un système décentralisé, mais tous les tutoriels et les meilleures pratiques que j'ai trouvées sur Google suggèrent d'utiliser un serveur (généralement GitHub, ou bien créer votre propre serveur).

J'utilise git pour de petits projets personnels (2-3 personnes), où puis-je trouver un workflow de bonnes pratiques pour synchroniser les changements directement entre les machines des membres de l'équipe.

Sinon, quels sont les arguments convaincants qui me poussent à éviter cette solution et à mettre en place un serveur "central" ?

43voto

averell Points 2067

Cela dépend de ce que vous entendez par "serveur". Git fonctionne parfaitement sans serveur central, bien que de nombreuses équipes trouvent pratique d'avoir un dépôt central.

Si par "serveur", vous entendez "installer un logiciel serveur", git fonctionnera également (dépôt central ou non) sans logiciel particulier, via ssh ou sur le système de fichiers.

Voir ce document pour les flux de travail possibles

Flux de travail avec référentiel commun

Le flux de travail que beaucoup utilisent est que tous les développeurs "poussent" (envoient) leurs modifications vers un référentiel commun, et reçoivent toutes les modifications de ce référentiel. C'est à peu près ce qui se passe :

  • Le développeur A pousse vers le centre
  • Le développeur B pousse vers le centre
  • Le développeur C tire (en obtenant les changements de A et B)
  • Le développeur A tire (en obtenant les modifications de B)
  • ...

Dans ce cas, le dépôt central peut se trouver sur l'un des ordinateurs des développeurs, sur github ou à tout autre endroit.

Flux de travail avec le courrier électronique

Vous pouvez également utiliser git sans serveur, en utilisant simplement le courrier électronique. Dans ce cas, le flux serait le suivant :

  • Le développeur A envoie les modifications par courrier électronique à l'équipe.
  • D'autres développeurs appliquent les changements apportés par les courriels

Cela peut même être fait de manière semi-automatique

Flux de travail sans serveur central

Vous pouvez configurer git pour qu'il utilise plus d'un dépôt "distant". La mise en garde est que vous devez nunca pousser vers un dépôt qui est vérifié (c'est-à-dire une copie de Developer sur laquelle quelqu'un travaille). Dans ce cas, le flux serait donc le suivant :

  • Le développeur A apporte des modifications
  • Le développeur B apporte des modifications
  • Le développeur C reprend les modifications de A
  • Le développeur C reprend les modifications de B
  • Le développeur B reprend les modifications de A
  • ...
  • Personne ne doit jamais pousser

Selon l'IMHO, ce type de flux de travail conduira rapidement à la confusion et à l'effondrement.

36voto

ralphtheninja Points 24346

Ce que vous devez faire en premier lieu, c'est réfléchir au type de flux de travail que vous avez déjà et configurer git pour qu'il fonctionne avec cela. Une fois que vous aurez mis quelque chose en place, vous pourrez l'affiner. Il n'est pas nécessaire d'installer un ordinateur séparé comme serveur. Si vous avez l'habitude d'avoir un dépôt central, tout ce que vous avez à faire est de créer un dépôt nu vers lequel tout le monde pousse. Pourquoi pas sur le réseau local ?

Repo central :

mkdir foo.git
cd foo.git
git init --bare

Votre répertoire :

mkdir foo
cd foo
git init
// add files
git add .
git commit -m "Initial commit"
git remote add origin //path/to/central/repo/foo.git
git push origin master

Autres dépôts :

git clone //path/to/central/repo/foo.git

Désormais, tout le monde peut pousser et tirer directement depuis la branche master. Ceci devrait être suffisant pour vous permettre de démarrer.

11voto

Andrew Aylett Points 16469

Vous n'avez pas nécessairement besoin de mettre une copie sur un serveur physique quelque part, mais il peut être utile d'avoir un dépôt "béni" quelque part -- faites en sorte qu'un membre de votre équipe (éventuellement par rotation) soit responsable de la collecte et de la gestion des modifications des personnes lorsqu'elles sont prêtes à être traitées comme définitives. Il peut soit conserver une branche dans son dépôt habituel, soit maintenir un dépôt séparé sur son système local pour stocker les sources principales.

Pour prendre un exemple concret, prenons Linux et Linus Torvalds : il n'y a pas de dépôt central vers lequel tout le monde pousse, mais Linus maintient un dépôt qui contient tout le code qu'il considère comme "prêt" (et c'est aussi le cas de plusieurs autres personnes, pour différentes définitions de "prêt"). De cette façon, vous avez une définition canonique de ce que le code contient, et un endroit pour définir ce que sont vos versions.

10voto

Vous devriez mettre en place un serveur central en tant que construction sociale, et non technique, afin que tout le monde sache où trouver la dernière version officielle, sans risque de confusion.

9voto

Cormac Mulhall Points 507

Comme cela a été mentionné, Git fonctionne très bien sans serveur centralisé. Mais une bonne raison d'avoir un serveur central est d'avoir un endroit "toujours disponible" pour pousser du code une fois qu'une fonctionnalité est terminée, code que d'autres développeurs peuvent extraire sans avoir besoin d'accéder à votre machine locale.

Par exemple, je travaille actuellement dans une équipe de développement composée de trois personnes. Nous travaillons tous sur des ordinateurs portables. Nous pourrions avoir un flux de travail où nous nous contenterions de puiser dans les machines des uns et des autres. Mais si je travaille sur une fonctionnalité et que j'engage mes chances après que tout le monde a quitté le bureau et que je veux qu'ils jettent un coup d'œil à ce système, ils ne peuvent rien faire si mon ordinateur portable n'est pas allumé et disponible sur le réseau. Si les gars arrivent plus tôt que moi (ce qui est toujours le cas), ils doivent attendre que mon ordinateur portable soit de nouveau en ligne.

Si je pousse vers quelque chose comme BitBucket ou GitHub ou simplement un serveur toujours en ligne au bureau, n'importe lequel des autres développeurs peut simplement extraire les modifications que j'ai apportées lorsqu'il est en ligne la prochaine fois.

C'est pour moi la principale raison d'avoir un serveur central, et ce n'est pas un défaut de Git mais plutôt une conséquence du travail avec des ordinateurs portables.

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