2009-11-03 11 views
1

Notre installation comme suit:Contrôle de version; choix, choix, choix!

Nous avons un serveur de développement local exécutant Ubuntu, avec une configuration pour refléter celle de notre hôte en direct. Chaque développeur travaille sur une machine Windows et accède aux fichiers depuis le serveur de développement local.

Les projets en question sont un certain nombre de sites Web construits en PHP. Voyant comme there are no good reasons not to use version control, nous avons l'intention d'obtenir soit SVN, Git, Mercurial ou quelque chose d'autre sur le serveur. La question est, comment faisons-nous cela, mais commettre des modifications à partir des machines Windows, et comment pouvons-nous extraire une zone finie d'un site (projet), ou un site dans son ensemble, à télécharger sur le live (distant) serveur?

+2

Il est vrai que certains VCS vous permettent d'effectuer une extraction et de télécharger une partie. Mais un VCS est un VCS et le sera toujours. Les systèmes de déploiement sont des bêtes différentes. Et c'est une bonne chose. – innaM

+1

Tortoise SVN est un excellent moyen d'utiliser le contrôle des révisions sur Windows. –

+2

Les réponses ici sont utiles, mais il y a des tas de questions sur SO demandant essentiellement la même chose. Vous devriez parcourir autour d'eux si vous finissez par vouloir plus de conseils. Recherchez le tag 'dvcs' ainsi que les "comparaisons". – quark

Répondre

10

Pourquoi utiliser SVN:

  • Mature codebase
  • outils GUI Mature sous Windows (si votre équipe les aime): TortoiseSVN
  • courbe d'apprentissage moins profondes (. En particulier si vous avez déjà utilisé CVS)
  • Sparse
  • checkouts

Pourquoi git utilisation (applique probablement mercurial aussi):

  • plus facile ramification et la fusion
  • Les développeurs peuvent interagir avec leur propre référentiel local sans avoir besoin de contacter le référentiel « maître »
  • peut travailler avec les dépôts SVN en amont ou CVS (mais si vous avez un choix, je d utiliser encore git en amont si les développeurs utilisent git)
  • "Assez bien" Outils Windows GUI (TortoiseGIT peut être aussi bon que TortoiseSVN maintenant ... ne l'a pas regardé depuis un an ou deux).
  • commandes plus puissantes

Une façon de traiter votre cas d'utilisation est: - Chaque développeur a son propre dépôt git privé - Les développeurs poussent les modifications du code au référentiel du serveur dev quand ils sont testés et prêts à utilisation de la production. - Le serveur live a une extraction mise à jour régulièrement, mise à jour manuellement ou mise à jour par un hook de commit sur le dépôt du serveur de développement (lors de la validation, "ssh live.server.com (cd/my/dir; origine HEAD) ").

Cette procédure pourrait également être adaptée au SVN, mais les dépôts privés deviendraient simplement des caisses.

0

Les machines Windows doivent pouvoir se connecter au serveur de contrôle des changements, sans problème, en utilisant le client de votre choix (par exemple, TortoiseSVN pour Windows). Pour effectuer des générations automatisées à partir du référentiel source, vous pouvez utiliser un logiciel d'intégration continue (CI). Je ne connais aucun de ces produits pour la pile LAMP, mais je suis sûr qu'il y en a beaucoup. Et, si c'est PHP pour le web, vous n'avez pas vraiment besoin d'une compilation, même si vous avez besoin d'une sorte de copie automatisée :-)

1

À moins d'avoir mal compris votre question ...Chacun des fournisseurs de contrôle de source que vous avez mentionnés a une version de Windows, ou fonctionne sous cygwin, et devrait donc fonctionner sous Windows exactement comme ils le feraient sous * nix - vous devriez donc baser votre décision sur le fournisseur de contrôle de source à utiliser en utilisant les mêmes critères que vous le feriez normalement.

0

La façon dont vous configurez les choses dépendra un peu du logiciel de contrôle de source que vous avez choisi.

Je voudrais configurer un référentiel central sur un serveur interne. Ceci est requis pour svn, et vous donne un emplacement canonique pour tirer les changements de si vous utilisez git ou hg.

