web-dev-qa-db-fra.com

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 réseau déconnecté du réseau. Une autre victoire IMO est la façon dont les ajouts/extractions sont gérés. Plus de points sont les bienvenus! Nous avons aussi environ 10-20 devs au total.

85
Justin Bozonier

Le code source de l’interprète Perl 5 est en train de passer de Perforce à la conversion en git. Peut-être que Sam Vilain's git-p4raw importateur est d’intérêt.

Dans tous les cas, l’un des gains majeurs que vous obtiendrez sur tous les VCS centralisés et les plus distribués est également brutal rapidité. Vous ne pouvez pas imaginer à quel point il est libéralisant de disposer de l'historique du projet dans son intégralité, quelques fractions de fraction de seconde, avant de l'avoir expérimenté. Même la génération d'un journal de validation de l'historique complet du projet incluant un diff complet pour chaque validation peut être mesurée en fractions de seconde. Git est si rapide que ton chapeau s'envolera. Les VCS qui doivent aller-retour sur le réseau n'ont tout simplement aucune chance de se faire concurrence, même sur une liaison Gigabit Ethernet.

De plus, avec git, il est très facile de sélectionner avec soin les commits, ce qui permet de modifier les modifications apportées à votre copie de travail (ou même au sein d’un même fichier) sur plusieurs commits - et entre différentes branches si vous en avez besoin. Cela vous permet de prendre moins de notes mentales lorsque vous travaillez. Vous n'avez pas besoin de planifier votre travail avec autant de soin, de décider dès le départ des modifications à apporter et de reporter tout ce qui vous est demandé. Vous pouvez simplement apporter les modifications que vous souhaitez au fur et à mesure qu'elles se produisent, tout en les démêlant - presque toujours assez facilement - au moment de la validation. La cachette peut être d'une très grande aide ici.

J'ai constaté qu'ensemble, ces faits m'obligent à faire naturellement beaucoup plus de commits plus ciblés qu'auparavant. Cela rend non seulement votre historique généralement plus utile, mais est particulièrement bénéfique pour les outils à valeur ajoutée tels que git bisect .

Je suis sûr qu'il y a plus de choses auxquelles je ne peux pas penser maintenant. Un problème avec la proposition de vendre votre équipe sur git est que de nombreux avantages sont interdépendants et se jouent mutuellement, comme je l’ai indiqué plus haut, de sorte qu’il est difficile de simplement regarder une liste de fonctionnalités et d’avantages de git et de déduire comment vont changer votre flux de travail, et quels changements vont être de véritables améliorations. Vous devez en tenir compte et vous devez également le signaler explicitement.

75

