¿Por qué las grandes empresas usan Perforce? [cerrado]

113

Escuché acerca de algunas grandes compañías, por ejemplo, Google, Facebook usan Perforce

¿Hay alguna razón por la cual SVN / Git no pueda reemplazar a Perforce?

usuario34401
fuente
34
¡Escuché que Google usa carpetas con nombre de marca de tiempo en un disco compartido! ;)
FrustratedWithFormsDesigner
10
Solo la unidad compartida usa MapReduce, por lo que son geniales
Paul Stovell
44
Un gran problema será el apoyo. Cuando compra Perforce, está comprando soporte del desarrollador del sistema, algo que podría no obtener de Git.
ChrisF
12
@Anto: ¿A quién le importa lo que dice Linus? El hecho de que sea un desarrollador de kernel brillante no significa que sepa mejor sobre todo en cualquier lugar.
Billy ONeal
55
Recién llegado de la Conferencia de usuarios de Perforce hace 2 semanas, puedo decir que Google usa forzosamente. Reciben más de 10,000 envíos al día en su 1 servidor.
aflat

Respuestas:

83

La justificación es quizás menos relevante de lo que era antes, pero Perforce tiende a funcionar mejor en repositorios grandes que Subversion. Esta es una de las razones por las que Microsoft adquirió una licencia de origen para Perforce para construir Source Depot; El repositorio de NT es un monstruo, y no muchos productos, comerciales o de otro tipo, podrían manejarlo.

Además, al menos en un momento, las herramientas visuales para Perforce eran mucho, mucho mejores que lo que está disponible de fábrica (por así decirlo) con Subversion o Git. Si está utilizando Meld, tal vez esas cosas importen menos de lo que alguna vez lo hicieron, pero todavía hay algunas cosas que Perforce hizo muy bien, incluidas las visualizaciones de ramificación y fusión que, aunque no tengo una memoria detallada de esto. Unos 3 años desde la última vez que toqué Perforce, parecía más sofisticado que, por ejemplo, el enfoque de Github.

Una vez que haya usado Perforce, puede comprender cuáles son sus ventajas en la práctica. Durante mucho tiempo han ofrecido una opción de servidor gratuito para dos usuarios, y dependiendo de los sistemas de administración de código fuente con los que tenga experiencia, es posible que valga la pena el costo de actualización después de que su equipo lo pruebe por un tiempo. Para las tiendas más pequeñas, esto, más los efectos de red de los desarrolladores que lo usaron y les gustó, es la razón por la cual Perforce termina recibiendo usuarios que pagan. Probablemente no haya muchos ganadores y comedores de CTO para vender Perforce en compañías con pequeños equipos de desarrollo, en contraste con los comentarios cínicos de Dmitri, pero se usa en esos lugares.

La mayoría de los proyectos en los que he trabajado fuera de Microsoft pueden ser razonablemente bien atendidos por Git, Mercurial o Subversion, y diría que la mayoría de las empresas para las que he trabajado utilizan una de esas opciones. Pero hay un punto óptimo, generalmente una combinación de tamaño de repositorio, modelo de ramificación y fusión, y experiencia / historial del equipo que lleva a las personas a usar herramientas comerciales. Raramente he visto grandes repositorios de Git, por ejemplo. Esto puede no deberse a ninguna limitación intrínseca de Git; Admito la total ignorancia de eso. Pero en algunos proyectos (como Windows NT) puede haber algunos límites prácticos para las soluciones gratuitas.

JasonTrue
fuente
3
Gracias por proporcionar una respuesta razonable además de la cínica teoría del "vino y cenar". Puede ser cierto para muchas empresas, pero son algunas de las razones legítimas que las empresas van con Perforce (o volver a escribir: P). No me puedo imaginar tratando de manejar la fuente NT en SVN. Es cierto que SVN y Git se están poniendo al día, y tal vez para un nuevo proyecto grande, uno de ellos es la decisión correcta. Pero piense en los costos asociados con mover un proyecto en vivo tan grande como Windows (todas las versiones) de un sistema de control de fuente a otro. No vale la pena el costo, especialmente cuando funciona el sistema de control de fuente actual.
Greg Jackson
1
En realidad, se mudaron de SLM (una herramienta interna) a Source Depot (una bifurcación de Perforce), por lo que probablemente valió la pena el costo para alguien en ese caso. Pero sí, no vale la pena el costo a menos que haya un beneficio bastante sustancial.
JasonTrue
1
discusión.fogcreek.com/joelonsoftware/… tiene parte de esta historia de fuentes en su mayoría externas. (He sido un extraño desde 2004, FWIW).
JasonTrue
3
No estoy seguro de la gran situación de repositorio. Administro uno, es un repositorio de 12 Gb (es decir, el directorio del servidor comprimido es de 12 Gb) y tiene 320,000 revisiones. Es lo suficientemente rápido. Es probable que Microsoft haya usado Perforce porque SVN no existía en 1999. maillist.perforce.com/pipermail/perforce-user/2001-August/… y subversion.apache.org/docs/release-notes/release-history.html
gbjbaanb
8
@gbjbaanb, ese no es un repositorio grande ... en estos días cuenta como uno de tamaño mediano. ;) Ver, por ejemplo, research.google.com/pubs/archive/34459.pdf
Alex Feinman
65

