tipos tag remove qué existen etiquetas crear git filter git-svn gitattributes

tag - ¿Cómo configurar gitattributes para filtrar parte de un archivo?



qué tipos de etiquetas existen en git (1)

Estoy usando Visual Studio 2010 y git (git svn). Mi compañero de trabajo usa svn puro con el complemento Ankhsvn.

Cuando intento abrir el archivo con el proveedor de control de fuente Git habilitado, Visual Studion se queja:

Plug-in de control de fuente
La solución o proyecto activo está controlado por un complemento de control de fuente adifferen que el que ha seleccionado. Si cambia el plugin de control de fuente, la solución o proyecto activo se cerrará.
¿Quieres continuar?

Cuando hago clic en sí, se abre una solución vacía. Cuando hago clic en no, faltan todos los iconos específicos de git al lado de los elementos de la solución (todavía veo el nombre de la rama en el explorador de soluciones) y me preguntan sobre el complemento de control de código fuente cada vez que abro la solución.

Cuando clono el repositorio svn que mi compañero de trabajo creó, el archivo sln de solución contiene lo siguiente

GlobalSection (SubversionScc) = preSolution
Svn-Managed = True
Manager = AnkhSVN - Soporte de Subversion para Visual Studio
EndGlobalSection

He eliminado esta sección y ahora la solución se abre sin problemas cuando el proveedor de control de código fuente de Git está activado, pero se queja cuando selecciona el proveedor Ankhsvn: la situación se invierte.

Me gustaría decirle a git que elimine esta parte del archivo .sln durante una extracción (git svn fetch) y que la agregue cuando confirme (git svn dcommit). ¿Es esto posible a través de gitattributes y cómo hacerlo?

EDITAR:

Ahora he agregado

solutionname.sln filter = ankhsvn

a $ GIT_DIR / info / attributes

y

[filter "ankhsvn"] clean=sed ''/^Global$/ r ../ankhsvnsection '' smudge=sed ''/GlobalSection(SubversionScc)/,/EndGlobalSection/d ''

a mi archivo .git / config.

ankhsvnsection contiene la sección eliminada por la operación de manchas. ¡No parece hacer nada!


No sé cómo hacerlo exactamente en Windows, pero sé cómo lo haría en * nix.

Escribiría una secuencia de comandos sed / bash (llamada myscript) que elimina esas líneas del archivo cuando git las extrae con un filtro de git "smudge" .

Entonces, en "$ GIT_DIR / info / attributes", agregaría:

{sln filename} filter=myfilter

Y defina la parte de la mancha del filtro en el archivo "$ GIT_DIR / config":

[filter "myfilter"] smudge={path to myscript}

Para Linux, simplemente llamaría a sed directamente así:

[filter "myfilter"] smudge=sed ''/GlobalSection(SubversionScc)/,/EndGlobalSection/ d''

Esto es quizás algo que puede asumir en Windows usando git bash.

Tenga cuidado cuando desee registrar cambios en el archivo, ya que se registrará en la versión "manchada". Puede definir un filtro "limpio" para esto que agrega las instrucciones svn nuevamente.