2010-08-30 26 views
5

Nunca he usado ClearCase, pero he usado Subversion y durante un corto período de tiempo Perforce. El departamento de TI de nuestra compañía es oficialmente compatible con ClearCase y algunas personas tienen su código verificado y algunas personas lo usan como almacenamiento de respaldo.ClearCase para el control de código fuente?

Todavía estoy indeciso sobre el clima para usar ClearCase o configurar mi propio repositorio usando Subverison. Será un equipo desarrollador de dos o tres personas como máximo. De personas de las que he tenido noticias, tuve la percepción de que ClearCase es complejo y no vale la pena aprenderlo, ya que podría no aumentar la productividad. ¿Es verdad o está mal?

Gracias ...

Respuesta

4

Suponiendo que está limitado a los dos sistemas de control de versiones (VCSS) que usted ha mencionado, Subversion (SVN) se sea ​​más claro, más fácil y esté mejor respaldado en casi todos los aspectos, hasta llegar al punto en el que debe admitir múltiples ramas.

Cuando necesite combinar código (por ejemplo, corrección de errores) en múltiples versiones, soporte el desarrollo paralelo de cualquier característica de tamaño significativo o por un equipo un poco más grande de desarrolladores que ClearCase y más específicamente la capacidad de desarrollar en sucursales y fusionarlas juntos fácilmente, valdrá la pena todo el dolor adicional y la complicación, especialmente si ClearCase ya está siendo administrado para usted.

Experiencia

que he usado con ClearCase entre una persona (yo) y más de 400 personas, tiene muchas molestias del día a día, problemas de usabilidad y fallos pero siempre nos permite obtener trabajo hecho juntos. En todo momento, la instalación de ClearCase tenía administradores dedicados de tiempo completo.

He usado Subversion solo y con otra persona, y funciona muy bien día a día (sin administradores, excepto para mí) pero muy ocasionalmente pero consistentemente se convierte en una importante fuente de frustración debido al hecho no puede manejar ninguna situación significativa de ramificación y fusión.

¿Por qué SVN es deficiente para soportar el desarrollo paralelo y la ramificación?

SVN no admite el soporte de líneas de desarrollo paralelas porque tiene un soporte automatizado muy débil para fusionar ramas juntas. En contraste, todos los otros VCS sobre los que escribo tienen un buen soporte para fusionar ramas; para los casos comunes, es una operación de cero esfuerzo.

La ramificación es la forma en que los sistemas de control de versiones simulan la concurrencia en la vida humana (por ejemplo, dos desarrolladores trabajan en dos temas diferentes en paralelo o un desarrollador que tiene múltiples problemas abiertos al mismo tiempo). ¡Pero la ramificación es inútil si no puedes combinar fácilmente el trabajo de todos en un todo coherente!

La ramificación puede realizarse explícitamente (en el sentido de que el VCS la llama y entiende) o implícitamente (como una copia normal de los archivos o una salida). SVN es compatible con ambos, pero en SVN la bifurcación generalmente se realiza de forma implícita y limitada. Cada comprobación es una sucursal, pero todas las sucursales están obligadas a sincronizarse en cada confirmación/actualización. Esto sucede porque SVN no admite la fusión fácil de ramas explícitas y, por lo tanto, rara vez se crean ramas explícitas.

Como se ve obligado a sincronizar entre sí en cada compromiso, esto disminuye el paralelismo potencial dentro del equipo. También conduce a algunas prácticas de desarrollo menos que ideales, ya que no puede usar de manera efectiva el sistema de control de versiones para sus propias necesidades de desarrollo cotidiano. Termina siendo muy difícil probar diferentes ideas en sus ramas personales y no puede realizar varias confirmaciones mientras refina una función. También es más probable que se comprometa demasiado temprano y termine rompiendo el trabajo de todos los demás hasta que solucione el problema en su último compromiso.