J'utilise Perforce au travail. J'utilise aussi Git parce que je voudrais quand même une forme de contrôle de version lorsque je travaille sur du code et que je ne peux pas me connecter au serveur. Non, réconcilier le travail hors connexion n'est tout simplement pas la même chose. Voici où j'ai trouvé que git était un grand avantage:

  1. Vitesse de branchement - git prend quelques secondes au plus.
  2. Conflits - La résolution automatique de P4Merge a détruit une fois une semaine de travail. Depuis lors, je préfère résoudre à la main lors de la fusion. Quand Git m'informe d'un conflit, c'est en fait un conflit. Le reste du temps, git résout le problème correctement et je gagne un temps fou.
  3. Suivi des fusions - Si vous avez une branche qui reçoit en permanence des fusions de deux autres branches, vous savez quel mal à la tête cela peut être avec forcément. Avec git, le mal de tête est minimisé car le résultat d'une fusion dans git est en fait un nouveau commit qui sait qui sont ses ancêtres.
  4. Autorisations - J'ai oublié le nombre de fois où j'ai essayé de travailler sur un fichier, mais je n'ai pas pu car celui-ci n'a pas été extrait dans Perforce. Si vous avez travaillé avec XCode (ou un éditeur ne disposant pas d'un plug-in Perforce SCM solide) hors ligne, vous savez à quel point cela peut être irritant. Je n'ai pas à me soucier de ça avec Git. Je fais mes modifications. Git ne m'arrête pas et les trace en arrière-plan.
  5. Garder l’arbre principal en ordre - Avec git, je peux trier mes commits et ranger le code afin que l’histoire paraisse belle et ordonnée. Aucune de ces "vérifications dans ce fichier car il était censé faire partie de la vérification précédente" ordures. Je fais du squash comme ça, parce qu'ils n'aident personne.
  6. Mise en cache - Votre serveur perforce doit être à la version 2010.1 ou ultérieure pour utiliser la commande p4 shelve.
  7. Création de correctifs - Facile à faire dans git. Je ne sais pas si c'est possible dans Perforce sans utiliser la ligne de commande.
  8. Envoi de correctifs depuis l'interface graphique - encore une fois, c'est git qui gagne ici.
  9. Espace disque - Avec forcément, chaque branche est une copie. Cela signifie que si votre arbre source est énorme, votre espace disque est rapidement consommé. Cela ne compte même pas l'espace supplémentaire une fois que vous commencez à construire. Pourquoi même avoir un lien entre les branches et l'espace disque? Avec git, vous pouvez avoir 100 branches et une seule branche à la fois. Si vous voulez spécifiquement travailler sur deux versions simultanément, vous pouvez cloner, faire votre travail, puis supprimer un clone si vous le souhaitez, sans rien perdre.
  10. Si vous utilisez XCode4, la prise en charge obligatoire a été supprimée et la prise en charge de git est désormais intégrée. Si vous utilisez un travail multiplate-forme comme moi, cela compte beaucoup. Avec Visual Studio, vous pouvez utiliser des extensions git. Avec force, il est également 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. Recherche de l'archivage défectueux (ou règles de bissect) - Avez-vous déjà essayé d'effectuer une recherche binaire avec force pour déterminer où un bogue avait été introduit? Assez ennuyeux, oui? Encore plus de tracas quand il y a eu des intégrations d'autres branches au milieu. Pourquoi? Parce qu'il n'y a pas d'automatisation pour de telles tâches. Vous devez écrire votre propre outil pour parler forcément et vous n’avez généralement pas le temps. Avec git, vous lui donnez les points de départ (le "bon" et le "mauvais") et automatise la recherche pour vous. Mieux encore, si vous avez un script capable d'automatiser le processus de construction et de test, vous pouvez connecter Git Up au script et l'ensemble du processus de recherche de l'archivage est automatisé. C'est ainsi que cela devrait être.
  12. Suivi des modifications dans les refactors - Essayez de diviser BigClass en SmallClass1 et SmallClass2. Pour Perforce, BigClass a maintenant cessé d'exister et deux nouvelles classes (SmallClass1 et SmallClass2 ont rejoint l'arbre source). Pour Perforce, il n'y a pas de relation entre BigClass et SmallClass1 et SmallClass2. Git, en revanche, est assez intelligent pour savoir que x% de BigClass est maintenant dans SmallClass1 et y% de BigClass dans SmallClass2 et que BigClass a cessé d'exister. Maintenant, du point de vue de quelqu'un qui examine les changements dans plusieurs branches, vous me dites quelle approche vous sembleriez la plus utile - Git ou Perforce. Personnellement, je préfère l'approche de Git, car elle reflète plus précisément l'évolution réelle du code. Git est capable de le faire car il suit le contenu du fichier et non le fichier lui-même.
  13. Centralisé ou décentralisé: Git est un DVCS lorsque la force est centralisée. Un VCS centralisé ne peut pas être décentralisé ultérieurement, mais un DVCS (en particulier git) peut être centralisé. Il existe plusieurs produits qui ajoutent un contrôle d'accès très fin à git, si cela est nécessaire à l'entreprise. Personnellement, je choisirais un système qui me donne une plus grande flexibilité à long terme.
  14. Mappages de branches: si vous souhaitez créer des branches directement dans Perforce, vous devez créer un mappage de branche. Il y a des raisons à cela, mais elles sont liées à la manière dont Perforce conceptualise une branche. En tant que développeur ou équipe, cela signifie simplement une étape supplémentaire dans le flux de travail, ce que je ne considère pas du tout comme efficace.
  15. Partage du travail entre les équipes: avec Perforce, vous ne pouvez pas diviser une soumission. L'équipe A travaille sur la fonctionnalité A. L'équipe B sur la fonctionnalité B. L'équipe C travaille sur les corrections de bugs. À présent, les équipes A et B doivent résoudre de nombreux bugs pour implémenter leurs fonctionnalités. La seule chose à faire est qu’ils n’étaient pas si disciplinés lorsqu’ils appliquaient leurs modifications (probablement parce qu’ils se pressaient dans les délais) et que leurs "corrections de bugs" faisaient partie de propositions plus volumineuses qui contenaient également de nouveaux éléments en ce qui concerne le contrôle de version sur leur version. les branches sont concernées. Cependant, l’équipe C effectue actuellement une publication ponctuelle et aimerait obtenir les corrections de bogues des autres équipes. S'ils utilisaient Git, l'équipe C pourrait choisir les modifications pertinentes des autres équipes, les séparer et ne prendre que ce dont ils avaient besoin sans se soucier de l'introduction de fonctionnalités partiellement implémentées. Avec Perforce, l’équipe C peut récupérer les fichiers affectés mais doit séparer les modifications pertinentes à l’aide d’un processus beaucoup plus manuel.
  16. Changement de plate-forme - Si, pour une raison quelconque, vous décidez de changer de plate-forme, avec Perforce, vous êtes à la merci de Perforce.com et de la disponibilité des outils pour la plate-forme de votre choix.
  17. Passage dans le futur moteur de contrôle de source X - Si vous décidez de modifier ce que vous utilisez pour le contrôle de source, extraire votre historique de contrôle de source de Perforce et le déplacer vers un nouveau système X sera un cauchemar, car il s'agit d'une source fermée et la meilleure vous pouvez faire c'est deviner - juste Google pour que la migration de Perforce vers Git donne une idée de ce dont je parle. Au moins avec Git, son code source ouvert, il élimine donc beaucoup de conjectures.

