Tengo un repositorio de copias de trabajo en el que he estado trabajando sin problemas; el origen de este repositorio está en GitHub.
Me gustaría que mi repositorio de copias de trabajo esté disponible como el origen de mi máquina de compilación (una VM en otro host físico), de modo que las confirmaciones que hago en mi copia de trabajo se puedan compilar y probar en la máquina de compilación sin tener que pasar por Primero GitHub. Ya tengo una compilación para el repositorio de GitHub, pero me gustaría que fuera un repositorio / compilación "dorado"; es decir, si algo entra allí, se debe garantizar que la compilación contra GitHub pase.
He mirado la documentación sobre las URL de Git y veo que existe la opción de usar una URL en el formulario git://host.xz[:port]/path/to/repo.git/
(ver, por ejemplo, la documentación de git-clone ). Quiero hacer esto de la manera más simple posible, con la mínima configuración: no quiero tener que configurar un demonio SSH o un servidor web solo para publicar esto en mi máquina de compilación.
Estoy ejecutando Windows 7 x64 RC, tengo MSysGit y TortoiseGit instalados y he abierto el puerto predeterminado de Git (9814) en el firewall. Suponga que el repositorio de copia de trabajo está en D:\Visual Studio Projects\MyGitRepo
, y el nombre de host es devbox
. La máquina de compilación es Windows Server 2008 x64. He estado probando el siguiente comando en la máquina de compilación, con el resultado asociado:
D:\Integration>git clone "git://devbox/D:\Visual Studio Projects\MyGitRepo"
Initialized empty Git repository in D:/Integration/MyGitRepo/.git/
devbox[0: 192.168.0.2]: errno=No error
fatal: unable to connect a socket (No error)
¿Me estoy perdiendo de algo?
fuente
Respuestas:
Existen cinco posibilidades para configurar un repositorio para extraer de:
git clone /path/to/repo
ogit clone file://path/to/repo
. Trabaje menos si tiene un sistema de archivos en red, pero no hace un uso muy eficiente de la red. (Esta es casi exactamente la solución propuesta por Joakim Elofsson )git clone http://example.com/repo
. Necesita cualquier servidor web, y también necesita ejecutar (quizás automáticamente, desde un gancho) git-update-server-info para generar la información necesaria para buscar / extraer a través de protocolos "tontos".git clone ssh://example.com/srv/git/repo
ogit clone example.com:/srv/git/repo
. Debe configurar el servidor SSH (demonio SSH) y tener SSH instalado en el cliente (por ejemplo, PuTTY en MS Windows).git clone git://example.com/repo
. Necesita ejecutar git-daemon en el servidor; consulte la documentación para obtener más detalles (puede ejecutarlo como un proceso independiente solo para recuperar, no es necesario ejecutarlo como servicio). git-daemon es parte de git.git clone file.bndl
(si clonar no funciona, puede hacer "git init", "git remote add "y" git fetch ").Lo que le falta en su ejemplo es probablemente ejecutar git-daemon en el servidor. Eso, o configurar mal git-daemon.
Desafortunadamente, no puedo ayudarlo a ejecutar git-daemon como servicio en MS Windows. Sin embargo, no hay nada en el anuncio de la última versión de msysGit sobre git-daemon que no funciona.
fuente
Además de las respuestas de Jakub Narębski, hay otra forma, más acorde con su pregunta original. Puede clonar desde github como lo hace habitualmente, luego, cuando desee realizar una extracción única de su repositorio local, simplemente haga esto:
(en lugar de master puede poner cualquier nombre de rama).
fuente
..
en <path / to / repo> no parece funcionar; use una ruta completa en su lugar.La ruta ssh funciona bien pero requiere un servidor ssh remoto. Si tiene una plataforma Windows, Cygwin proporciona un servidor ssh que funciona con Git, pero actualice manualmente Git si usa Cygwin Git (escribí algunas sugerencias en http://alecthegeek.wordpress.com/2009/01/21/top-tip -upgrade-git-on-cygwin / ).
fuente
Recientemente cambié uno de mis proyectos de git para replicarse a sí mismo en un servidor HTTP usando sitecopy para realizar las cargas de archivos reales.
Es bastante fácil, solo use y
git update-server-info
luego refleje el directorio .git en algún directorio accesible por http en su servidor. Usé 'project.git', que es bastante común.Git pull from http: // site / project-git funciona como un campeón, y no tengo que tener nada en el servidor excepto el acceso FTP, aunque sitecopy también es compatible con webdav.
Sin embargo, no recomiendo usar sitecopy, ya que no mantiene bien sincronizadas varias máquinas. Para mi proyecto, el repositorio HTTP es de solo lectura y las actualizaciones de oro provienen de una sola máquina, por lo que funciona lo suficientemente bien.
fuente
Si tienes un camino como
y ya lo hiciste
git init
, así que también tienes una carpetaAhora crea una nueva carpeta
Vaya a esa carpeta y ejecute
git clone --bare ..\Project
(lo básico es importante),vuelva a su
C:\Project\
carpeta y haga ungit remote add-url local ..\.git\Project
.Ahora que acaba de hacer
git add -A
,git commit -m "HelloWorld"
ygit push local master
.Puede compartir la
Project
carpeta, conectarlaZ:
y hacerlogit clone Z:\Project
; puede usar ahoragit pull origin master
ygit push origin master
para enviar / extraer cambios de una computadora a otra.fuente
Si su host remoto está en la misma red de Windows, es decir, puede acceder a él como \ remotehost, entonces puede mapear la unidad de red en el explorador, digamos z: -> \ remotehost \ repodir, luego puede usar 'git clone / z / myproject 'para clonar el proyecto
fuente