¿Por qué VS Code no carga Git ni las extensiones?
Cristian Tafur
@Cristia16195614Abres un proyecto y el panel de control de código fuente se queda en "Examinando la carpeta de repositorios Git…". La vista de extensiones dice que no tienes ninguna instalada, aunque sabes que sí. Recargas la ventana y sigue igual.
Me pasó hace poco. El repositorio estaba bien y git status respondía al instante desde la terminal. El problema era otro: demasiadas extensiones pesadas arrancando a la vez en un proyecto que no las necesitaba.
Descarta primero el repositorio
Abre una terminal en la carpeta del proyecto y prueba:
git status
Si responde rápido y sin errores, Git está bien. Revisa también que no haya un archivo de bloqueo olvidado:
ls .git/*.lock
Si aparece index.lock y ningún proceso de Git está corriendo, puedes borrarlo. Si no hay ninguno, el problema está en VS Code.
Abre el proyecto sin extensiones
Cierra VS Code por completo, no solo la ventana, y ábrelo desde la terminal así:
code --disable-extensions .
Si ahora Git carga en un par de segundos, la causa es una extensión o la suma de varias. Si tampoco carga, revisa el apartado sobre el entorno de la terminal más abajo.
Encuentra la extensión que estorba
VS Code trae una herramienta que va desactivando la mitad de las extensiones cada vez hasta dar con la culpable. Abre la paleta con Ctrl+Shift+P y busca:
Help: Start Extension Bisect
Te pregunta en cada ronda si el problema sigue y, al final, te dice qué extensión lo provoca.
Para ver cuánto tarda en activarse cada extensión, usa:
Developer: Show Running Extensions
Ahí se ve el tiempo de activación de cada una. Las que tardan varios segundos son las primeras sospechosas.
En mi caso no había una sola culpable. Tenía activos el paquete de Java, SonarLint, Python con Pylance y Flutter en un proyecto de Next.js, y el proceso de extensiones tardaba minutos en terminar de arrancar. Git se activa después de las extensiones de arranque, así que esperaba todo ese tiempo.
Usa un perfil para cada tipo de proyecto
Desinstalar extensiones que usas en otros proyectos no tiene sentido. Lo práctico es crear un perfil con solo lo que necesita cada tipo de trabajo.
- Abre la paleta y ejecuta
Profiles: New Profile. - Ponle un nombre, por ejemplo "Web", y crea el perfil a partir del actual.
- Dentro de ese perfil, desactiva en la vista de extensiones todo lo que no uses en proyectos web.
- Con el proyecto abierto, cambia a ese perfil con
Profiles: Switch Profile. VS Code recuerda qué perfil usa cada carpeta.
Si prefieres no crear perfiles, en la vista de extensiones cada una tiene la opción "Deshabilitar (área de trabajo)", que la apaga solo en el proyecto abierto.
Revisa cuánto tarda en abrir tu terminal
En Linux, VS Code lee las variables de entorno de tu shell al iniciar. Si tu ~/.bashrc tarda mucho, aparece un aviso parecido a "No se puede resolver el entorno de shell en un tiempo razonable" y el arranque se hace más lento.
Mide cuánto tarda una terminal interactiva en abrir:
time bash -ilc exit
Si pasa de uno o dos segundos, busca en tu ~/.bashrc lo que se ejecuta en cada apertura. En mi caso era el autocompletado de Angular CLI, que lanzaba Node en cada terminal nueva:
source <(ng completion script)
La solución fue guardar ese script una vez en un archivo:
ng completion script > ~/.ng-completion.bash
Y cambiar la línea del ~/.bashrc por:
source ~/.ng-completion.bash
La terminal pasó de tardar casi 7 segundos a medio segundo. Si actualizas Angular CLI y el autocompletado deja de funcionar, vuelve a generar el archivo con el mismo comando.
Dónde mirar si nada de esto funciona
VS Code guarda registros de cada ventana. Ábrelos desde la paleta con:
Developer: Open Logs Folder
Dentro de la carpeta de cada ventana, el archivo exthost/exthost.log muestra en qué orden se activan las extensiones. Si ves que Git nunca aparece o que hay pausas largas entre una línea y la siguiente, ahí tienes la pista.