2008-11-26 13 views
8

Mi equipo trabaja en un proyecto en cvs que contiene aproximadamente 20,000 archivos Java. Debido a la cantidad de archivos, lleva un tiempo realizar una actualización de cvs. Por lo general, guardo alrededor de 5 copias de todo el árbol prestado, para que sea más fácil verificar las diferentes solicitudes sin preocuparse por los archivos que se modificaron para cada una. Es realmente doloroso mantener los 5 árboles actualizados y en sincronía entre ellos.¿Es git con cvs más rápido que cvs solo?

He leído que es bastante fácil de usar git localmente con un servidor cvs remoto, y que git es rápido. ¿Git acelerará significativamente la actualización de mis árboles locales?

Me doy cuenta de que el límite inferior es el momento de hacer una actualización de cvs. Pero estoy pensando que una vez que el primer árbol esté actualizado, es posible que sincronice rápidamente los otros 4 con el primero, en lugar de hacer 4 comandos de actualización de cvs más. ¿Entiendo git correctamente?

Respuesta

8

Uso Git como cliente de Subversion en un proyecto grande (del orden de 10k archivos). Git es rápido, muy rápido. Es tan rápido que solo guardo un clon de trabajo, y cambio entre ramas de funciones dentro de ese mismo clon. Al igual que usted, cuando utilicé Subversion tendría dos o tres cajas de pago similares y cambiaría entre ellas regularmente ya que tenía varias cosas en progreso simultáneamente. A veces es bastante confuso. Con las funciones de Git como ramas livianas, el alijo y "git add -p", descubro que ya no necesito varias cajas. Puedo hacer todo en un directorio, y no preocuparme tanto por perder los cambios que olvidé o sobrescribí accidentalmente.

No he usado Git con CVS, pero si su integración es algo así como git-svn, entonces no habrá problema.

+0

La integración de git como CVS _client_ es pobre en comparación con SVN (al menos solía serlo, los proyectos que seguí que usaban CVS han migrado lejos de él, así que no tengo experiencia reciente). Hay un CVS _server_ ejecutándose como frontend en un repositorio de git en las fuentes, pero siempre lo he considerado como la salida demente de una mente enferma, así que ...). – vonbrand

10

Hacemos algo similar en el trabajo. Básicamente usamos la rama master en git como una versión del código CVS única y actualizada; no hacemos ningún desarrollo allí, solo actualizaciones de CVS. Entonces, todos nuestros proyectos de desarrollo suceden en sucursales de características que volvimos a establecer. Cuando hacemos actualizaciones de CVS en la rama master, confirmamos esos cambios en master y luego volvemos a derivar nuestras otras ramas de desarrollo en master.

No es ideal: hace que compartir ramas con otras personas sea difícil. Pero, podemos administrar varios proyectos de desarrollo a la vez y hacer las ramas, las fusiones y las diferencias fácilmente. Y, solo interactuamos con CVS en la única sucursal master, según sea necesario.

+0

Suena bastante bien. ¿El paso de rebase es más rápido que el cvs? –

+0

Sí, es mucho más rápido porque es todo local. Básicamente genera diffs de su rama y los aplica al nuevo jefe de la sucursal. –

+0

@ CraigP.Motlin, tales operaciones en git tienden a ser casi instantáneas. Comprobar la versión actual de CVS es lento (quizás más lento que CVS nativo). Whay es un verdadero oso es el primer pago (ya sea CVS o SVN), tiene que absorber todas las revisiones. Eso puede tomar literalmente días para un depósito extenso. El proceso es bastante frágil, ya que pierde la conexión con el servidor y debe reiniciarse (y si aún no ha finalizado, no hay nada desprotegido, no se preocupe, continúe). Una vez que haya clonado una copia del repositorio de CVS, puede simplemente copiar el directorio. – vonbrand