git svn ignorar rutas usar ignorar archivo

Estoy convirtiendo un repositorio svn en un repositorio git y tenemos una cantidad de archivos binarios que se han registrado a lo largo de los años que no deberían haberlo hecho, junto con imágenes y otros archivos, realmente no quiero que estos archivos estén presentes en el git repo ocupando espacio.

He jugado con git-svn para convertir el repositorio y he usado su propiedad -ignorepaths pero me gustaría poder introducir una lista en las rutas ignoradas en lugar de tener que especificar una ruta ignorada para cada patrón/directorio que quiero excluir, si pudiera usar un archivo svnignore/gitignore durante la conversión que eliminaría esta basura, sería aún mejor.

¿Hay alguna manera de hacer esto o solo tengo que morder la bala y especificar cada patrón/ruta individualmente?

EDITAR: pregunta actualizada para ser más claro en cuanto a lo que estaba preguntando

preguntado el 24 de agosto de 12 a las 04:08

Probablemente sí, pero en realidad solo estaba usando eso como ejemplo, me gustaría tener un montón de extensiones/rutas fácilmente:

Creo que no hay una salida fácil para esto: debe enumerar lo que desea ignorar, ya sea expresiones regulares creativas o simplemente enumerarlos a todos.

3 Respuestas

Subversion es un poco complicado allí si estás acostumbrado a git. svn:ignore es una propiedad que funciona por carpeta. En una carpeta en particular, solo puede ignorar archivos específicos o subcarpetas inmediatas. Puede pasar un archivo al comando que establece las propiedades de ignorar en DIRECTORIO y también puede pasarle el archivo .gitignore con:

svn propset svn:ignore -F .gitignore DIRECTORY

Pero por la razón mencionada anteriormente, porciones realmente prácticas en .gitignore como */build no tendrá ningún efecto en Subversion.

Lo único que puedes hacer es hacer uso de la --depth argumento a favor svn propset por ejemplo si pasas --depth immediates, establecerá la propiedad para DIRECTORIO y cada subcarpeta inmediata. También hay formas de especificar la profundidad o simplemente hacerla infinita. Creo que la finalización de TAB funciona allí o consulta la ayuda.

Sin embargo, todavía hay un inconveniente importante: cada vez que agrega una carpeta que contiene archivos que desea ignorar, debe ejecutar el svn propset comando de nuevo.

Respondido 24 ago 12, 08:08

desafortunadamente, no creo que esto sea lo que estoy buscando, quiero convertir un repositorio svn en un repositorio git y eliminar parte de la porquería que se agregó en el camino como si nunca hubiera sucedido: Daniel Powell

puedo confirmar eso git svnno tomar nota del contenido de .gitignore al obtener de Subversion, independientemente de si el .gitignore se ha registrado en el repositorio.

La solución, como se indica en su pregunta, es usar --ignore-paths con el git svn clone. Una vez que haya hecho esto, se agrega a la .git/config para que no tenga que seguir especificándolo cada vez que obtiene contenido.

Convertir uno existente .gitignore archivo en una expresión regular de Perl para usar con --ignore-paths no es tan complicado como podría parecer ya que puedes or términos juntos.

Por ejemplo:

/[Dd]ebug/|^rootfile\.txt$|\.bak$

Excluye debug carpetas en cualquier lugar de la ruta, el archivo específico rootfile.txt en la raíz del repositorio, y todo *.bak archivos.

Consejos:

  • una expresión que termina con una barra inclinada excluirá el contenido de la carpeta nombrada pero no la carpeta en sí
  • ^ coincide con la raíz del repositorio y las rutas desde la raíz no comienzan con una barra inclinada
  • puedes usar expresiones de búsqueda en las expresiones regulares si es necesario, por ejemplo, excluyendo todos Bin carpetas a menos que están precedidos por algún directorio en particular

contestado el 04 de mayo de 20 a las 22:05

Si desea convertir svn:ignore a .gitignore o viceversa, puede usar SubGit en lugar de git-svn, que realiza esta conversión automáticamente. El comando de conversión en la configuración más simple se ve así:

$ subgit install path/to/svn/repository

Respondido 24 ago 12, 12:08

Eso no es realmente lo que estoy buscando, quiero crear un repositorio de git usando un git-ignore para filtrar archivos mientras se crea el repositorio: Daniel Powell

gitignore no tiene relación con eso, tu pregunta es un poco engañosa. Para filtrar archivos, puede usar "svnadmin dump" + svndumpfilter/svndumptool + "svnadmin load" o una utilidad mía --- svnkitfilter (puede parchearlo para filtrar lo que quiera) --- para filtrar algo en el lado SVN, " git filter-branch" para filtrar en el lado de Git o la opción --ignore-paths de git-svn - Dmitri Pavlenko

sí, estaba buscando una manera de alimentar a git-svn con una lista de opciones para ignorar la ruta en lugar de enumerar cada una individualmente, o algo que básicamente lograría lo mismo: Daniel Powell

He actualizado la pregunta para tratar de aclarar lo que estaba buscando: Daniel Powell

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.