2010-03-13 2 views
5

J'ai un référentiel git central que tout le monde pousse à tester et à intégrer, mais il n'est poussé que lorsque les fonctionnalités sont 'prêtes'. Alors que dans le milieu d'une grande tâche, les développeurs ont souvent de nombreux commits qui restent sur leurs disques durs. Parfois, au milieu de ces projets, j'aimerais voir ce que fait un autre développeur ou lui montrer comment j'ai fait quelque chose. J'aimerais pouvoir dire à un autre développeur de simplement "tirer ma copie de travail". La seule façon que je peux penser est que tout le monde utilise SSH sur leurs machines de développement et ajoute des comptes ou des clés SSH pour tout le monde, mais c'est un énorme cauchemar de confidentialité et d'autorisations, et cela demande beaucoup de travail.Comment partagez-vous votre dépôt git avec d'autres développeurs?

Faut-il simplement pousser vers ce référentiel central dans ces cas-là? Devrions-nous pousser après chaque engagement local?

+0

utilisez-vous Linux ou Windows? – hasen

+0

la plupart des développeurs actuels sont sur OS X, donc ssh n'est pas totalement hors de question. – semi

Répondre

3

Deux approches communes:

  • développeurs ont leurs propres prises en pension publiques (par exemple mpd et des programmes connexes).
  • les développeurs poussent à refs dans leur propre espace de noms sur un dépôt central (dev1/master, dev2/master). En fonction de votre situation exacte, vous voudrez peut-être un contrôle d'accès sous la forme de crochets pour vous assurer que personne ne fasse quelque chose de stupide.
3

Nous utilisons branches pour le code qui ne sont pas « prêt » encore, et les branches sont poussés à un repo central (qui est sauvegardé!). Quand une nouvelle fonctionnalité devient "prête", elle est fusionnée dans la branche master.

L'un des avantages de l'utilisation de git est qu'il est très, très facile de créer et de fusionner des branches, et vous pouvez visualiser ce qui se passe en utilisant gitk. Conseillé!

+0

J'oublie où j'ai appris ceci - si vous avez plusieurs développeurs, chaque développeur travaille sur une ou plusieurs branches préfixées par leurs initiales, par ex. nr/proposed, nr/line-end-fix, et utilise uniquement la branche master pour l'intégration. Les branches peuvent ensuite être déplacées dans les référentiels et la source d'origine reste claire, et il n'y a pas de conflit de nom de branche. –

+0

Cela correspond un peu à la philosophie git des branches de fonctionnalités ... il s'agit simplement de branches de fonctionnalités à distance. Un de mes projets utilise cette approche et il semble bien fonctionner. – RyanWilcox

Questions connexes