Eh bien, ce sont mes 2 cents. À la défense de Perforce, je dois dire que leurs règles de support client, tout comme leur outil Time Lapse View. Je ne sais pas comment obtenir une vue en accéléré avec git. Mais pour la commodité et le temps économisé, j'irais avec git n'importe quel jour.

84
Carl

Il me faudrait beaucoup de conviction pour passer de force à autre chose. Dans les deux sociétés que j'ai utilisées, c'était plus que suffisant. C'étaient deux entreprises avec des bureaux disparates, mais les bureaux ont été mis en place avec une infrastructure importante, de sorte qu'il n'était pas nécessaire de disposer de fonctionnalités disjointes/déconnectées.

Combien de développeurs parlez-vous de basculer?

La vraie question est la suivante: qu'est-ce qui ne répond forcément pas aux besoins de votre organisation que git peut fournir? Et de même, quelles sont les faiblesses de git par rapport à celles de force? Si vous ne pouvez pas y répondre vous-même, demander ici ne vous aidera pas. Vous devez trouver une analyse de rentabilisation pour votre entreprise. (par exemple, le coût total de possession est peut-être plus faible (ce qui inclut une perte de productivité au stade de l'apprentissage intermédiaire, des coûts administratifs plus élevés (au moins au début), etc.)

Je pense que vous allez avoir une vente difficile - il est forcément un très bon joueur à remplacer. C'est une évidence si vous essayez de démarrer pvcs ou ssafe.

46
Tim

Je pense que pour garder les gens heureux pendant/après le changement de poste, une des choses à savoir plus tôt est à quel point une succursale locale peut être privée dans Git et quelle marge de manœuvre lui donne la liberté de faire des erreurs. Demandez-leur à tous de se cloner quelques branches privées du code actuel, puis de s’y perdre, d’expérimenter. Renommez des fichiers, archivez des éléments, fusionnez des éléments d’une autre branche, rembobinez l’historique, modifiez un jeu de modifications par-dessus un autre, etc. Montrez que même les pires accidents locaux n'ont pas de conséquences pour leurs collègues. Ce que vous voulez, c'est une situation dans laquelle les développeurs se sentent en sécurité, afin qu'ils puissent apprendre plus rapidement (puisque Git a une courbe d'apprentissage abrupte qui est importante), puis éventuellement pour être plus efficaces en tant que développeurs.

Lorsque vous essayez d’apprendre à utiliser un outil centralisé, vous aurez évidemment peur de créer des erreurs qui pourraient poser problème à d’autres utilisateurs du référentiel. La peur de l’embarras suffit à décourager les gens de faire des expériences. Même avoir un référentiel spécial "formation" n'aide pas, car les développeurs vont inévitablement rencontrer une situation dans le système de production qu'ils n'ont jamais vue pendant la formation, et ils sont donc de nouveau inquiets.