Soy razonablemente competente con svn, git y Perforce, tanto como usuario como en la configuración y mantenimiento de servidores.

Para una empresa, o incluso un programador solitario como yo, el control de la fuente es un costo incurrido en apoyo de la actividad de hacer dinero real, que es desarrollar y vender código. Entonces hay varios factores a considerar:

  • ¿Qué tan bien encaja con su modelo de desarrollo?
  • ¿Qué tan fácil es para los desarrolladores aprender y usar?
  • ¿Son rápidas las operaciones de rutina para los desarrolladores?
  • ¿Es el proceso de usarlo una distracción de su trabajo real, que es escribir código?
  • ¿Qué tan fácil es configurar y mantener?
  • ¿Cuánto cuesta comprar y mantener?
  • Si necesita ayuda, ¿qué tan fácil es obtenerla?

Voy a omitir los detalles de tl: dr sobre los pros y los contras de los sistemas individuales. Baste decir que cuando volví a la consultoría a tiempo completo el año pasado, revisé los tres para decidir cuál me permitiría ganar la mayor cantidad de dinero lo más rápido posible entregando software de calidad a mis clientes y sin requerir una gran cantidad de dinero sin pagar. perder el tiempo. Cuando tomé la consideración política de "FOSS es bueno y no FOSS es malo" fuera de la ecuación, terminé pidiendo una licencia de Perforce.

Y es por eso que las grandes empresas también eligen Perforce.


Aquí están los detalles de tl: dr de los comentarios, además de un poco más.

Abordar svn es fácil: en comparación con Perforce, es muy lento. Trabajé en una compañía que hizo Linux incorporado para teléfonos celulares, y nuestras fuentes completas corrieron 9 GB; ellos usaron Perforce. Una vez que tenía el código, la actualización de las últimas fuentes normalmente tomaba segundos en la LAN, o un par de minutos a través de una conexión VPN desde mi casa. Con svn, hubieran sido minutos y horas respectivamente.

git vs. Perforce es más complicado. Muchas compañías sienten que tienen buenas razones comerciales para usar un repositorio centralizado con control de acceso y para facilitar su compromiso allí y difícil hacer cualquier otra cosa, y Perforce se adapta perfectamente a ese modelo. Sin embargo, git alienta positivamente a las personas a trabajar en una sucursal local, y no hay forma de que funcione de manera diferente. Un desarrollador puede trabajar completamente en una sucursal local y nunca comprometerse con el repositorio central, por lo que si una empresa no quiere que su gente trabaje de esa manera, Perforce es una mejor opción.

Hay otros problemas con git para algunas necesidades comerciales. Trabajé en una empresa que usaba git, y no sé cuántas veces escuché esta discusión: "Ojalá estuviéramos usando [algún otro VCS], porque necesito hacer [esto] y no puedo con git ". "Por supuesto que puedes hacer eso con git". "¿Cómo?" "Bueno, primero necesitas escribir un script bash ..." "No importa".

Y luego está el tiempo que se tarda en poblar inicialmente un árbol de origen que tiene mucha historia. Con Perforce, debido a que el historial se mantiene en el servidor, solo obtienes las últimas versiones de todos los archivos, por lo que es realmente rápido, incluso configurar ese árbol completo de 9 GB que mencioné solo tomó un par de horas en una VPN. Con git, puede tomar un lugar entre mucho tiempo y una eternidad. A veces tengo que clonar GTK + o los repositorios git del servidor X, y eso es un largo descanso para almorzar, o tal vez es hora de dormir.

Realmente, se trata de la herramienta adecuada para el trabajo. svn funciona bien para la mayoría de los esfuerzos de código abierto de Apple, y sería horrible para la piratería de kernel. git funciona muy bien para GTK +, pero es increíblemente lento para trabajar dentro de WebKit: el árbol de origen y el historial son demasiado grandes (como descubrí de la manera difícil trabajar con el código del portal svn-a-git de WebKit). Perforce funciona bien si tiene un árbol fuente gigante y necesita un control centralizado. Cada uno de ellos funciona bien en el contexto correcto.

