85 votes

GIT vs. Perforce - Deux VCS entreront ... l'un quittera

Je suis donc en train de faire vendre GIT au travail. La première chose dont j'ai besoin est de convaincre tout le monde que GIT est meilleur que ce à quoi il est déjà habitué. Nous utilisons actuellement Perforce. Quelqu'un d'autre passe une vente similaire? Des bons liens / conseils?

L’une des grandes victoires est que nous pouvons travailler avec ce logiciel déconnecté du réseau. Une autre victoire IMO est la façon dont les ajouts / les retraits sont gérés. Plus de points sont les bienvenus! Nous avons aussi environ 10-20 devs au total.

84voto

C.. Points 10739

J'utilise Perforce au travail. J'ai aussi l'utilisation de Git parce que je voudrais encore une certaine forme de contrôle de version, quand je travaille sur le code et ne peut pas se connecter au serveur. Non, de réconcilier travailler hors connexion n'est tout simplement pas la même. Voici où j'ai trouvé de git pour être un grand avantage:

  1. La ramification de la vitesse - git prend que quelques secondes tout au plus.
  2. Conflits - P4Merge de l'auto de résoudre détruit une semaine de travail à la fois. Depuis lors, je préfère régler par la main lors de la fusion. Lorsque Git me demande à propos d'un conflit, il est en fait un conflit. Le reste du temps, git résout les choses correctement et je enregistrer des tas de fois.
  3. Garder la trace de fusions - Si vous avez une branche qui est continuellement la réception de fusions de deux autres branches, vous savez ce qu'est un mal de tête ce peut être avec perforce. Avec git, le mal de tête est réduite car le résultat d'une fusion de git est en fait un nouveau commit qui sait qui sont ses ancêtres.
  4. Autorisations - j'ai perdu la trace du nombre de fois où j'ai essayé de travailler sur un fichier, mais ne pouvait pas parce qu'il n'a pas été vérifiée dans Perforce. Si vous avez travaillé avec XCode (ou n'importe quel éditeur qui n'a pas une solide SCM Perforce plugin) en mode hors connexion, vous savez combien irritant, cela peut avoir. Je n'ai pas à vous soucier de qui avec Git. Je fais mes changements. Git ne pas m'arrêter et de pistes dans le fond.
  5. En gardant l'arbre principal de l'ordre, Avec git, je peux trier mes commits et rangé le code de sorte que l'histoire a l'air sympa et bien rangé. Rien de tout cela "vérification dans ce fichier, car il était censé être une partie de la précédente checkin" de la foutaise. Je squash s'engage comme ça, parce qu'ils aident à personne.
  6. Accrocher Votre serveur perforce doit être la version 2010.1 ou plus récent pour utiliser le p4 débarrasser de commande.
  7. Créer des correctifs - Facile à faire dans git. Ne sais pas si c'est possible dans Perforce sans l'aide de la ligne de commande.
  8. Diffusion des correctifs à partir de la GUI - encore une fois, git victoires ici.
  9. Espace disque - Avec perforce, chaque branche est une copie. Cela signifie que si votre source est un arbre énorme, votre espace disque se mange rapidement. Ce n'est même pas de comptage de l'espace supplémentaire une fois que vous commencez à construire. Pourquoi même avoir un lien entre branches et de l'espace disque? Avec git, vous pouvez avoir 100 succursales et une seule branche à la fois jamais existe. Si vous souhaitez travailler sur les deux versions en même temps, vous pouvez cloner, faites votre travail, puis se débarrasser d'un clone si vous le souhaitez, sans rien perdre.
  10. Si vous êtes sur XCode4, perforce de soutien a été abandonné et git prise en charge est désormais intégré. Si vous faites de la croix-plate-forme de travail comme je le fais, cela compte beaucoup. Avec Visual Studio, vous pouvez utiliser git extensions. Avec perforce, il est tout aussi beurk sur les deux Systèmes d'exploitation. Eh bien, peut-être un peu plus sur mac maintenant avec XCode4 sur la scène.
  11. Trouver le fautif de l'archivage (ou, git coupent les règles) - Jamais essayé de faire une recherche binaire avec perforce de comprendre où un bug a été introduit? Assez embêtant, oui? Encore plus de tracas quand il y a eu intègre d'autres branches du moyen. Pourquoi? Car il n'y a pas d'automatisation pour de telles tâches. Vous devez écrire votre propre outil de parler à perforce et vous n'avez généralement pas le temps. Avec git, vous donner les points de départ (le "bon" et le "mauvais") et il automatise la recherche pour vous. Encore mieux, si vous avez un script qui permet d'automatiser la fabrication et les processus de test, vous pouvez hook git up pour le script et l'ensemble du processus de trouver le check in est automatisé. C'est la façon dont il devrait être.
  12. Le suivi des changements au travers refactors - Essayez de diviser les BigClass en SmallClass1 et SmallClass2. Pour Perforce, BigClass a maintenant cessé d'exister et deux nouvelles classes (SmallClass1 et SmallClass2 ont rejoint la source de l'arbre). Pour Perforce, il n'y a aucun rapport entre BigClass et SmallClass1 et SmallClass2. Git, d'autre part, est assez intelligent pour savoir que x% de BigClass est maintenant dans SmallClass1 et y% de BigClass est dans SmallClass2 et que BigClass a cessé d'exister. Maintenant, du point de vue de quelqu'un qui est en train d'examiner les changements à travers de multiples branches, tu me dis que l'approche que vous trouverez utile - Git ou Perforce. Personnellement, je préfère Git de l'approche parce qu'elle reflète plus fidèlement le réel changement dans le code. Git est capable de faire cela, car il permet de suivre le contenu dans le fichier et non le fichier lui-même.
  13. Centralisée ou décentralisée: Git est un DVCS système tout perforce est centralisé. Une centralisation de la VCS ne peut pas être décentralisés plus tard, mais un DVCS (surtout git) peut être centralisée. Il existe plusieurs produits qui ajoutent de la très fine de contrôle d'accès git, si c'est quelque chose que les besoins de l'entreprise. Personnellement, j'irais avec un système qui me donne une plus grande flexibilité dans le long terme.
  14. Mappages de branche: Si vous voulez faire de la ramification de la droite dans Perforce, vous avez besoin de créer une direction de la cartographie. Il y a des raisons pour cela, mais ils sont liés à la façon dont Perforce conceptualise une branche. En tant que développeur ou une équipe, cela signifie tout simplement une étape de plus dans le flux de travail, que je ne considère pas efficace du tout.
  15. Partager le travail entre les équipes: Avec Perforce, vous ne pouvez pas briser une soumission. L'équipe est Un travail sur la caractéristique A. l'Équipe B de B. l'Équipe C de travaux sur des corrections de bugs. Maintenant, les Équipes A Et B ont à résoudre un tas de bugs dans le but de mettre en œuvre leurs caractéristiques. Le seul truc, c'est qu'ils n'étaient pas si disciplinés lors de la validation de leurs modifications (probablement parce qu'ils sont de se précipiter à une échéance) et donc de leur "corrections de bugs" sont des pièces de plus que les mémoires contiennent également de nouvelles choses aussi loin que le contrôle de version sur leurs branches sont concernées. Cependant, l'Équipe C est maintenant un point de presse et souhaitez obtenir les correctifs de bogues des autres équipes. Si ils ont été à l'aide de Git, l'Équipe de C pourrait écrémer les autres équipes de changements, de les séparer et de prendre uniquement ce dont ils ont besoin sans se soucier de l'introduction de toute partiellement mise en œuvre de fonctionnalités. Avec Perforce, l'Équipe C pouvez obtenir les fichiers concernés, mais aurait pour séparer les changements pertinents à l'aide d'une beaucoup plus de processus manuel.
  16. Évolution de la plate - Si, pour quelque raison que ce soit, dans l'avenir, vous décidez de changer votre plate-forme de choix, avec Perforce, vous êtes à la miséricorde de Perforce.com et la disponibilité des outils pour la plate-forme de votre choix.
  17. Changer à l'avenir incroyable source de moteur de contrôle X - Si vous décidez de pour modifier ce que vous utilisez pour le contrôle de source, de l'extraction de votre source le contrôle de l'histoire de Perforce et en le déplaçant vers le nouveau système X est va être un cauchemar, parce qu'elle est fermée à la source et le meilleur que vous pouvez faire est de deviner - seulement Google pour Perforce à Git de migration pour obtenir une idée de ce que je parle. Au moins avec Git, son ouverture d' source, donc il élimine beaucoup de la conjecture impliquée.

Eh bien, c'est mes 2 cents. Dans Perforce de la défense, je dois dire que leur soutien à la clientèle règles et le fait de leur délai d'outils de la Vue. Je ne sais pas comment obtenir un laps de temps de l'affichage avec git. Mais pour le confort et un gain de temps, j'irais avec git toute la journée.

75voto

Aristotle Pagaltzis Points 43253

L'interpréteur Perl 5 code source est actuellement en cours à travers les affres de la conversion de Forcément de git. Peut-être que Sam Vilain de l' git-p4raw importateur est de l'intérêt.

En tout cas, l'une des grandes victoires que vous allez avoir sur chaque centralisée VCS et le plus distribué aussi est cru, formation de cloques de la vitesse. Vous ne pouvez pas imaginer comment il est libérateur pour l'ensemble de l'historique du projet à portée de main, de simples fractions de fractions de seconde, jusqu'à ce que vous l'avez connu. Même générer un journal de validation de l'ensemble de l'historique du projet, qui comprend un diff complet pour chaque commit peut être mesurée en une fraction de seconde. Git est tellement rapide votre chapeau s'envolera. Vcs qui doivent aller-retour sur le réseau n'ont tout simplement aucune chance de rivaliser, même pas sur une liaison Gigabit Ethernet.

Aussi, git, il est très facile d'être soigneusement sélectif lors de la prise s'engage, permettant ainsi des changements dans votre copie de travail (ou même au sein d'un seul fichier) à répartir sur plusieurs engage – et à travers les différentes branches si vous avez besoin que. Cela permet de faire moins de notes mentales tout en travaillant – vous n'avez pas besoin de planifier votre travail avec tant de soin, de décider de l'avant jusqu'à ce que l'ensemble des modifications que vous aurez s'engager et faire en sorte de repousser quelque chose d'autre. Vous pouvez simplement faire toutes les modifications que vous souhaitez comme ils se produisent à vous, et encore à débrouiller eux – presque toujours assez facilement quand il est temps de s'engager. Le coffre peut être d'une très grande aide ici.

J'ai trouvé que l'ensemble de ces faits me faire naturellement, de faire beaucoup plus et beaucoup plus ciblée s'engage qu'avant j'ai utilisé git. Cela, à son tour, non seulement rend votre histoire en général plus utile, mais il est particulièrement bénéfique pour ajouter de la valeur à des outils comme git bisect.

Je suis sûr qu'il ya plus de choses que je ne peux pas penser de la droite maintenant. Un problème avec la proposition de la vente de votre équipe sur git, c'est que de nombreux avantages sont liés entre eux et jouent les uns les autres, comme je l'ai signalé ci-dessus, tel qu'il est difficile de regarder simplement une liste de caractéristiques et les avantages de git et en déduire comment ils vont changer votre flux de travail, et quels sont les changements vont être authentiques améliorations. Vous avez besoin de prendre cela en compte, et vous devez également explicitement point.

46voto

Tim Points 13334

Il me faudrait un lot de convaincre de passer de perforce. Dans les deux entreprises, je l'ai utilisé c'était plus que suffisant. Ceux qui étaient à la fois des entreprises par différents bureaux, mais les bureaux ont été mis en place avec l'abondance de l'infrastructure, donc il n'y a pas besoin d'avoir les disjoint/déconnecté fonctionnalités.

Combien de développeurs parlez-vous de changer?

La vraie question est - ce qu'il est sur perforce qui ne répond pas aux besoins de votre organisation qui git? Et de même, que les faiblesses ne git par rapport à perforce? Si vous ne pouvez répondre que vous-même, puis en demandant ici n'aide pas. Vous avez besoin de trouver un cas d'entreprise pour votre entreprise. (par exemple, il est peut-être avec le plus faible coût total de possession (qui inclut la perte de productivité pour les intermédiaires phase d'apprentissage, plus admin coûts (au moins initialement), etc.)

Je pense que vous êtes en pour les difficile à vendre - perforce est un assez bon d'essayer de remplacer. Il est une évidence si vous essayez de démarrer hors pvcs ou ssafe.

15voto

tialaramex Points 2351

Je pense en termes de garder les gens heureux, pendant et après ce changement, l'une des choses à faire au début est juste la manière dont une branche locale peut être dans Git, et le degré de liberté que leur donne à faire des erreurs. Obtenez tous cloner eux-mêmes quelques privée branches dans le code actuel, puis aller à l'état sauvage dans il y, en expérimentant. Renommer certains fichiers, vérifier des trucs en, fusionner les choses d'une autre branche, rembobiner l'histoire, rebase un ensemble de changements sur le dessus de l'autre, et ainsi de suite. Montrer comment, même leurs pires accidents localement ont pas de conséquences pour leurs collègues. Ce que vous voulez, c'est une situation où les développeurs se sentir en sécurité, de sorte qu'ils peuvent apprendre plus vite (depuis Git a une courbe d'apprentissage abrupte qui est important) et puis à la fin, de sorte qu'ils sont plus efficaces que les développeurs.

