Criando um git server local

Algumas vezes queremos ter um ponto comum em uma rede local onde podemos enviar nossos commits, especialmente quando estamos trabalhando em equipe. Pois bem, a solução é simples.

Para tal feito, basta ter uma máquina Linux com sshd rodando e git instalado. Feito isto, vá até um local onde queira criar o repositório, podendo ser em um $HOME de um usuário mesmo:
mkdir /home/fulano/meu_projeto.git
cd /home/fulano/meu_projeto.git

Além do famoso git init, é preciso um parâmetro adicional:
git init --bare

Com este comando o git cria um repositório “nú”. Ao executar o git init, este repositório se torna um working directory. Esse tipo de repositório tem um diretório .git onde uma cópia dos arquivos da pasta do projeto e todas as configurações são guardadas.

Já nos “repositórios nús”, os arquivos de configuração são colocados na própria pasta raiz do projeto ao invés da pasta .git, e com isso não existe uma working tree, com uma cópia dos seus arquivos lá dentro.

Para poder acessar os arquivos do seu novo repositório, basta executar:
git clone [email protected]_do_git_server:/home/fulano/meu_projeto

O git utiliza o protocolo SSH para fazer as transferências de commits, então basta você informar a senha do usuário do SSH e tudo funcionará.

Ao fazer git push você também precisa informar a senha do usuário do SSH. Mas para evitar, basta executar um ssh-copy-id, assim, não será necessário informar a senha em cada push.

Espero que este artigo tenha sido útil para você! Dúvidas, críticas ou sugestões, favor informar nos comentários.

Até a próxima!

Referências:
Git init manual
ssh-copy-id manual

  • Legal o post amigo, mas da pra falar mais a respeito disso.. inclusive como utilizar o arquivo post-receive pra configurar as pastas do repositório.. ótimo artigo! Parabéns pela iniciativa

    • Marcos Souza

      @luuckx2:disqus que bom que gostou!

      Sobre falar sobre git hooks, acho bem interessante, mas este nao era o foco deste artigo. Mas, anotado aqui, tentarei estudar estudar e falar sobre eles aqui no blog!

      Obrigado novamente por ler nossos textos 🙂

      • heheheh, eu fiz um post no blog da minha empresa, se quiser dar uma olhada…
        No exemplo eu uso o CakePHP e uso o post-receive para definir a pasta que vai receber os arquivos, criar os alias.
        http://greensolucoes.com/criando-um-servidor-online-com-git/

        • Marcos Souza

          @luuckx2:disqus, bem bacana seu post, e bem util para fazer esse deploy com git 🙂

          Quero ver se faco um post falando de criacao de hooks para validar, commits, ao estilo: “voce precisa informar um ticket na mensagem de commit” e rejeitar o commit ou push 🙂

  • Legal o post amigo, mas da pra falar mais a respeito disso.. inclusive como utilizar o arquivo post-receive pra configurar as pastas do repositório.. ótimo artigo! Parabéns pela iniciativa

    • Marcos Souza

      @luuckx2:disqus que bom que gostou!

      Sobre falar sobre git hooks, acho bem interessante, mas este nao era o foco deste artigo. Mas, anotado aqui, tentarei estudar estudar e falar sobre eles aqui no blog!

      Obrigado novamente por ler nossos textos 🙂

      • heheheh, eu fiz um post no blog da minha empresa, se quiser dar uma olhada…
        No exemplo eu uso o CakePHP e uso o post-receive para definir a pasta que vai receber os arquivos, criar os alias.
        http://greensolucoes.com/criando-um-servidor-online-com-git/

        • Marcos Souza

          @luuckx2:disqus, bem bacana seu post, e bem util para fazer esse deploy com git 🙂

          Quero ver se faco um post falando de criacao de hooks para validar, commits, ao estilo: “voce precisa informar um ticket na mensagem de commit” e rejeitar o commit ou push 🙂

  • Legal o post amigo, mas da pra falar mais a respeito disso.. inclusive como utilizar o arquivo post-receive pra configurar as pastas do repositório.. ótimo artigo! Parabéns pela iniciativa

    • Marcos Souza

      @luuckx2:disqus que bom que gostou!

      Sobre falar sobre git hooks, acho bem interessante, mas este nao era o foco deste artigo. Mas, anotado aqui, tentarei estudar estudar e falar sobre eles aqui no blog!

      Obrigado novamente por ler nossos textos 🙂

      • heheheh, eu fiz um post no blog da minha empresa, se quiser dar uma olhada…
        No exemplo eu uso o CakePHP e uso o post-receive para definir a pasta que vai receber os arquivos, criar os alias.
        http://greensolucoes.com/criando-um-servidor-online-com-git/

        • Marcos Souza

          @luuckx2:disqus, bem bacana seu post, e bem util para fazer esse deploy com git 🙂

          Quero ver se faco um post falando de criacao de hooks para validar, commits, ao estilo: “voce precisa informar um ticket na mensagem de commit” e rejeitar o commit ou push 🙂

  • OldKnight100

    Para uma solução mais completa pode-se instalar a versão CE (community edition) do GitLab .com, que pode ser instalada no servidor local. A CE do GitLab é gratuita e é uma solução open source.

    • Marcos Souza

      Ola @OldKnight100:disqus , bacana sua dica, mas precisa de uma serie de dependencias para instalar esse GitLab… Quando voce diz solucao completa, oq eu voce quer dizer?

      Obrigado pela indicacao do GitLab!

      • OldKnight100

        Com solução completa eu falo de funções como milestones, issues, CI, Grupos, etc.

  • OldKnight100

    Para uma solução mais completa pode-se instalar a versão CE (community edition) do GitLab .com, que pode ser instalada no servidor local. A CE do GitLab é gratuita e é uma solução open source.

    • Marcos Souza

      Ola @OldKnight100:disqus , bacana sua dica, mas precisa de uma serie de dependencias para instalar esse GitLab… Quando voce diz solucao completa, oq eu voce quer dizer?

      Obrigado pela indicacao do GitLab!

      • OldKnight100

        Com solução completa eu falo de funções como milestones, issues, CI, Grupos, etc.

  • OldKnight100

    Para uma solução mais completa pode-se instalar a versão CE (community edition) do GitLab .com, que pode ser instalada no servidor local. A CE do GitLab é gratuita e é uma solução open source.

    • Marcos Souza

      Ola @OldKnight100:disqus , bacana sua dica, mas precisa de uma serie de dependencias para instalar esse GitLab… Quando voce diz solucao completa, oq eu voce quer dizer?

      Obrigado pela indicacao do GitLab!

      • OldKnight100

        Com solução completa eu falo de funções como milestones, issues, CI, Grupos, etc.