Bob Murphy
fuente
2
¿Es el problema que las grandes empresas pongan su código en un repositorio? ¿Qué hay de poner cada 'módulo' o 'aplicación' en un repositorio Git separado, para que los tamaños de estos repositorios sean manejables? Cada uno de estos repositorios importaría las funcionalidades requeridas utilizando la función de submódulo de Git. De esta manera, los mantenedores de los repositorios ocasionalmente pullsus submódulos para obtener actualizaciones o nuevas características, y solo entonces los usuarios de ese repositorio requerirían actualizaciones más grandes que el código del repositorio mismo.
Carl G
@Carl G: Si lees todas las respuestas aquí, encontrarás muchas razones por las cuales las personas han elegido Perforce sobre git que no tienen nada que ver con las capacidades de git en repositorios o submódulos.
Bob Murphy
Estaba tratando de abordar "el tiempo que lleva llenar inicialmente un árbol fuente", pero en realidad puedo ver que el problema del submódulo que mencioné es irrelevante porque los submódulos contienen todas las historias de esos repositorios también. Supongo que la única forma de reducir el historial sería usar binarios de las dependencias.
Carl G
Bueno, con git puedes hacer un clon superficial y obtener solo una pequeña cantidad de historial, o tal vez solo los últimos archivos (git clone --depth 1). Esto también funciona para submódulos git.
Sahil Singh
38

GIT especialmente, y SVN hasta cierto punto no son tan viejos: si necesitabas un control de versión sólido a mediados de los 90, casi tenías que comercializar ya que SVN estaba en su infancia y CVS era, bueno, CVS. Una vez que hayas invertido mucho en un sistema, moverlo puede ser un oso.

Ah, y los muchachos que toman estas decisiones probablemente nunca interactúen con el sistema de control de versiones, pero sí son ganados y cenados por el personal de ventas antes mencionado.

Wyatt Barnett
fuente
44
+1. Cambiamos a git relativamente recientemente y tuvimos que ejecutar forzosamente durante bastante tiempo, solo porque todo lo demás era inferior.
9000
11
Aunque IMO Perforce desperdicia mucho de mi tiempo. Todavía lo usamos en el trabajo porque hemos invertido tiempo en desarrollar herramientas personalizadas que interactúen con él. Para cambiar tendríamos que reconstruir esas herramientas.
m4tt1mus
2
Perforce y los desarrolladores ignorantes me hicieron odiar registrar el código. Yo prefiero escribir código con lápices de colores y compilar que .
Jim Schubert
Creo que deberías echar un vistazo a forzosamente antes de comentar.
Toby Allen
30

He sido programador en la industria de los juegos durante casi 9 años, y cada proyecto en el que he trabajado ha utilizado Perforce. Sospecho que hay algunas cosas que mantienen a Perforce en uso en esa industria en particular.

  • Las personas han estado usando Perforce durante mucho tiempo y se sienten bastante cómodas con él, lo que les hace dudar de cambiar a otra solución. Los tomadores de decisiones también pueden dudar en poner su proyecto de 30 millones de dólares en manos de un software que nunca antes habían usado.
  • Muchas compañías / equipos han agregado soporte de Perforce a sus herramientas internas, lo que puede requerir una gran cantidad de trabajo para actualizar para soportar otro VCS.
  • Si bien los programadores pueden tener dificultades para cambiar a otro Git / Hg / SVN, hay muchos miembros menos técnicos de un equipo de desarrollo de juegos, como artistas, diseñadores y productores. Conseguir que se sientan cómodos con el nuevo sistema puede llevar mucho tiempo, y estaría dispuesto a apostar que serían bastante resistentes al cambio.
Mike O'Connor
fuente
19
Creo que los desarrolladores "viejos" (+10 años) son probablemente tan resistentes al cambio como las personas "no técnicas".
Wayne Werner
3
+1 en esto, específicamente para esta industria. Los programadores de videojuegos tienden a tener tanto en su plato, que cambiar la infraestructura con la que trabajan es una propuesta aterradora. "Si no está roto ..." es un poco un mantra, y a menudo evita que la industria pase de las soluciones más antiguas, incluso si pueden ser más adecuadas.
Chris Subagio
2
@Wayne - comentario totalmente ageista. Tengo más de sesenta años y soy el principal defensor del cambio y la innovación en mi sitio medio a grande. James Gosling tenía 46 años cuando comenzó a escribir la primera JVM. Ken Thomson tenía 49 años cuando se le ocurrió el esquema de codificación UTF-8 y 63 cuando comenzó a trabajar en el lenguaje GO.
James Anderson
1
@JamesAnderson Creo que probablemente estés allí. Y si su organización no tiene una cultura de mejora, verá que el efecto del Mar Muerto entra en juego. Me pregunto si es posible cambiar el sistema en su conjunto, o si solo podemos jugar con nuestra pequeña parte.
Wayne Werner
2
@ MikeO'Connor También olvidaste poner que los juegos usan muchos recursos binarios. Poder bloquear exclusivamente activos binarios es un ENORME plus.
CodingMadeEasy
22

