Pregunta

Tengo algunas configuraciones de shell que definen dinámicamente los alias según el tipo de repo de VC que contiene la CWD, por lo que, por ejemplo, 'd' ejecuta 'svn diff' o 'git diff', dependiendo. (Basado en esta publicación de blog , si alguien está interesado ...)

Me gustaría definir algunos alias de manera diferente dependiendo de si estoy en un repositorio de git en lugar de un repositorio de git-svn. ¿Hay una manera fácil de decir la diferencia entre los dos?

¿Fue útil?

Solución

Debes tener un poco de cuidado al decidir qué repositorios son exactamente los repositorios git-svn. Un repositorio puede contener más de un repositorio svn.

La solución de Kafka solo funcionará si el repositorio svn se clonó con la opción -s o --std-layout, en la que en realidad hay una rama tronco .

La respuesta de Codelogic solo funcionará si hay un repositorio svn llamado svn ; no hay ningún requisito de que eso sea cierto.

La forma más fácil de verificar si es un svn-remote en la configuración es:

$ git config --get-regexp ^svn-remote

Eso encontrará cualquier repositorio de git-svn configurado, como se llame. Saldrá con el estado 0 si hay una coincidencia y 1 si no hay coincidencia.

Pero, esto no significa que el repositorio svn se use realmente. También puede ser que alguien haya importado un repositorio svn, pero los usos son como un submódulo o como una combinación de subárbol, o incluso no. Si se han activado los metadatos en el repositorio git-svn, puede ver si se ha usado alguna revisión svn en la HEAD actual usando algo como esto:

$ git rev-list -1 --grep='git-svn-id' HEAD

Pero eso es quizás un poco complicado. Tú decides.

Otros consejos

Probablemente puedas usar la salida del comando git config para diferenciar entre un git y un git-svn repo.

git config --get svn-remote.svn.url

debería devolver la URL svn que se está sincronizando, si la hay.

También hay una rama llamada troncal y una rama llamada troncal @ [REV]. Sin embargo, creo que el enfoque de codelogics es más fácil y más limpio.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top