-
1. Primeiros Passos
- 1.1 Sobre Controle de Versão
- 1.2 Uma Breve História do Git
- 1.3 O que é Git?
- 1.4 A Linha de Comando
- 1.5 Instalando o Git
- 1.6 Configuração inicial do Git
- 1.7 Obtendo Ajuda
- 1.8 Resumo
-
2. Fundamentos do Git
-
3. Ramificação (Branching) no Git
-
4. Git no Servidor
- 4.1 Os Protocolos
- 4.2 Colocando o Git em um Servidor
- 4.3 Gerando a sua Chave Pública SSH
- 4.4 Configurando o Servidor
- 4.5 Git Daemon
- 4.6 Smart HTTP
- 4.7 GitWeb
- 4.8 GitLab
- 4.9 Opções de Hospedagem de Terceiros
- 4.10 Resumo
-
5. Git Distribuído
-
6. GitHub
-
7. Ferramentas do Git
- 7.1 Seleção de Revisão
- 7.2 Área de Stage Interativa
- 7.3 Fazendo Stash e Limpando
- 7.4 Assinando Seu Trabalho
- 7.5 Pesquisando (Searching)
- 7.6 Reescrevendo o Histórico
- 7.7 Reset Desmistificado
- 7.8 Merging Avançado
- 7.9 Rerere
- 7.10 Depurando com Git
- 7.11 Submódulos
- 7.12 Empacotando (Bundling)
- 7.13 Substituir (Replace)
- 7.14 Armazenamento de Credenciais
- 7.15 Resumo
-
8. Customizando o Git
- 8.1 Configuração do Git
- 8.2 Atributos do Git
- 8.3 Hooks do Git
- 8.4 Uma Política de Exemplo Imposta pelo Git
- 8.5 Resumo
-
9. Git e Outros Sistemas
- 9.1 Git como Cliente
- 9.2 Migrando para o Git
- 9.3 Resumo
-
10. Git Internals (Por Dentro do Git)
- 10.1 Encanamento e Porcelana (Plumbing and Porcelain)
- 10.2 Objetos do Git
- 10.3 Referências do Git
- 10.4 Arquivos de pacote (Packfiles)
- 10.5 Refspec
- 10.6 Protocolos de Transferência
- 10.7 Manutenção e Recuperação de Dados
- 10.8 Variáveis de Ambiente
- 10.9 Resumo
-
A1. Appendix A: O Git em Outros Ambientes
- A1.1 Interfaces Gráficas
- A1.2 Git no Visual Studio
- A1.3 Git no Visual Studio Code
- A1.4 Git no IntelliJ / PyCharm / WebStorm / PhpStorm / RubyMine
- A1.5 Git no Sublime Text
- A1.6 Git no Bash
- A1.7 Git no Zsh
- A1.8 Git no PowerShell
- A1.9 Resumo
-
A2. Appendix B: Incorporando o Git nos seus Aplicativos
- A2.1 Linha de Comando do Git
- A2.2 Libgit2
- A2.3 JGit
- A2.4 go-git
- A2.5 Dulwich
-
A3. Appendix C: Comandos do Git
- A3.1 Configuração e Ajustes
- A3.2 Obtendo e Criando Projetos
- A3.3 Snapshots Básicos
- A3.4 Branches e Merges
- A3.5 Compartilhando e Atualizando Projetos
- A3.6 Inspeção e Comparação
- A3.7 Depuração
- A3.8 Patches
- A3.9 E-mail
- A3.10 Sistemas Externos
- A3.11 Administração
- A3.12 Comandos de Encanamento
4.5 Git no Servidor - Git Daemon
Git Daemon
Em seguida, configuraremos um daemon para servir repositórios usando o protocolo “Git”. Esta é uma escolha comum para acesso rápido e não autenticado aos seus dados Git. Lembre-se de que, como este não é um serviço autenticado, qualquer coisa que você sirva através deste protocolo será pública dentro da sua rede.
Se você estiver executando isso em um servidor fora do seu firewall, deve ser usado apenas para projetos que são publicamente visíveis para o mundo. Se o servidor em que você o executa estiver dentro do seu firewall, você pode usá-lo para projetos aos quais um grande número de pessoas ou computadores (servidores de integração contínua ou de build) tem acesso de leitura, quando você não quer ter que adicionar uma chave SSH para cada um.
De qualquer forma, o protocolo Git é relativamente fácil de configurar. Basicamente, você precisa executar este comando de maneira daemonizada (em segundo plano):
$ git daemon --reuseaddr --base-path=/srv/git/ /srv/git/
A opção --reuseaddr permite que o servidor reinicie sem esperar que as conexões antigas atinjam o tempo limite, enquanto a opção --base-path permite que as pessoas clonem projetos sem especificar o caminho inteiro, e o caminho no final informa ao Git daemon onde procurar os repositórios a serem exportados.
Se você estiver executando um firewall, também precisará abrir um buraco (punch a hole) nele na porta 9418 da máquina em que está configurando isso.
Você pode daemonizar esse processo de várias maneiras, dependendo do sistema operacional que estiver executando.
Como o systemd é o sistema init mais comum entre as distribuições Linux modernas, você pode usá-lo para esse fim.
Basta colocar um arquivo em /etc/systemd/system/git-daemon.service com este conteúdo:
[Unit]
Description=Start Git Daemon
[Service]
ExecStart=/usr/bin/git daemon --reuseaddr --base-path=/srv/git/ /srv/git/
Restart=always
RestartSec=500ms
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=git-daemon
User=git
Group=git
[Install]
WantedBy=multi-user.target
Você deve ter notado que o Git daemon é iniciado aqui com git como grupo e usuário.
Modifique-o para atender às suas necessidades e certifique-se de que o usuário fornecido exista no sistema.
Além disso, verifique se o binário do Git está realmente localizado em /usr/bin/git e altere o caminho se necessário.
Finalmente, você executará systemctl enable git-daemon para iniciar o serviço automaticamente na inicialização, e pode iniciar e parar o serviço com, respectivamente, systemctl start git-daemon e systemctl stop git-daemon.
Em outros sistemas, você pode querer usar xinetd, um script no seu sistema sysvinit, ou alguma outra coisa — desde que você consiga que esse comando seja daemonizado e monitorado de alguma forma.
Em seguida, você precisa informar ao Git a quais repositórios ele deve permitir o acesso não autenticado baseado no servidor Git.
Você pode fazer isso em cada repositório criando um arquivo chamado git-daemon-export-ok.
$ cd /path/to/project.git
$ touch git-daemon-export-ok
A presença desse arquivo informa ao Git que não há problema em servir este projeto sem autenticação.