Tal vez, tal vez les gusta Perforce porque Perforce es mejor?

  • Perforce es rápido. Mucho más rápido que Subversion o Git.
  • Perforce fusion es mejor que Subversion o Git. Git realmente no hace fusiones y el seguimiento de versiones de Subversion no es tan bueno, al menos en 1.5.
  • Perforce tiene una excelente atención al cliente.
  • Perforce combina la revisión del repositorio de Subversion con revisiones de archivos individuales. Perforce le permite ver revisiones del repositorio a través de listas de cambios o revisiones de archivos individuales.
  • Perforce hace un trabajo mucho mejor con múltiples listas de cambios que Subversion. Las listas de cambios de Subversion son algo de una ocurrencia tardía y sé que pocos lo usan. Perforce está integrado. Si mueve un archivo modificado de la lista de cambios predeterminada, no se confirma accidentalmente.
  • Perforce le permite especificar el diseño de su directorio de trabajo. Por ejemplo, si tiene un árbol de directorio de código fuente estándar, pero algunos clientes tienen una fuente personalizada, puede superponer la fuente personalizada sobre el árbol estándar. Puede realizar pagos de forma dispersa especificando solo los artículos que desea pagar.

Bien, antes de que pienses que soy un Fanboi de Perforce, la última vez que recomendé Perforce a una empresa fue hace más de siete años. Perforce cuesta $ 800 por licencia, lo cual es barato en comparación con ClearCase, pero muy costoso en comparación con Subversion. Me cuesta mucho justificar Perforce sobre Subversion.

Además, la mayoría de los desarrolladores están acostumbrados a Subversion. No quieren aprender Perforce, que tiene una forma diferente de trabajar que Subversion. En Perforce, debe crear un cliente y marcar los archivos para editarlos antes de poder modificarlos. No tiene que hacer eso con Subversion.

También hay menos integraciones con Perforce sobre Subversion. Parte de eso se debe al uso del cliente . Simplemente no funciona bien con VisualStudio o incluso con Hudson. Parte de esto se debe al hecho de que Perforce tiene que crear las integraciones del cliente.

Hay un costo para la licencia de propiedad llamada el costo administrativo. Imagínese si pudiera licenciar una pieza de software por $ 1.00 por usuario. Diablos, hagámoslo dos pedazos. Mil licencias le costarían solo $ 250.

Ahora, necesita una persona a tiempo completo que administre la licencia. Un trabajador técnico promedio permanece en una empresa durante aproximadamente 2 años. Eso significa que 500 personas se irán cada año y vendrán otras 500. Diez personas cada semana tienen que cambiar la licencia. Luego, hay momentos en que el proyecto se recupera y necesita otras 250 licencias. Esos deben ser ordenados, ingresados ​​y mantenidos. Eso puede llevar semanas.

Es por eso que muchas empresas comerciales se han mudado al código abierto. No es el costo de una licencia. Usted paga a un desarrollador $ 150,000 por año, ¿qué otros $ 800 por una licencia de Perforce? Está gestionando esa licencia. Perforce se ve muy bien en comparación con ClearCase: más rápido, más fácil, más barato, mejor. ¿Pero contra Subversion? Perforce podría ser más rápido y tal vez mejor, pero ¿es $ 800 mejor? ¿Está gestionando mejor la licencia? ¿No está usando una herramienta deseada mejor?

Es por eso que Perforce puede estar teniendo problemas.

Git no es la herramienta final de todo. Funciona muy bien en circunstancias en las que no desea un control centralizado de quién tiene acceso a un repositorio. Pero, puede ser un dolor en muchas circunstancias. La forma en que lo expreso es de esta manera:

  1. Ejecutas un proyecto de código abierto. ¿Estaría feliz o molesto si un millón de personas tuviera una copia de todo su repositorio?
  2. Está ejecutando una mesa de operaciones financieras que utiliza software patentado para obtener una ventaja sobre sus competidores. ¿Estaría feliz o molesto si un millón de personas tuviera una copia de todo su repositorio?

