Eu sou um usuário antigo do Subversion que tentará o Git. Eu li um pouco sobre isso e entendi a natureza distribuída - vejo muitos benefícios.
No entanto, gosto da ideia de um servidor central que possa assumir o papel de backups, sistema de registro, etc., enquanto ainda estiver usando o Git para minha ramificação e compartilhamento local. Como não estou desenvolvendo um projeto de código aberto, não posso usar o Github (sem pagar). Portanto, minha pergunta é: qual é a melhor maneira de executar um servidor git local?
Sei que isso pode ser contra o padrão de uso padrão do Git, mas será útil para o meu projeto. Quaisquer preocupações que eu possa ter esquecido são sempre bem-vindas, no entanto.
Obrigado!
Respostas:
Você pode simplesmente configurar um servidor ssh e executar um repositório central lá. Todos os desenvolvedores simplesmente concordam (por uma questão de política) em enviar para o servidor quando terminarem de fazer confirmações. Esse é o padrão de uso no meu local de trabalho. Muito CVS e SVN-like.
/var/gitroot
por exemplo).mkdir project.git && cd project.git && git init --bare --shared=group
).git clone ssh://yourserver.com/var/gitroot/project.git && cd project
)git add README
)git commit -m "Initial import"
),git push origin master
)Isso deve configurar as coisas para você.
fonte
git init --bare project.git
?Gitorious é uma interface da web de código aberto para o git que você pode executar em seu próprio servidor, assim como o github:
http://getgitorious.com/
Atualizar:
http://gitlab.org/ também é outra alternativa agora.
Atualização 2:
Gitorious agora se juntou ao GitLab
fonte
Experimente o GitLab
A melhor ferramenta GUI do git que eu já usei. É muito semelhante ao GitHub.
É de código aberto (licença MIT) e é o software de gerenciamento git mais instalado, com mais de 25.000 instalações. Possui lançamentos mensais e uma comunidade ativa com mais de 375 colaboradores. Você pode ter repositórios privados, internos e públicos ilimitados em seu próprio servidor. É um aplicativo Ruby on Rails que roda na maioria das plataformas Unix.
fonte
Se você não se importa com a linha de comando, o gitolite é um deleite absoluto ao trabalhar em um ambiente corporativo em que você precisa definir direitos de acesso diferentes em repositórios diferentes. É uma espécie de versão mais recente da gitosis mencionada pelo @Chris.
Aqui está o resumo do site do autor:
Ele tem um conjunto de recursos bastante abrangente, mas uma coisa de que gosto muito é que a edição do dia-a-dia é feita através de um repositório git especial. Ou seja, adicionar um usuário é apenas
E ao precisar examinar o código pelo navegador, o gitolite oferece suporte para a "sincronização" da configuração com o gitweb. Ou, se você gosta do cgit , que é um frontend muito bom da web para o git, escrito em C, melhor, então veja este tutorial .
fonte
Você pode considerar o Gitblit , um servidor Java Git de código aberto, integrado e puro, visualizador e gerenciador de repositório para pequenos grupos de trabalho.
fonte
Navegador Bare Bones
do livro git scm
combine-o com algo como a abordagem descrita aqui para desenvolvimento distribuído (crédito ao datagrok pelo conceito bem descrito)
Inicie um servidor git único a partir de qualquer repositório local.
Eu twittou isso já, mas achei que poderia usar alguma expansão:
Digamos que você use um fluxo de trabalho git que envolva o trabalho com um repositório "oficial" principal, no qual você puxa e envia suas alterações de e para dentro. Tenho certeza que muitas empresas fazem isso, assim como muitos usuários de serviços de hospedagem git como o Github.
Digamos que o servidor, ou Github, fique um pouco inativo.
Afinal, não se preocupe, uma das razões pelas quais você usa o git é para ter uma cópia de todo o histórico do projeto no seu clone local.
Você pode continuar a codificar e confirmar, enquanto aguarda a equipe de operações trazer o servidor de volta à vida. Nota para si mesmo: compre rosquinhas para a equipe de operações.
Mas e se, durante esse tempo de inatividade, você quiser colaborar com outra pessoa, que pode não ser especialista em git, no mesmo repositório?
Ou, em vez de tempo de inatividade, e se você e seu colaborador estiverem em campo e, por algum motivo, você não conseguir que sua VPN permita a conexão com seu repo oficial?
Ou então, se você e seu colaborador estão lançando várias mudanças experimentais e, mesmo tendo acesso, não deseja colocar sua bagunça inacabada no repositório central oficial? (Nem mesmo como ramificações de recursos.) Talvez você esteja no meio de uma recuperação ou mesclagem desastrosa e as ramificações estão por toda parte.
Bem, o git, como você provavelmente sabe, é um sistema de controle de versão "distribuído" .
Mesmo que você possa usar um repositório git "oficial" central em seu fluxo de trabalho, ainda poderá usar o git de maneira ponto a ponto, onde você e seu colaborador simplesmente criam e compartilham confirmações entre si e com a central servidor nunca precisa saber.
Então, como você consegue seus ramos e se compromete com eles, ou vice-versa?
Você provavelmente pode pensar em outros métodos também. Mas há uma maneira super fácil: se você pode se ver na rede, poderá iniciar um servidor git único que ele possa usar como controle remoto para clonar, buscar e puxar suas alterações e matá-lo quando estiver feito com isso.
A ferramenta que permite isso é
git daemon
, que tem muitas opções e funcionalidades, mas com o objetivo de permitir esse processo "fácil de servir o repo em que estou", a maneira de usá-lo é criar um alias. Eu gosto de chamargit serve
. Corre:Usar um alias é realmente crucial, porque os aliases do git são executados no diretório base da sua árvore de trabalho. Portanto, o caminho '.git' sempre apontará para o lugar certo, não importa onde você esteja na árvore de diretórios do seu repositório.
Use o seu novo
git serve
assim:git serve
. "Pronto para fazer barulho", relatará. Git é malvado.git fetch git://192.168.1.123/
"Você também pode dizer a Jane
git clone git://192.168.1.123/ local-repo-name
se ela ainda não possui um clone do repositório. Ou usegit pull git://192.168.1.123/ branchname
uma busca e mesclagem de uma só vez, útil se você estiver trabalhando juntos em uma ramificação de recurso.Observe, no entanto, que você não deve fazer isso em redes hostis se guardar segredos em seu repositório, porque não há autenticação. Ele não anuncia sua existência, mas qualquer pessoa com um scanner de porta pode encontrá-lo, conectar-se a ele e clonar seu repositório.
Mas não é super perigoso, porque é somente leitura por padrão. Leia a
git daemon
página de manual com atenção se achar que deseja ativar o acesso de gravação. No caso em que você deseja obter as confirmações do seu colaborador, é muito mais seguro deixá-lo como somente leitura e peça ao seu colaborador para também executar este comando, para que você possa retirá-las.Relacionado tangencialmente: no assunto de servidores únicos, se você deseja compartilhar temporariamente um monte de arquivos estáticos por HTTP:
python -m SimpleHTTPServer
fonte
Se você precisa de um servidor GIT fácil e bom, tente o GitBlit. Também uso gitolite, mas é apenas um servidor, com o GitBlit você obtém tudo em um, servidor, administrador, repositórios. gerente ... URL: http://gitblit.com/
fonte
https://rhodecode.com é um aplicativo da web de código aberto para o Git & Mercurial, que pode ser facilmente instalado em qualquer sistema operacional (um instalador está incluído).
O RhodeCode (a nova versão é chamada RhodeCode Enterprise) adiciona recursos ausentes do Git, como revisão de código e, geralmente, é muito rápido e confiável.
fonte
Você também pode instalar o Indefero , é um clone GPL do GoogleCode, pois suporta o Subversion e o Git, você pode ter uma transição suave. Eu sou o autor de Indefero.
fonte
Você pode até instalar o GitHub no servidor local (mas não de graça):
https://enterprise.github.com/
fonte
Pode não ser a configuração mais comum do servidor git, mas, tendo jogado com diferentes layouts, ferramentas, esquemas de espelhamento e permissão, eu diria que uma alternativa bastante sólida para repositórios corporativos é o Gerrit , que pode parecer surpreendente, pois é mais conhecido como um ferramenta de revisão de código. Começamos a usá-lo como revisão de código e lentamente se tornou nosso repositório principal, descontinuando o g3 / gitolite
Além disso, é usado por grandes projetos (por exemplo, android, chrome), por isso dimensiona e agora é bastante sólido. Apenas dê a seus usuários a permissão PUSH se você deseja permitir ignorar a parte da revisão de código.
fonte
Para uma hospedagem remota Como outros usuários disseram que o bitbucket.org oferece repositórios particulares gratuitos, eu o uso sem problemas.
Para redes locais ou LAN , adicionarei este scm-manager.org (um único arquivo executável, é realmente simples de instalar, é feito em Java para que possa ser executado no Linux ou Windows). Caso você o instale, essas são as senhas padrão.
fonte
Enquanto isso, o site de hospedagem Mercurial Bitbucket começou a oferecer repositórios Git também.
Portanto, se você não precisa de um servidor local , apenas um local central onde você pode hospedar repositórios particulares do Git gratuitamente, o IMO Bitbucket é a melhor escolha.
De graça, você obtém repositórios Git e Mercurial privados e públicos ilimitados.
A única limitação é que, no plano gratuito, não mais que cinco usuários podem acessar seus repositórios privados (para mais, você precisa pagar).
Veja https://bitbucket.org/plans para mais informações!
fonte
Se você deseja obter solicitações pull, existem os projetos de código aberto do RhodeCode e GitLab e o Stash pago
fonte
Se você quer apenas seu repositório em um local central, isso é bastante fácil com o controle de versão distribuído como o Git:
Você pode simplesmente colocar seu repositório central em alguma pasta compartilhada em uma máquina central e todos podem cloná-lo a partir daí.
Se você deseja um site "real" em seu servidor local, conheço o site de hospedagem Git http://repo.or.cz .
Parece ter menos recursos que o GitHub, mas, diferentemente do GitHub, você pode obter o código-fonte e hospedá-lo em seu próprio servidor local.
Isenção de responsabilidade: só li sobre repo.or.cz, nunca tentei sozinho!
fonte
para configurações simples, você pode fornecer acesso ssh a um servidor central e configurar o diretório de trabalho de cada usuário para enviar / receber a partir dessa 'origem'. Essa seria a configuração mais simples e comum para equipes pequenas.
Você também pode procurar por gitosis, que oferece um servidor http e a capacidade de gerenciá-lo remotamente. Dessa forma, você não precisa conceder acesso ssh e tudo o que isso implica para cada comunicador.
fonte
Para adicionar o que Chris disse, você pode usar gitosis (http://eagain.net/gitweb/?p=gitosis.git) para controlar quem pode realmente acessar o repositório.
Dependendo do seu uso, você também pode usar hooks (na pasta .git / hooks) para que o seu código seja automaticamente inserido no sistema de arquivos do servidor quando você enviar da máquina local. Aqui está um script popular para fazer isso: http://utsl.gen.nz/git/post-update . Isso não será necessário em todos os casos.
fonte
http://repo.or.cz , embora razoavelmente bom tenda a ter alguns problemas com alguns usuários.
Se você é um deles, eu recomendo que você experimente http://unfuddle.com, pois você tem um histórico de subversão.
Confira " The 30 Second Tour ": http://unfuddle.com/about/tour/plans
fonte
http://code.google.com/p/luna-tool/ é um aplicativo scala que implementa a maior parte necessária para mim partes do github
fonte