El otro problema importante es que, como la fusión de las ramas explícitas no está bien soportada, SVN hace un mal trabajo ayudándolo a mover los cambios de código entre personas y entre sucursales. Imagine intentar solucionar un error tanto en la rama de lanzamiento como en la rama de desarrollo; alternativamente, imaginemos que dos desarrolladores están trabajando en una función relacionada y ambos necesitan cambios el uno del otro, pero solo en puntos controlados. Al usar SVN puede realizar estas tareas, pero el VCS hace muy poco para ayudarlo y debe estar preparado para preparar y mantener parches manualmente o enviar los archivos.

En los otros VCS, puede solicitar al VCS que combine una bifurcación que contenga una corrección de errores o una característica en varias otras ramas. Al final del día, todas estas ramas (que a su vez contienen el contenido de otras ramas) pueden fusionarse de nuevo en la rama principal. En la mayoría de los casos, la mayoría de esto será manejado de manera automática y correcta por el VCS, mientras que SVN tiene este tipo de flexibilidad automática y paralelismo es casi inimaginable.

Los equipos grandes realizan su trabajo sin un fuerte respaldo para la fusión automática, pero esto supone una carga mayor tanto para los individuos como para la organización del equipo, la comunicación y el proceso.

Por otro lado, la desventaja de la fácil bifurcación y fusión es que debe ser organizado y riguroso para fusionar los cambios a intervalos regulares, ya que ya no sucede automáticamente.

Otras opciones

Ahora bien, si damos un paso atrás y considerar otros sistemas, asumiendo su repositorio es principalmente basado en texto y relativamente pequeño (menos de unos pocos cientos de MBs), sugeriría que considerar seriamente el uso de BZR. BZR es al menos tan fácil de usar como SVN, especialmente si ya conoces SVN. También es al menos tan poderoso como ClearCase en todos los aspectos importantes desde la perspectiva de un desarrollador; admite múltiples flujos (ramas) de desarrollo y tiene un buen soporte para fusionarlos de nuevo. Al mismo tiempo, puede apoyar un estilo de desarrollo centralizado según sea necesario.

Aunque no tengo experiencia con él, también debo mencionar que puede usar la herramienta BZR para acceder a un servidor SVN con bzr-svn y esto le puede brindar muchos de los beneficios y funciones de combinación de BZR sin dejar de tener la ventaja de ser su código en la plataforma SVN ampliamente conocida.

Aunque recién sugerí BZR, en el mundo de los sistemas de control de versiones distribuidas (DVCS) de código abierto muchas personas parecen estar yendo con GIT. No sugerí esto, ya que obliga a una curva de aprendizaje mucho más pronunciada a los usuarios procedentes de SVN y creo que muchos equipos prefieren el mejor soporte de Windows y la facilidad de uso de BZR por encima de los beneficios de escalabilidad y velocidad de GIT. .

Si opta por un DVCS como BZR o GIT, probablemente no tenga que preocuparse demasiado por qué DVCS empiece a usar. Los sistemas ampliamente utilizados soportan exportar e importar entre sí y todos pueden al menos importar desde SVN.

+0

¿Por qué siente que Subversion no es bueno para escenarios en los que necesitaría desarrollo paralelo y ramificación? – Manoj

+0

Manoj: He actualizado mi respuesta para tratar de cubrir su pregunta. – Jared

+0

'svn copy' se puede usar para bifurcar explícitamente y se pueden nombrar como se desee. 'svn merge' puede fusionar ramas nuevamente (no es que haga un gran trabajo). Aunque estoy en gran medida de acuerdo con su evaluación, SVN no facilita la fusión y el desarrollo paralelo, tengo que discrepar con "las ramas explícitas no están bien respaldadas" y las afirmaciones relacionadas como errores reales que desvirtúan su punto principal. No soy fanático, pero estoy trabajando en una rama de SVN en este momento, y otro equipo aquí comúnmente codifica en sucursales personales y se fusionan de nuevo al tronco cuando termina. –

4

I'd go for subversion. Tiene una interfaz más limpia y es más intuitiva que ClearCase. En mi compañía, la gente suele tener problemas para aprender ClearCase y los equipos están migrando a svn. Otra buena razón para usar svn es que es gratis.

3

¡Aléjate de eso! Tiene algunas características que svn no se encuentra (como actividades), pero seguro que con 3 personas en tu equipo no vale la pena.