Si está haciendo compilaciones centralizadas, necesita que todos usen un único repositorio de todos modos. ¿Cuál es la ventaja de un sistema distribuido en esta circunstancia? De hecho, puede alentar a las personas a trabajar fuera de línea . Los desarrolladores pueden simplemente seguir su propio camino alegre y no comprometer nada hasta el último minuto. Luego, pasas dos días frenéticos tratando de que todo vuelva a funcionar.

No estoy en contra de Git. He recomendado a Git en muchos casos. Estos incluyen equipos distribuidos con conexiones pobres entre sí, o lugares donde no desea rastrear a todos los que tienen acceso al repositorio de origen.

Por ejemplo, un departamento de informática de la universidad quería que sus estudiantes usaran el control de fuente y pusieran su código allí para que los maestros lo vieran. Gran idea. Demasiados niños abandonan la universidad sin comprender los procedimientos estándar de construcción y desarrollo. Yo recomendé a Git.

Al usar Git, el administrador del repositorio solo tiene que aceptar los compromisos de sus compañeros profesores. No tienen que preocuparse por los estudiantes individuales. Los profesores pueden permitir que los estudiantes se comprometan con su versión del repositorio. Los estudiantes pueden trabajar en grupos, y cada grupo puede compartir su versión del repositorio.

Si la universidad usara Subversion, alguien tendría que conocer a todos los estudiantes y darles acceso al repositorio central. Tendrían que gestionar quién puede verificar qué y dónde. Si un profesor asignara un proyecto grupal, tendría que ser configurado y administrado. Necesitarías una persona a tiempo completo solo para manejar eso.

Este no es un juego de fútbol donde un equipo es mejor que otro. Las herramientas funcionan de diferentes maneras y cada una tiene sus ventajas y desventajas. Perforce es una gran herramienta. Desafortunadamente, se han desarrollado circunstancias que hacen que sea difícil recomendarlo.

Git es genial, pero sigo recurriendo a Subversion para mi repositorio de fuente personal. Después de todo, no lo comparto, y Subversion es más fácil de usar. Uso Git para trabajo personal si tengo un equipo pequeño porque no tengo que mantener mi repositorio a tiempo completo en Internet. Para la mayoría de los sitios comerciales, todavía encuentro que Subversion funciona mejor. Pero, hay circunstancias cuando Git brilla.

David W.
fuente
40
¿Esperar lo? Me perdiste aquí "Perforce fusionar es mejor que Subversion o Git. Git realmente no hace fusiones [...]". ¿Puedes explicar eso?
Sverre Rabbelier
1
En realidad, encuentro que Git es bastante bueno para las fusiones, más agradable que las herramientas de scm de la vieja escuela, pero cuando en realidad echo de menos poder poner las cosas en una lista de cambios de "no registrarse" como solía hacer con Perforce. (He intentado hacerlo en SVN, pero todavía termino accidentalmente registrando cosas porque las listas de cambios svn y p4 se comportan de manera diferente).
JasonTrue
12
@SverreRabbelier 3 años después, y todavía hay personas esperando una respuesta a su pregunta.
Navin
1
"porque Perforce es mejor" ... "Este no es un juego de fútbol en el que un equipo es mejor que otro". ...
RJFalconer 01 de
44
forzosamente es rápido. mucho más rápido que svn o git. --- puntos de referencia, o no sucedió ...; p
sjas
14

No sé si el soborno 'vino y cenar' todavía es aplicable, pero para la mayoría de los gerentes cuando decidan encontrar un producto, lo leerán en varias publicaciones (dirigidas a la administración) y verán los folletos y folletos que exaltan el producto. virtudes

¡Adivina qué, los productos FOSS no aparecen en esos lugares!

Por lo tanto, es casi un hecho que la mayoría de las decisiones de compra de la gerencia son impulsadas por la publicidad y el marketing. Pueden realizar evaluaciones, pero de varios de dichos productos.

La otra razón se debe a la madurez. Algunos productos que utilizamos hoy en día son lo suficientemente estables para un uso comercial serio, algunos no tienen opciones de soporte, otros no tienen un historial comprobado como soluciones comerciales. Estas son cosas importantes a tener en cuenta (aunque, como técnico, evaluaré con gusto las soluciones FOSS si el riesgo de usarlas y hacer que fallen es mínimo para mantener el negocio en funcionamiento) y algunos gerentes tienen razón al no tenerlas. Son responsables ante sus jefes y se sentirán mucho más cómodos si hay una organización de soporte detrás del producto: después de todo, tiene uno para su negocio.

