= git filter-repo
es una operación común cuando un proyecto crece tanto que un subdirectorio merece convertirse en un repositorio propio.
Esta es la herramienta oficial recomendada por Git actualmente. Si no la tienes, puedes instalarla (suele requerir Python: `pip install git-filter-repo` o '''apt install git-filter-repo'').
== aplicar
- **Clona una copia limpia** del repositorio original (por seguridad, no trabajes sobre tu carpeta actual):
git clone --no-local /ruta/al/repo_original repo-subdirectorio
cd repo-subdirectorio
- **Filtra el directorio** que quieres separar:
git filter-repo --path nombre-del-directorio/
* **¿Qué hace esto?** Borra todo lo que no esté en esa carpeta, mueve el contenido de la carpeta a la raíz del repositorio y reescribe todo el historial para que parezca que los demás archivos nunca existieron.
- **Añade el nuevo remoto de Gitea** y sube el contenido:
git remote add origin ssh://git@git.fidmag.org:2222/usuario/nuevo-repo.git
git push -u origin main
== consideraciones
* **LFS:** Si el directorio que separas contiene archivos LFS, asegúrate de que los objetos LFS también se migren. Al usar `git-filter-repo`, el historial de LFS suele mantenerse, pero tendrás que hacer un `git lfs push --all` al nuevo Gitea.
* **Limpieza en el origen:** Una vez que el nuevo repositorio sea independiente y funcione bien, recuerda borrar ese directorio del repositorio original para no mantener código duplicado:
git rm -r nombre-del-directorio
git commit -m "Eliminado directorio migrado a repositorio independiente"
git push
* **Tags:** Ambos métodos intentan preservar los *tags* (etiquetas) que hacían referencia a archivos en ese directorio, lo cual es ideal para mantener las versiones históricas.