2010-04-15 8 views
13

Actualmente estoy usando git en Windows mediante una combinación de msysgit y Cygwin.¿Cómo puedo adjuntar varias URL a un solo control remoto git?

Tengo una computadora portátil que me muevo un poco, por lo que no está en una ubicación constante. Lamentablemente, no tengo un nombre coherente debido a que el nombre de la computadora no se resuelve en todas las ubicaciones a las que me conecto, por lo que no puedo usar el nombre de la computadora como el host de la url (por ejemplo, git:// compname/repo), así que tengo que usar la dirección IP.

¿Hay alguna forma de que pueda agregar varias URL para extraer de un control remoto en particular? He visto

git remote set-url --add [--push] <name> <newurl> 

como una manera de añadir varias direcciones URL a un mando a distancia, y puedo ver los cambios en el archivo .git/config, pero git sólo se trata de usar la primera.

¿Hay alguna manera de hacer que git intente usar todas las URL? He intentado con la actualización remota de git fetch y git, pero ninguno intenta nada después de la primera url.

Tenga en cuenta que todavía no lo he probado en Linux, y no puedo solucionar la resolución del nombre de la computadora ya que está en funcionamiento.

+1

No creo que Git admita varias URL para ** ** aún ** remoto (recuperar de la URL de respuesta inmediata, enviar a todas las URL) , por lo que debe usar un control remoto por URL actualmente. –

+1

posible duplicado de [extracción/inserción desde múltiples ubicaciones remotas] (http://stackoverflow.com/questions/849308/pull-push-from-multiple-remote-locations) – RedX

+0

Consulte http://stackoverflow.com/questions/ 849308/pull-push-from-multiple-remote-locations segunda respuesta – RedX

Respuesta

0

Sugeriría usar algún otro control remoto como punto de sincronización entre su computadora portátil y otras computadoras que usa.

p. Ej. github.

Si desea mantenerlo privado, intente unfuddle o codaset.

+0

Me encantaría poder hacer esto, pero tendría que configurar un servidor de git en una caja de Windows en una infraestructura de TI bastante cerrada para llevarlo a cabo. No se permite presionar a un repositorio fuera de la intranet. – deterb

1

Yo personalmente lo mismo, lo que he utilizado es de dos mandos a distancia

origen: ubicación de mi repo cuando están en casa foriegn: ubicación de mi repo cuando en cualquier otro lugar (mis DNS redirigen a mi casa)

luego simplemente empujo/tire al control remoto apropiado, es un poco desordenado pero funciona.

2

creo que su mejor mejor es configurar el URI remoto para apuntar a computername pero luego añadir de equipo a su archivo de hosts (ubicado en %SystemRoot%\system32\drivers\etc\hosts):

computername 192.168.100.34 
# computername 192.168.100.68 

A continuación, puede tener varias entradas para los diferentes IP direcciones y comentar/descomentarlos según sea necesario. Ya no tendrás que preocuparte por cambiar el URI remoto en base a un repo, simplemente actualiza en un lugar y luego todos los repos usando nombre de computadora ya que el URI usará la nueva ubicación.

+0

Desafortunadamente no tiene acceso a etc/hosts – deterb

+0

@deterb ¿Qué quiere decir "no tiene acceso? Debe haber el equivalente de un archivo de hosts independientemente del sistema operativo que esté ejecutando: http: //en.wikipedia .org/wiki/Hosts_% 28file% 29 # Location_in_the_file_system – IQAndreas

1

Este enfoque está inspirado en la respuesta de @Mark Stickley. Funciona incluso si tiene dos números de puerto diferentes (no solo nombres de host) para acceder a la misma máquina desde dos ubicaciones diferentes.

Puede guardar múltiples versiones de ~/.ssh/config dependiendo del número de situaciones.

Por ejemplo, en mi caso en casa, accedo a mi servidor con nombre de host como my-fancy-server y puerto como 22. En la oficina, el nombre de host es my-dyndns-name y el nombre del puerto es XXX.

Así que tengo dos versiones de ~/.ssh/config. En casa, se dice:

Host home 
    my-fancy-server 
    Port 22 
    User abhishek 
    IdentityFile /home/abhishek/.ssh/id_rsa 

(. Ajusta por favor él dos últimos valores en consecuencia el último no es necesario si no se utiliza claves) En la oficina, que dice

Host home 
    my-dyndns-name 
    Port XXX 
    User abhishek 
    IdentityFile /home/abhishek/.ssh/id_rsa 

Tengo un script que ajusta el contenido de ~/.ssh/config cuando me mudo a una nueva ubicación. Uno puede automatizar incluso esto escribiendo un script que se desencadena por cambios en la red.

que tienen un solo control remoto en mi archivo de configuración que se parece a git

[remote "origin"] 
    url = home:/path/to/repo 
    fetch = +refs/heads/*:refs/remotes/origin/* 

EDIT: Me acabo de enterar que no tengo que hacer todo esto. Acabo de habilitar el loopback nat en mi enrutador y ahora puedo acceder uniformemente a mi computadora usando el nombre/puerto externo. Sin embargo, en muchas situaciones, como una red corporativa, jugar con el enrutador podría no ser una opción

Cuestiones relacionadas