Por último, si bien muchos productos FOSS tienen respaldo (piense en Collabnet o Wandisco para SVN), todavía obtiene la reputación de 'hecho por geeks en su habitación de atrás'. Todos sabemos que generalmente es b * * ** ty el mejor FOSS compite increíblemente bien con las ofertas comerciales, pero mi gerente aún debe estar convencido. tal vez simplemente no se da cuenta de la diferencia entre los productos FOSS inmaduros y maduros; Tal vez no le importa.

De todos modos, Perforce es un buen SCM, no hay razón para no elegirlo. Podría decir lo mismo para otros SCM, pero de nuevo, solo puedo decir cosas malas sobre otros, y todavía tengo pesadillas cuando se trata de un par de productos.

gbjbaanb
fuente
Este fue un argumento más convincente hace una década, pero muchos productos FOSS son muy comunes hoy en día; incluyendo SVN, que se usa en algunas grandes empresas.
Jeremy
No me importa que FOSS tenga las cosas correctas para competir, me importa que mi gerente piense que no. Además, algunas grandes empresas se mueven lentamente, por lo que todavía están llegando allí, les tomará algunos años más considerar evaluar los productos FOSS.
gbjbaanb
gbjbaanb Me malinterpretas. No creo que los factores que está describiendo sean tan relevantes en ningún nivel de gestión como lo fueron hace una década. Si bien esa podría ser su situación, sería un error generalizarla. FOSS es la corriente principal, lo que significa que es adoptado por la mayoría de las grandes empresas y utilizado en sistemas centrales.
Jeremy
66
Creo que este es un punto clave: las herramientas de FOSS no se anuncian a sí mismas, realmente porque no tienen ninguna razón para hacerlo. Parte de esto son los folletos y las cosas que mencionas, pero incluso si busco en Google "sistemas SCM de comparación" o "sistema de control de versiones de comparación", lo único que encuentro son los realizados por Perforce. Claro, tengo que considerar la fuente, pero no sé si las herramientas de software libre se esfuerzan por anunciarse y hablar sobre por qué son las mejores. Sé que menospreciamos el comercialismo, pero a veces el marketing y la publicidad en realidad me ayudan a tomar una decisión informada.
Chance
1
Creo que hay dos excelentes razones para no elegir Perforce: 1. La ramificación es muy costosa, y 2. El proceso de pago y edición hace que el trabajo fuera de línea sea muy difícil de conciliar.
Kevin Cline
14

Porque herramientas como Perforce tienen vendedores para vino y cenar a las personas encargadas de la compra, mientras que Git no. Por supuesto, ese es solo el lado cínico de mí hablando, pero es un cinismo provocado al ver el proceso de cerca.

Solo para dejarlo perfectamente claro: no quiero decir que cada vez que vea a su CIO tropezar borracho por el pasillo, espere usar un nuevo sistema de versiones el próximo trimestre. Solo que hay una desconexión en muchas organizaciones entre el uso y la adquisición. Por supuesto, hay otras razones por las cuales las empresas usan Perforce: por ejemplo, pueden haber invertido mucho en su implementación en su flujo de trabajo. Pero en general, y esta pregunta es muy general, no hay una ventaja funcional al no usar las herramientas de FOSS.

Dmitri
fuente
13
Puede sonar cínico, pero esencialmente has dado en el clavo. En mi propia empresa, lucho por promover cualquier solución de software libre, ya que el ejecutivo tiene la percepción de que si es gratis, no puede ser bueno.
wolfgangsz
1
amén a eso, aunque podría haberlos convertido un poco cuando reemplazaron nuestra solución SVN por una 'empresa' que costaba una fortuna, requirieron consultores, 2 contratistas para administrarla, y después de mucho llanto, crujir de dientes, operación con errores y la muerte de nuestra productividad ... fue descartada y reemplazada por nuestra antigua solución SVN.
gbjbaanb
77
Google no es realmente conocido por este tipo de cultura.
Jeremy
11
@Chance: ¿Para qué tipo de cosas contactas al soporte técnico? He usado CVS, Subversion y Mercurial, y nunca me he encontrado deseando que hubiera alguien a quien llamar. Si tengo un problema, busco en Google o publico una pregunta, y se resuelve, generalmente en unos minutos. Sugeriría que una herramienta de control de fuente que requiere el apoyo del desarrollador del sistema tiene un problema grave.
Tom Anderson
2
@TobyAllen: no durante aproximadamente seis años (tenga en cuenta la fecha de la pregunta) Pero en estos días parece que incluso Perforce quiere usar algo distinto de Perforce: perforce.com/git
Dmitri
12

Probablemente la misma razón por la que mi empresa se niega a usar una gran cantidad de software de código abierto (no estoy de acuerdo):

Cuando algo sale mal, quieren a alguien a quien puedan llamar y gritar.

