Eu tenho um repositório de cópia de trabalho no qual tenho trabalhado sem problemas; a origem deste repositório está no GitHub.
Eu gostaria de disponibilizar meu repositório de cópia de trabalho como a origem para minha máquina de construção (uma VM em outro host físico), de modo que os commits que faço para minha cópia de trabalho possam ser compilados e testados na máquina de construção sem ter que passar por GitHub primeiro. Já tenho um build para o repositório GitHub em andamento, mas gostaria que fosse um repositório / build "dourado"; ou seja, se algo entrar lá, a compilação com o GitHub deve ser aprovada.
Eu olhei a documentação sobre URLs do Git e vi que há a opção de usar uma URL no formulário git://host.xz[:port]/path/to/repo.git/
(consulte, por exemplo, a documentação do git-clone ). Quero fazer isso da maneira mais simples possível, com o mínimo de configuração: não quero ter que configurar um daemon SSH ou servidor web apenas para publicar isso na minha máquina de construção.
Estou executando o Windows 7 x64 RC, tenho MSysGit e TortoiseGit instalados e abri a porta padrão do Git (9814) no firewall. Assuma que o repo da cópia de trabalho está em D:\Visual Studio Projects\MyGitRepo
e o nome do host é devbox
. A máquina de construção é o Windows Server 2008 x64. Tenho tentado o seguinte comando na máquina de construção, com a saída associada:
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)
Estou esquecendo de algo?
fonte
Respostas:
Existem cinco possibilidades para configurar um repositório para pull from:
git clone /path/to/repo
ougit clone file://path/to/repo
. Menos trabalho se você tiver um sistema de arquivos em rede, mas não um uso muito eficiente da rede. (Esta é quase exatamente a solução proposta por Joakim Elofsson )git clone http://example.com/repo
. Você precisa de qualquer servidor web e também precisa executar (talvez automaticamente, de um gancho) git-update-server-info para gerar as informações necessárias para buscar / puxar por meio de protocolos "burros".git clone ssh://example.com/srv/git/repo
ougit clone example.com:/srv/git/repo
. Você precisa configurar o servidor SSH (daemon SSH) e ter o SSH instalado no cliente (por exemplo, PuTTY no MS Windows).git clone git://example.com/repo
. Você precisa executar o git-daemon no servidor; consulte a documentação para obter detalhes (você pode executá-lo como um processo autônomo apenas para obter, não é necessário executar como serviço). git-daemon é uma parte do git.git clone file.bndl
(se o clone não funcionar, você pode fazer "git init", "git remote add "e" git fetch ").O que está faltando em seu exemplo é provavelmente a execução do git-daemon no servidor. Isso, ou configuração incorreta do git-daemon.
Infelizmente, não posso ajudá-lo a executar o git-daemon como serviço no MS Windows. No entanto, não há nada no anúncio da última versão do msysGit sobre o git-daemon não funcionar.
fonte
Além das respostas de Jakub Narębski, há outra maneira, mais de acordo com sua pergunta original. Você poderia clonar do github como costuma fazer, então, quando quiser realizar uma retirada única de seu repositório local, basta fazer o seguinte:
(em vez de mestre, você pode colocar qualquer nome de branch.)
fonte
..
em <path / to / repo> não parecem funcionar; use um caminho completo.A rota ssh funciona bem, mas requer um servidor ssh remoto. Se você tiver a plataforma Windows, o Cygwin fornece um servidor ssh funcional que funciona com o Git, mas atualiza manualmente o Git se estiver usando o Cygwin Git (escrevi algumas dicas em http://alecthegeek.wordpress.com/2009/01/21/top-tip -upgrade-git-on-cygwin / ).
fonte
Recentemente, mudei um de meus projetos git para replicar a si mesmo em um servidor HTTP usando sitecopy para fazer uploads de arquivos reais.
É muito fácil, basta usar
git update-server-info
e espelhar o diretório .git para algum diretório acessível por http em seu servidor. Usei 'project.git', que é bastante comum.Git pull from http: // site / project-git funciona como um campeão, e eu não preciso ter nada no servidor, exceto acesso FTP, embora sitecopy suporte webdav também.
Não recomendo usar sitecopy, entretanto, porque ele não mantém várias máquinas em sincronia bem. Para o meu projeto, o repositório HTTP é somente leitura e as atualizações de ouro vêm de apenas uma máquina, portanto, funciona bem o suficiente.
fonte
Se você tem um caminho como
e você
git init
já fez , então você também tem uma pastaAgora você faz uma nova pasta
Vá para essa pasta e execute
git clone --bare ..\Project
( bare é importante),volte para a
C:\Project\
pasta e faça agit remote add-url local ..\.git\Project
.Agora você acabou de fazer
git add -A
,git commit -m "HelloWorld"
egit push local master
.Você pode compartilhar a
Project
pasta, conectá-laZ:
e fazergit clone Z:\Project
- você pode usar agoragit pull origin master
egit push origin master
para enviar / receber alterações de um computador para outro.fonte
Se seu host remoto estiver na mesma rede do Windows, ou seja, você pode acessá-lo como \ remotehost, então você pode mapear a unidade de rede no explorer, digamos z: -> \ remotehost \ repodir, depois disso você pode usar 'git clone / z / myproject 'para clonar o projeto
fonte