git svn ignorar rutas usar ignorar archivo
Frecuentes
Visto 1,705 veces
4
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
3 Respuestas
2
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
1
puedo confirmar eso git svn
sí no 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
0
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 git svn git-svn gitignore or haz tu propia pregunta.
Probablemente sí, pero en realidad solo estaba usando eso como ejemplo, me gustaría tener un montón de extensiones/rutas fácilmente: Daniel Powell
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. Adrian Cornish