Lorsque vous essayez d'apprendre un outil centralisé, évidemment vous allez être inquiets au sujet de faire de certains de gaffe qui provoque des problèmes pour les autres utilisateurs du référentiel. La peur de l'embarras à elle seule, suffit à décourager les gens de l'expérimentation. Même en ayant un spécial "formation" référentiel n'aide pas, car, inévitablement, les développeurs vont rencontrer une situation dans le système de production qu'ils n'ont jamais vu au cours de la formation, et donc ils sont de retour à inquiétant.

Mais Git de la nature distribuée n'loin avec cette. Vous pouvez essayer de toute expérience dans une branche locale, et si ça se passe mal, il suffit de jeter la direction générale de suite et personne ne doit savoir. Puisque vous pouvez créer une branche locale de quoi que ce soit, vous pouvez reproduire le problème que vous avez vu avec le real live référentiel, mais qui n'ont aucun risque de "casser le build" ou sinon faire un fou de vous-même. Vous pouvez le vérifier absolument tout, dès que vous l'avez fait, pas essayer de lot de travail dans joli petit colis. Ainsi, non seulement les deux principaux changements de code vous avez passé quatre heures aujourd'hui, mais aussi que construire correctif que vous vous rappeliez à mi-chemin à travers, et la faute d'orthographe dans la documentation que vous avez repéré, tout en expliquant quelque chose à un collègue, et ainsi de suite. Et si les changements majeurs sont abandonnés parce que le projet est en train de changer de direction, vous pouvez écrémer la construction et la correction des fautes d'orthographe de votre branche et de garder ceux avec aucun tracas.

9voto

Ryan Points 7035

La commande qui m'a vendu sur git personnellement était une bissectisation . Je ne pense pas que cette fonctionnalité soit disponible dans aucun autre système de contrôle de version pour le moment.

Cela étant dit, si les utilisateurs sont habitués à un client GUI pour le contrôle de source, ils ne seront pas impressionnés par git. À l'heure actuelle, le seul client complet est la ligne de commande.

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