Miguel
fuente
2
Estoy de acuerdo: esta es una gran razón para muchos departamentos de TI, pero parece inmadura. "No es nuestra culpa, es su culpa". Elegir un producto inferior solo por el potencial de señalar con el dedo "un cuello para retorcer" parece una decisión infantil. No es que no se haga a menudo, solo que parece infantil.
Bruce Ediger
Su respuesta no se refiere al soporte técnico de Perforce. Lástima, porque si supieras lo bueno que era, tu respuesta podría no haber aparecido. El soporte técnico de Perforce es estelar y comprometido, y arreglan las cosas RÁPIDAMENTE.
Br.Bill
9

Si bien todas las respuestas hablan de grandes empresas que usan P4 (y responden por qué Google sí usó P4), una de las principales razones por las que Google continúa usando Perforce es que Perforce le permite verificar un subárbol del repositorio, mientras que no puede hacerlo con Git. Con grandes repositorios de origen como el de Google que hicieron una gran diferencia.

Y por lo que he escuchado, Facebook usa SVN y Git-SVN

manojlds
fuente
1
Absolutamente, los subrepos fomentan y facilitan la reutilización del código. Es por eso que elijo Perforce cuando tengo algo que decir al respecto. ¡Vaya cosa! Mezcle y combine fácilmente el código de diferentes repositorios (subrepos de hg), rastreando quién está utilizando un subrepo particular, la capacidad de rastrear fácilmente registros, ramas y fusiones en todos los repositorios. Todo el tiempo haciéndolo súper simple para el desarrollador final con una especificación de cliente de una sola línea y mantener los detalles en la especificación de la rama para los superusuarios. En este momento, me veo obligado a usar Mercurial en un proyecto grande y tratar con repositorios con hg está costando MUCHO dinero en la pérdida de productividad.
stephenmm
8

Porque SVN es, bueno, SVN, y Perforce (desde hace 4 años cuando se comparan herramientas) hace algunas cosas mejor que SVN . (La ramificación es una de ellas, creo).

Y GIT es un Dvcs, como en distribuido . Para los equipos de la empresa, la parte distribuida podría ser algo que no les interesa ni desean.

Martin Ba
fuente
55
Puede usar Git bien con diferentes flujos de trabajo, por lo que distribuirlo no es un problema ... a menos que el equipo de la empresa no tenga ni idea. whygitisbetterthanx.com/#any-workflow
M. Dudley
2
No diría que Perforce se bifurca bien ... crear ramas de Perforce resulta en una copia ocupada de todo lo bifurcado. SVN se ramifica por copia diferida, por lo que se ramifica mucho más rápido.
Kevin Cline
1
@Jason: la ramificación en la subversión ocurre más rápido de lo que puedo escribir: "svn cp ...; svn switch ..." En la ejecución, la creación de ramas es increíblemente compleja; crear una especificación de rama, crear un espacio de trabajo, integrar, confirmar. Diablos, con fuerza todo es así. Sin una ramificación rápida y fácil, considero que un RCS es esencialmente inutilizable. A juzgar por el tráfico neto y la velocidad de mejora, parece que Perforce es un producto al final de su vida útil.
Kevin Cline
1
@kevin, no estoy seguro de cómo se está ramificando, pero solo hago la parte de integrar y comprometer. Nunca realicé la especificación de bifurcación y nunca tuve que crear un espacio de trabajo para bifurcar (aunque es posible que haya tenido que cambiar mi asignación de vista si he decidido excluir directorios en mi vista). Dicho esto, no he hecho nada con svn, así que no puedo comentar sobre ese aspecto.
Chance
1
@kevin: Sabes, si algo "funciona mejor" no es necesariamente una función del número de comandos CLI necesarios para hacerlo. Solo un comentario de alguien que no es muy competente ni en SVN ni en Perforce.
Martin Ba
6

Otra razón por la que las grandes empresas tienden a comprar grandes sistemas de control de versiones "empresariales":

La gerencia de nivel medio a superior en los departamentos de TI ve a VCS como algo que usa cada proyecto individual, o puede hacer cumplir su uso. Una vez que haya impuesto el uso de un VCS, ¿por qué no poner también un pequeño "proceso" allí? Quiero decir, tienes la oportunidad de especificar un sistema "para toda la empresa", ¿por qué no ponerlo bajo control central y agregar "recuperación ante desastres" y algunas "características de flujo de trabajo" para que puedas decir "Estamos en CMM Level StraightJacket ¡obediente!". Un VCS es un objetivo demasiado fácil para poner funciones de cumplimiento del flujo de trabajo, es a lo que se reduce.

