/ / Visual Studio no puede funcionar con dos URL de origen: git, visual-studio-2013

Visual Studio no puede funcionar con dos URL de origen: git, visual-studio-2013

Estoy tratando de mantener sincronizados dos repositorios alojados en dos sitios diferentes (Github y Bitbucket) siguiendo una guía. Agregué una nueva URL de origen a la configuración y ahora mi .git / config tiene este aspecto:

[remote "origin"]
url = https://rrev@bitbucket.org/rrev/sampclient.git
fetch = +refs/heads/*:refs/remotes/origin/*
url = https://github.com/rrev/SAMPClient.git

Ahora Github y Bitbucket tienen los mismos compromisosy el mismo código fuente, pero cuando intento enviar un compromiso a los dos repositorios, Visual Studio envía el compromiso solo a Github, dejando atrás Bitbucket.

Parece que Visual Studio no funciona bien con dos urls porque, cuando me mudé url = https://github.com/rrev/SAMPClient.git en [remote "all"] para las pruebas, Visual Studio envía correctamente la confirmación a Bitbucket y cuando devolví la URL de Github, detectó que el repositorio estaba detrás del repositorio local.

¿Es una limitación de Visual Studio? Porque cuando uso la línea de comandos para empujar los cambios (usando git push) los dos repositorios se sincronizan correctamente.

Respuestas

1 para la respuesta № 1

Esta es una limitación de Visual Studio. Como puedes ver si usas git push todo funcionando bien.

-Anton Ego


1 para la respuesta № 2

Si necesita dos controles remotos, necesita dos controles remotos. Estoy totalmente equivocado, git push honrará múltiples URLs. No puedo decir si esta es una característica deliberada o accidental. Según libgit2, esta es una característica deliberada de Git para su situación exacta.

Supongo que Visual Studio no está utilizando la línea de comandos de git, sino que está utilizando una biblioteca como libgit2 (confirmado). libgit2 es una opción mucho más rápida y confiable (especialmente en Windows) para que una aplicación use Git que envolviendo la línea de comandos. libgit2 no tiene analogías directas con la línea de comandos de Git, el trabajo con controles remotos es particularmente complicado. Los controles remotos libgit2 solo pueden tener una url, Está al horno en su estructura de datos y API.

Mi sugerencia es empujar desde el comandola línea, o dos tienen dos controles remotos y recuerde presionarlos a ambos, o decidir que uno de ellos es un espejo y configurar un proceso automático para sincronizarlo, o (IMO mejor) decidir que no necesita mantener un repositorio idéntico en un servicio de desarrollo redundante.