3

Actualización de noviembre de 2011: más de un año después, realmente aconsejaría contra ClearCase.

Está claro ahora, desde Rational ClearCase has been bought by IBM (2003), que no habrá ninguna gran evolución a ese producto de más de 25 años.
Las últimas características aún pueden mejorar un poco (consulte release notes for 7.1.1) y atomic checkins son finalmente parte del producto, pero el protocolo de comunicación subyacente entre el cliente y el servidor sigue siendo lento y no se puede escalar.

En realidad, ClearCase ha sido reescrito desde cero y se llama Jazz source control, parte del producto Rational Team Concert.
Esa nueva versión (RTC 3.x) es realmente bastante buena, mucho más rápida que ClearCase, y ofrece una forma interesante de aislar el desarrollo de uno, permitiendo compromisos privados.

Hoy en día, DVCS como Git también son una buena alternativa, pero como I have detailed in this question, no es un proceso trivial para una gran empresa.


respuesta inicial: Agosto 2010:

ClearCase no es complejo, pero es muy diferente de la SVN. Y bastante lento;)
Ver ClearCase introduction.

Ya he logrado tener other repos working tree working directly dentro de una vista de instantánea.

Para proyectos grandes con flujo de trabajo de fusión complejo, ClearCase (especialmente ClearCase UCM) puede valer la pena.
Para un proyecto más simple (en términos de flujo de trabajo de fusión), SVN es suficiente.

Consulte también:

+0

"Flujo de trabajo de combinación": consulte http://stackoverflow.com/questions/216212#216228 – VonC

1

IBM ya no respaldará ClearCase/ClearQuest, están obligando a sus usuarios a cambiar a RTC (Rational Team Concert), que es mucho mejor que CC/CQ y tiene una ideología completamente diferente (Jazz). Por lo tanto, no le recomendaría que use estas cosas obsoletas, desactualizadas y feas como el infierno (con la interfaz de usuario de WIN 3.1 veces).

+0

Realmente es esto cierto! ¿Puedes citar una referencia? – Manoj

+0

No puedo. Eso es lo que un instructor de RTC (del lado de IBM) nos dijo. Pero intenta googlearlo. Estoy seguro de que habrá muchos enlaces :) –

-4

CC es el mejor sistema de control de versiones. Si tiene la capacidad de usar ClearCase, HÁGALO. El desarrollo paralelo es realmente efectivo en caso de usar CC. Si crees que tu proyecto es demasiado pequeño para ClearCase solo recuerda que los proyectos suelen crecer. También puede obtener nuevos proyectos que reutilizarán el código y podrá obtener un equipo más grande. Así que el desarrollo está creciendo y se verá obligado a usar VCS más potentes.

+9

Me preocupa lo nonabjetivo que parece ser esta respuesta. Hay muchas afirmaciones de genialidad, pero no hay sustancia que lo respalde. – Flexo

2

Si no tiene administradores de ClearCase dedicados, nunca piense en hacerlo. Realmente tiene una curva de aprendizaje muy empinada. Estoy constantemente tropezando con problemas con eso. Escribir Config Specs manualmente es tan propenso a errores que no es cierto, además, puede romper cualquier cosa simplemente introduciendo una ortografía incorrecta. Además, terminará en etiquetado infierno, ya que necesita etiquetar todo lo que necesita para volver, ya que no hay ninguna opción para darle un estado específico de tiempo a menos que lo haya etiquetado.

Nunca tuve ninguno de los problemas antes mencionados con SVN. También hice algunas ramificaciones/fusionando con SVN y también con CC. No hay problemas con SVN, mucho con CC. Usar CC convierte muchas cosas que deberían ser No eventos en grandes problemas. Una vez más, eso es sin administradores, por lo que una empresa que obliga CC a todos pero no brinda soporte. No pregunte cuál ...

CC se puede utilizar con eficacia, pero ... Yo diría que casi nunca vale la pena el esfuerzo extra. SVN simplemente funciona fácilmente para los escenarios más completos, lo que probablemente sea la razón por la que todavía existe con GIT y Mercurial funcionando tan bien.

Cuestiones relacionadas