Mais la nature distribuée de Git fait disparaître cela. Vous pouvez essayer n'importe quelle expérience dans une branche locale, et si tout se passe mal, il suffit de jeter la branche et personne ne doit le savoir. Étant donné que vous pouvez créer une branche locale de n'importe quoi, vous pouvez reproduire un problème que vous voyez avec le référentiel réel, sans risquer de "casser la construction" ou de vous ridiculiser. Vous pouvez absolument tout vérifier, dès que vous l'avez fait, vous ne devez pas essayer de travailler par lots dans de petits paquets ordonnés. Ainsi, non seulement les deux modifications majeures de code que vous avez passées quatre heures aujourd'hui, mais également les correctifs de construction dont vous vous souveniez à mi-chemin, ainsi que l'erreur d'orthographe dans la documentation que vous avez repérée en expliquant quelque chose à un collègue, etc. Et si les modifications majeures sont abandonnées parce que le projet change de direction, vous pouvez choisir le correctif de construction et la faute d’orthographe de votre branche et les conserver sans tracas.

15
tialaramex

Quelles sont les fonctionnalités utilisées par Perforce?

  • Plusieurs espaces de travail sur une seule machine
  • Listes de modifications numérotées
  • Branches de développeur
  • Intégration avec IDE (Visual Studio, Eclipse, SlickEdit, ...)
  • Beaucoup de variantes de construction
  • Espaces de travail composites
  • Intégrer certains correctifs mais pas d'autres
  • etc

Je demande parce que si tout ce que les gens font est obtenir et mettre à partir de la ligne de commande, git a couvert, et il en va de même pour tous les autres RTS.

9
Thomas L Holaday

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

Cela dit, si les utilisateurs sont habitués à un client d'interface graphique pour le contrôle de source, ils ne seront pas impressionnés par git. Actuellement, le seul client complet est la ligne de commande.

9
Ryan

Apparemment GitHub propose désormais des cours de formation git aux entreprises . Quoth leur blog à ce sujet :

Au cours des dernières semaines, je me suis rendu plusieurs fois sur le campus de Google pour y former les androïdes de Git. Shawn Pearce m'a demandé (vous le connaissez peut-être de sa gloire Git et EGit/JGit - il est le héros qui prend en charge la maintenance de Junio) pour l'aider à former les ingénieurs de Google travaillant sur Andriod en transition de Perforce à Git, donc Android pourrait être partagé avec les masses. Je peux vous dire que j'étais plus qu'heureux de le faire.

[…]

Logical Awesome est maintenant offre officielle ce type de service de formation personnalisé pour toutes les entreprises, où nous pouvons aider votre organisation en matière de formation et de planification si vous envisagez de passer également à Git.

L'accent est à moi.

6

Nous utilisons Git depuis quelque temps. Récemment, le disque dur de notre serveur Git est tombé en panne et nous ne pouvions pas revenir à l'état le plus récent. Nous avons réussi à revenir à l'état de quelques jours. Quand le serveur a été sauvegardé. Tout le monde dans l'équipe a tiré/poussé leurs changements et voila, le serveur est revenu à son état actuel.

4
Prakash Nadar

J'utilise Perforce depuis longtemps et récemment, j'ai aussi commencé à utiliser GIT. Voici mon avis "objectif":