Les développeurs peuvent archiver/cloner le référentiel sur leurs machines locales et valider/repousser les modifications. Je suggère d'utiliser des branches pour faire la distinction entre le code de production et le code de développement.

Pour déployer sur le site Web, vous disposez d'un processus qui extrait du référentiel central, met à jour la branche ou la balise de production, puis copie les fichiers sur le serveur en ligne.

Les détails exacts dépendent beaucoup du système de contrôle de version que vous utilisez.

5

Subversion fonctionnerait à merveille. Nous avons Subversion fonctionnant sur une machine de Linux et tout notre travail de développement est fait sur des machines de Windows. 90% du temps nous vérifions les projets dans et à travers l'IDE (généralement sous-clarté dans Eclipse) et l'autre 10% du temps, nous utilisons TortoiseSVN qui fonctionnera bien.

Vous pouvez valider les modifications apportées au référentiel via l'EDI ou Tortoise. Vous pouvez lier un serveur d'intégration continue avec le référentiel pour générer automatiquement le projet lorsque vous validez un changement de code dans le référentiel.

0

Je pense que la réponse facile à votre question est: Ce ne sont pas des défis. C'est juste comment ça fonctionne.

Nous utilisons SVN ici. La plupart des développeurs travaillent sur Windows mais notre groupe de test utilise Linux et nos serveurs de production sont Linux.

Les développeurs effectuent une extraction depuis le référentiel SVN à l'aide du plug-in SVN pour Eclipse. J'ai également vérifié sur Windows en utilisant TortoiseSVN et la ligne de commande SVN. Lorsque nous sommes prêts à déployer sur l'un des serveurs de test ou de production, nous vérifions simplement SVN sur le serveur approprié, compilons, et nous avons terminé. Avec PHP, vous n'avez même pas l'étape de compilation. Pour jouer à des choses que je fais à la maison - bien à la maison tout est Windows, mais j'utilise la ligne de commande SVN pour l'administration, puis Subcommander pour faire des choses de poste de travail.

5

Nous utilisons Subversion avec TortoiseSVN. Ça marche bien. La dernière fois que nous avons regardé Git (il y a six mois?), Les outils Windows n'étaient pas encore là. Perforce (http://www.perforce.com) est la meilleure solution commerciale que j'ai utilisée.

Assurez-vous de bien comprendre les différences entre le contrôle de révision distribuée (Git) et Subversion et les autres systèmes de contrôle de révision traditionnels. Ils ne sont pas les mêmes.

GitSvnComparison Git For Designers

Si vous travaillez sur des sites PHP, vous pouvez créer des fichiers tar du repo et de les expédier à un serveur de test pour les tests. Une fois que vous avez vérifié que le site fonctionne, vous pouvez envoyer ce fichier tar sur le site en ligne.

+0

Les "différences" spécifiées sur la page wiki auxquelles vous faites référence ne sont pas vraiment vraies selon http://svnvsgit.com/. Certains d'entre eux au moins. – bahrep

0

Si vous voulez travailler à partir de Windows, je vous recommande également de jeter un oeil à Bazaar, qui a de bons outils d'interface utilisateur sur toutes les plateformes (y compris Windows). Une bonne chose à ce sujet est que vous pouvez facilement mettre en place une branche de suivi et travailler localement localement hors ligne/branchement local, ce qui est une sorte de modèle hybride distribué/centralisé. Cela peut sembler assez bizarre au début, mais c'est en fait très utile si votre équipe est petite. Vous pouvez toujours utiliser la version centrale pour votre serveur de développement, et tag/miroir de celui-ci sur le site en direct; tandis que chacun de vos développeurs travaille sur des copies locales et les pousse sur le serveur de développement.

1

Mercurial serait un excellent choix. Avec les machines de développement basées sur Windows, vous obtenez un meilleur support et des outils que git, mais vous obtenez un système plus flexible que subversion.

Sur notre installation, nous servons les dépôts via apache with mod_wsgi, qui a été facile à configurer, et nous a bien servi.

Pour le déploiement, je vous conseille de regarder le mercurial hooks si vous le voulez faire automatiquement.