tipos tag remove practices etiquetas crear best git git-svn clearcase

tag - Cómo unir git a ClearCase?



git tag best practices (3)

Recientemente utilicé git svn y lo disfruté mucho. Ahora estoy comenzando un nuevo proyecto en un cliente diferente. En ese sitio, el SCM de elección es ClearCase. No he encontrado un equivalente horneado de git svn para ClearCase. ¿Hay alguien que haya intentado usar git localmente como front-end de ClearCase usando algunos trucos, configuraciones o scripts con algún éxito? Si es así, ¿puedes explicar el método utilizado?


El único proceso que suelo seguir es:

  • cd de instantánea dentro de una view/vobs/myComponent ClearCase view/vobs/myComponent
  • git init.

Eso me permite considerar un componente ClearCase como un repositorio Git.
Luego puedo hacer todas las confirmaciones de bifurcación y "privadas" que desee dentro de ese repositorio, haciendo que el archivo pueda escribirse cuando lo necesite (es posible dentro de una vista de instantánea).

Una vez que tengo un compromiso final estable, actualizo mi vista de instantánea, que enumera todo el archivo "secuestrado": los compré y los devuelvo a ClearCase.

Teniendo en cuenta los límites de Git , un componente de repositorio por ClearCase (UCM) es el tamaño correcto para un repositorio de Git.
Ver también ¿Cuáles son los conceptos claros básicos que todo desarrollador debe saber? para una comparación entre ClearCase y Git.

La idea permanece:

  • no git-cc
  • no es necesario importar todo el historial de ClearCase (que no tiene noción de línea de base del repositorio, a diferencia de las revisiones de SVN)
  • creación de un repositorio de Git dentro de una vista de ClearCase para confirmaciones intermedias
  • la confirmación final de Git se reflejó en la vista de ClearCase a través de un registro de todos los archivos modificados.

Este es un método que evita los secuestros, que nuestro equipo usó con bastante éxito este método durante más de un año, hasta que retiramos ClearCase para Subversion (según la política de la compañía, aunque es un paso atrás para nuestro equipo; básicamente estábamos usando ClearCase como un tonto sistema de archivos, y prácticamente trabajando de forma nativa en git, pero ahora estamos usando el puente git-svn, que no es tan bueno como el git nativo).

Usamos dos directorios, uno para la instantánea de ClearCase y el repositorio maestro de git, que compartimos entre todo el equipo y nunca editamos archivos, y otro para nuestro directorio de "trabajo".

La preparación en la vista de instantáneas de ClearCase es:

% git init % git add **/*.cxx **/*.h **/Makefile (and so on) % git commit -m "initial"

Luego clona en tu directorio de trabajo:

% mkdir ~/work % git clone /path/to/repo

Trabajar en el directorio de trabajo, en una rama:

% git checkout -b feature % ...edit/compile... % git add -u % git commit

Asegúrese de que la instantánea de ClearCase esté actualizada con pristine (que siempre fue para nosotros, porque la compartimos con el equipo y todos usamos git).

A continuación, fusione la rama en el maestro volviéndola a establecer para evitar una fusión automática:

% git checkout master % git pull % git checkout feature % git rebase master % git checkout master % git merge feature % git branch -d feature % git diff --name-status origin/master

Prepare la vista ClearCase revisando / mkelem / rmname los archivos modificados / nuevos / eliminados, basándose en la salida de git diff --name-status . Usamos un script enrollado a mano para hacer esto. No olvides echar un vistazo a los directorios que tienen archivos agregados / eliminados:

Luego, devuelva las cosas de git y regístrese con ClearCase:

% git push % cd /path/to/repo % git reset --hard % cleartool ci `cleartool lsco -r -short -me`

Parece una gran cantidad de comandos, pero esto incluye la configuración, y su flujo de trabajo diario no utiliza muchos comandos. Puedes construir trivialmente un script en el paso de push-back-to-ClearCase, y descubrir / mostrar a tu equipo todas las cosas geniales extra git gradualmente a medida que todos se acostumbran al flujo de trabajo básico.

La verdadera belleza de este sistema es, después de un tiempo cuando todos son competentes con git, puedes deshacerte de ClearCase y de todos los trabajos y honorarios de monos individuales asociados. Tal vez le den al chico ClearCase de la compañía unas vacaciones muy necesarias y algo de reciclaje con los ahorros. (Tristemente, en mi compañía, las cosas de git eran todas skunkworks, y nos hemos mudado a Subversion, ¡¡¡Forwards de ClearCase, pero al revés de "git"!)

Recomiendo encarecidamente que utilice la secuencia de comandos pristine de pristine , que se ejecuta en la vista de instantáneas de ClearCase y garantiza que git y él estén sincronizados. Configuramos esto como un trabajo cron que se ejecutó dos veces al día, y también lo ejecutamos de forma manual cada vez que estábamos a punto de retroceder a git. Lamentablemente, el enlace a la publicación del blog ya no es válido. Sin embargo, la secuencia de comandos todavía está disponible en Github .


Si bien puede no ser sin algunas verrugas (ha sido advertido), creo que debo mencionar que he escrito un puente de clases.

http://github.com/charleso/git-cc

El puente entre los dos sistemas no es fácil, y desearía que mi solución fuera la mitad de buena que git-svn. Una gran limitación es que estás realmente limitado a duplicar una sola transmisión; git-cc no puede clonar todas sus ramas Clearcase (tan bueno como eso sería). Sin embargo, dado que la mayoría de los scripts alternativos se resuelven en torno a una sola vista Clearcase, no está en peor situación (IMO).

Personalmente encuentro la historia bastante importante y lo que otras soluciones carecen es su importación de historia en Git. Ser capaz de ejecutar git-blame en los archivos y ver a sus verdaderos autores es bastante útil de vez en cuando.

Si nada más, git-cc puede manejar el paso ''git log --name-status'' antes mencionado en la solución de Matt anterior.

Ciertamente tengo curiosidad por escuchar lo que VonC y Matt (y otros) piensan de esto, ya que estoy de acuerdo en que cualquier puente hacia Clearcase está lleno de dificultades y puede ser más problemático de lo que vale.