En cuanto a la elección de algún software udky-poo, (Serena Dimensions), se dice que unas pocas rondas de Bikini Golf en las Bahamas con unos 20 empleados femeninos de ventas pueden convencer a un Director o VP de casi cualquier cosa.

Bruce Ediger
fuente
sin comentarios, pero quiero saber cuál de nuestros contratistas o gerentes llegó a jugar bikini golf.
gbjbaanb
55
Lo admito, Bikini Golf probablemente también funcionaría conmigo.
jhocking
5

Las grandes empresas necesitan un modelo centralizado de algún tipo. Una vez que los desarrolladores terminan de desarrollar, se transfiere al servicio de atención al cliente. ¿Realmente quieres estar en zapatos de soporte cuando tienen que peinar a través de 50-200 repositorios de desarrolladores distribuidos? Y las compilaciones se realizan en función del repositorio central, las compilaciones siempre, siempre, siempre deben ser rastreables y reproducibles. Aprende esto la primera vez que lo llevan a los tribunales por una infracción tonta de patentes.

Git no funciona tan bien en este modelo. Si tiene una empresa más pequeña, o una con acceso VPN deficiente, ahí es donde realmente brilla.

un piso
fuente
2
Se trata de definir el flujo de trabajo, centralizado o descentralizado, no importa. El trabajo de Support no es más fácil cuando se intenta peinar a través de 200 sucursales en el repositorio central. En general, las empresas eligen soluciones centralizadas porque con eso se sienten cómodas. No hay ventajas apreciables sobre un DVCS utilizado con un repositorio compartido centralizado.
wadesworld
4

Una razón por la cual la mayoría de las grandes empresas usan Perforce puede ser que hay más profesionales en el departamento de TI que tienen mucho conocimiento al respecto y tienen años de experiencia en la resolución de problemas relacionados con él.

Siento que en el futuro las compañías pueden comenzar a alejarse de Perforce y más hacia GIT ... ¡la mayoría de los desarrolladores que conozco parecen preferirlo! ¡También visite http://whygitisbetterthanx.com/#git-is-fast para obtener más evidencia sobre por qué Perforce puede no ser tan dominante en los próximos años!

rrazd
fuente
4

Algunas veces, cambiamos de un conjunto de VCS (sé con certeza que RCS, CVS, ClearCase, Perforce se usaron previamente, podría haber otros también) a Perforce como sistema único en uso. Ese no fue un proyecto pequeño: la migración tomó más de un año. El equipo (no era parte de él) a cargo evaluó varios VCS, y al menos se consideraron git y svn, así como aquellos que ya estaban en uso. Como recuerdo su informe, filtraron las herramientas sin las características necesarias y luego consideraron:

  • rendimiento en uso típico, especialmente para sitios remotos

  • requerimientos de recursos

  • importancia de los cambios necesarios en el hábito laboral

  • disponibilidad de soporte y costo

y Perforce fue un ganador bastante claro en general. git fue ligeramente mejor para el primer punto, pero en desventaja para los demás.

Un programador
fuente
3

Érase una vez, no hace mucho tiempo (cuando el IDE se llamaba VI), los únicos sistemas libres (de código abierto) eran CVS, RCS y SCCS.

  • Ninguno de estos podría incluso hacer frente a un archivo que se renombra.
  • No registraron fusiones, por lo que si dos ramas se trabajaban activamente, era muy difícil combinarlas hasta que el trabajo terminara en una rama.
  • No escalaron bien a bases de código muy grandes
  • No proporcionaron el nivel de control de acceso e información de proceso que deseaban los grandes proyectos.

Hubo muchos sistemas comerciales de control de código fuente, la mayoría de estos fueron proporcionados por un único proveedor de máquinas (IBM, DEC, HP, etc.) y solo se ejecutan en su hardware.

Luego, algunas compañías declararon vender control de código fuente comercial multiplataforma, incluidos Perforce y ClearCase.

ClearCase se creó en RPC que no funcionaba bien en redes de área amplia (pero solo en Internet) debido a la gran cantidad de pequeños paquetes de red que se "dispararon", también IBM y racional vieron a ClearCase como una "vaca de efectivo" y nunca lo mostraron mucho amor.

Por lo tanto, el único sistema de control de código fuente comercial "antiguo" que todavía es de uso común es Perforce. Una vez que el rendimiento está en uso e integrado en los sistemas de compilación y en los sistemas de seguimiento de errores, la empresa tiene muy pocos beneficios a corto plazo para pasar a cualquier otra cosa.

Para resumir, forzosamente recibió el "pie en la puerta" cuando no había muchas otras opciones, y todavía no se han equivocado lo suficiente como para lograr que la gente se aleje de ella .

Ian
fuente