Caractéristiques Perforce:

  1. Les outils de l'interface graphique semblent être plus riches en fonctionnalités (par exemple, affichage en accéléré, graphique de révision)
  2. Vitesse lors de la synchronisation avec la révision principale (pas de surcharge de transfert de l'historique complet)
  3. L'intégration Eclipse/Visual Studio est vraiment agréable
  4. Vous pouvez développer plusieurs fonctionnalités dans une même branche par liste de modifications (je ne suis toujours pas sûr à 100% s'il s'agit d'un avantage sur GIT)
  5. Vous pouvez "espionner" ce que font les autres développeurs - quel type de fichiers ils ont extrait.

Caractéristiques GIT:

  1. J'ai eu des impressions que la ligne de commande GIT est beaucoup plus simple que Perforce (init/clone, add, commit. Aucune configuration d'espaces de travail complexes)
  2. Vitesse lors de l'accès à l'historique du projet après une validation (entraîne un coût de copie de l'historique complet lors de la synchronisation)
  3. Mode hors connexion (les développeurs ne se plaindront pas qu'un serveur P4 inaccessible leur interdira de coder)
  4. Créer une nouvelle branche est beaucoup plus rapide
  5. Le serveur "principal" GIT n'a pas besoin de beaucoup de To, car chaque développeur peut avoir son propre sandbox local
  6. GIT is OpenSource - pas de frais de licence
  7. Si votre société contribue également aux projets OpenSource, le partage de correctifs est beaucoup plus simple avec GIT

Globalement, pour les projets OpenSource/Distributed, je recommanderais toujours GIT, car il s’agit plus d’une application P2P et tout le monde peut participer au développement. Par exemple, je me souviens que lorsque je faisais du développement à distance avec Perforce, je synchronisais des projets de 4 Go sur un lien de 1 Mbps une fois par semaine. Beaucoup de temps a simplement été perdu à cause de cela. Nous devions également configurer un VPN pour le faire.

Si vous avez une petite entreprise et que le serveur P4 sera toujours opérationnel, je dirais que Perforce est également une très bonne option.

4
Hans Solo

Je pense que la seule chose sur laquelle GIT gagne, c’est sa capacité à "conserver les fins de ligne" sur tous les fichiers, alors qu’il semble forcément insister pour les traduire au format Unix, Dos/Windows ou MacOS9 ("\ n", "\ r\n "ou"\r).

C’est un réel problème si vous écrivez des scripts Unix dans un environnement Windows ou un environnement OS mixte. Il n'est même pas possible de définir la règle extension par fichier. Par exemple, il convertit les fichiers .sh, .bash, .unix au format Unix et convertit les fichiers .ccp, .bat ou .com au format Dos/Windows.

Dans GIT (je ne sais pas si c'est par défaut, une option ou la seule option), vous pouvez le configurer pour "conserver les fins de ligne". Cela signifie que vous pouvez modifier manuellement les fins de ligne d'un fichier, puis GIT laissera ce format tel quel. Cela me semble être le moyen idéal de faire les choses et je ne comprends pas pourquoi ce n'est pas une option avec Perforce.

La seule façon d’obtenir ce comportement consiste à marquer les fichiers en tant que fichiers binaires. À mon avis, ce serait un vilain stratagème de contourner une fonctionnalité manquante. En plus d'être fastidieux d'avoir à faire sur tous les scripts, etc., il casserait probablement la plupart des diffs, etc.

La "solution" que nous avons choisie pour le moment consiste à exécuter une commande sed pour supprimer tous les retours chariot des scripts chaque fois qu'ils sont déployés dans leur environnement Unix. Cela n’est pas non plus idéal, d’autant plus que certains d’entre eux sont déployés dans des fichiers WAR et que la ligne sed doit être réexécutée une fois décompressée.

C’est quelque chose qui, selon moi, donne un avantage considérable à GIT, et qui, à mon avis, n’a pas été mentionné plus haut.

EDIT: Après avoir utilisé Perforce un peu plus longtemps, j'aimerais ajouter quelques commentaires:

A) Quelque chose me manque vraiment dans Perforce, c’est un diff clair et d’instance, y compris les fichiers modifiés, supprimés et ajoutés. Ceci est disponible dans GIT avec le git diff commande, mais dans Perforce, les fichiers doivent être extraits avant que leurs modifications ne soient enregistrées, et même si vos éditeurs principaux (comme Eclipse) sont configurés pour extraire automatiquement les fichiers lorsque vous les modifiez, vous pouvez parfois les modifier autres moyens (bloc-notes, commandes unix, etc.). Et les nouveaux fichiers ne semblent pas du tout être ajoutés automatiquement, même en utilisant Eclipse et p4Eclipse, ce qui peut être assez gênant. Donc, pour trouver tous les changements, vous devez exécuter un "Diff contre ..." sur tout l'espace de travail, qui prend d'abord un certain temps à exécuter et qui, en second lieu, inclut toutes sortes de choses non pertinentes, sauf si vous configurez des listes d'exclusion très compliquées. ce qui m'amène au point suivant.

B) Dans GIT, je trouve le .gitignore très simple et facile à gérer, à lire et à comprendre. Cependant, l’espace de travail qui ignore les listes d’exclusion/exclusion configurables dans Perforce semble difficile à manier et inutilement complexe. Je n'ai pas réussi à obtenir des exclusions lorsque les caractères génériques fonctionnent. Je voudrais faire quelque chose comme

-//Server/mainline/.../target/...   //Svend_Hansen_Server/.../target/...

Pour exclure tous les dossiers cibles de tous les projets dans Server/Mainline. Cependant, cela ne semble pas fonctionner comme je l'aurais prévu, et j'ai fini par ajouter une ligne pour chaque projet comme:

-//Server/mainline/projectA/target/...  //Svend_Hansen_Server/projectA/target/...
-//Server/mainline/projectB/target/...  //Svend_Hansen_Server/projectB/target/...
...

Et des lignes similaires pour les dossiers bin, les fichiers .classpath et .projet, etc.

C) En réalité, il existe des listes de modifications plutôt utiles. Cependant, supposons que je fasse un groupe de modifications, que je les vérifie toutes et que je les mette dans une liste de modifications, puis que je travaille sur autre chose avant de soumettre cette liste de modifications. Si je modifie ultérieurement l'un des fichiers inclus dans la première liste de modifications, ce fichier sera toujours dans cette liste de modifications et je ne pourrai plus soumettre la liste de modifications en supposant qu'elle ne contienne que les modifications que j'ai ajoutées à l'origine (bien qu'elle seront les mêmes fichiers). Dans GIT, si vous ajoutez un fichier et qu’ils y apportent d’autres modifications, elles n’auront pas été ajoutées (et seront toujours affichées dans un fichier git diff et vous ne pourrez pas valider le fichier sans ajouter d’abord les nouvelles modifications. Bien sûr, cela n’est pas utile de la même manière que la liste de modifications peut être car vous n’avez qu’un ensemble de fichiers ajoutés, mais dans GIT, vous pouvez simplement valider les modifications, car cela ne les pousse pas réellement. Vous pouvez les utiliser pour d’autres modifications avant de les appliquer, mais vous ne pourrez pas appliquer d’autres éléments que vous ajouterez ultérieurement, sans appliquer également les modifications précédentes.

3
Svend Hansen

La principale différence entre Perforce et git (et la plus citée) est leur traitement respectif d’énormes fichiers binaires.

Comme par exemple dans ce blog d'un employé d'une entreprise de développement de jeux vidéo: http://corearchitecture.blogspot.com/2011/09/git-vs-perforce-from-game-development.html

Cependant, l’important est que la différence de vitesse entre git et forforce, lorsque vous avez un énorme référentiel de 6 Go, contenant tout, de la documentation à chaque binaire jamais construit (et enfin, oh oui! L’historique des sources), provient généralement du fait que les grandes entreprises ont tendance à exécuter Perforce, et qu’elles ont donc été configurées pour transférer toutes les opérations importantes à la gigantesque banque de serveurs située au sous-sol.

Cet avantage important de la part de Perforce ne provient que d'un facteur qui n'a absolument rien à voir avec Perforce, le fait que la société qui l'exploite puisse se permettre d'acheter ladite banque de serveurs.

Et, de toute façon, à la fin, Perforce et git sont des produits différents. Git a été conçu pour être uniquement un VCS, et il le fait beaucoup mieux que Perforce (dans la mesure où il a plus de fonctionnalités, qui sont généralement plus faciles à utiliser, en particulier, pour reprendre les mots d'un autre, le fait de créer des branches dans Perforce revient à effectuer des tâches à cœur ouvert. chirurgie, elle ne devrait être effectuée que par des experts: P) ( http://stevehanov.ca/blog/index.php?id=5 )

Tous les autres avantages dont bénéficient les entreprises qui utilisent Perforce proviennent du simple fait que Perforce n’est pas uniquement un VCS, c’est aussi un serveur de fichiers, ainsi que de nombreuses autres fonctionnalités permettant de tester les performances des versions, etc.

Enfin: Git étant open-source et beaucoup plus flexible pour démarrer, il ne serait pas si difficile de le corriger pour décharger des opérations importantes sur un serveur central, exécutant des monticules de matériel coûteux.

3
pjnlsn

Je n'ai aucune expérience avec Git, mais j'ai avec Mercurial, qui est également un VCS distribué. Cela dépend vraiment du projet, mais dans notre cas, un VCS distribué convenait parfaitement au projet car il éliminait essentiellement les versions cassées fréquentes.

Je pense que cela dépend vraiment du projet, car certains conviennent mieux à un VCS client-serveur, et d'autres à un système distribué.

2
Terminus