Git serve: eu gostaria que simples


139

Eu quero saber como publicar simplesmente sobre http = muito parecido com o hg serve do Mercurial ! Na caixa Windows / trabalho, faça o seguinte:

git serve 

e depois na caixa Linux, SIMPLY, vá:

git clone http://project project 

acabado.


Você está ciente de que a clonagem de um clone git-svn de um repositório svn é complicada? subtlegradient.com/articles/2008/04/22/cloning-a-git-svn-clone
bendin

Por que não apenas instalar o svn no seu anúncio de notebook linux, use o check-out diretamente no repositório do projeto? O Git pode ser o novo gostinho, mas realmente parece que você está tornando sua vida desnecessariamente complicada neste caso específico.
18898

Bendin não, eu não sabia que era complicado, como eu estou configurando o ambiente agora estou feliz que você falou ...
Setori

1
Primeiramente: meu notebook não é permitido neste vpn, portanto não consigo acessar o svn diretamente. segundo: eu quero me comprometer com meu próprio repositório, o ponto principal do uso do git é para que eu possa fazer confirmações locais, ramificar e mesclar sem problemas. Acho que usar o svn agora é bastante apertado.
Setori

Se você tiver o Python instalado, um simples git instaweb -d pythonpoderia ser nough (com Git 2,21, fevereiro de 2019): ver minha resposta abaixo
VonC

Respostas:


197

Navegue no seu projeto e inicie o git-daemon com as seguintes opções:

cd project
git daemon --reuseaddr --base-path=. --export-all --verbose

Isso diz ao git-daemon para servir todos os projetos dentro do diretório atual (que eu assumo ser o diretório do projeto que contém a pasta .git /). Ele também diz para reutilizar o mesmo endereço se você o desligar e iniciar o backup muito rápido.

Você pode colocar isso em um script em lotes com um nome fácil de lembrar, como "gitserve", para não precisar digitar tudo novamente. Conforme sugerido em alguns dos comentários, nas versões recentes do Git você pode adicionar um alias à configuração do Git :

[alias]
    serve = !git daemon --reuseaddr --verbose --base-path=. --export-all ./.git

Uma vez feito isso no servidor (sua caixa do Windows), você pode:

git serve

O git-daemon usa o protocolo git: // para transporte, portanto, no cliente (sua caixa Linux), você precisaria:

git clone git://123.456.789.111/ project

3
Você pode adicionar o comando como um alias para você .gitconfig arquivo como descrito aqui: git.or.cz/gitwiki/Aliases#Serverepoonthespot
RFelix


8
Eu acho importante observar que, embora git daemonpermita acesso remoto por outros clientes git, ele não possui a interface da Web que hg servefornece.
Rob Kennedy

4
faça servir um alias no seu .gitrc como:serve = !git daemon --reuseaddr --verbose --base-path=. --export-all ./.git
dlamblin 9/11/11

1
@Aeon, parece que os URLs mudaram e agora é git.wiki.kernel.org/articles/a/l/i/Aliases.html #
Christophe Muller


13

Atualmente usando dois aliases - servir e hub. Servir para compartilhamento somente leitura e hub para compartilhamento de leitura / gravação:

[alias]
  serve = !git daemon --base-path=. --export-all --reuseaddr --informative-errors --verbose
  hub = !git daemon --base-path=. --export-all --enable=receive-pack --reuseaddr --informative-errors --verbose

Além disso, há um tutorial mais detalhado sobre o compartilhamento via git daemon: http://l.rw.rw/git-daemon .


12

Se você deseja apenas expor o repositório com um navegador da web

git-instaweb

$ git instaweb -d apache2 --start
$ lynx localhost:1234

ele dizlighttpd not found. Install lighttpd or use --httpd to specify another httpd daemon.
Rakib

4
@syedrakib Você precisará ter o lighttpd instalado, ou o apache2, ou qualquer outra coisa. Pessoalmente, uso git instaweb -d webrickno OS X, porque o webrick vem com o Ruby, que é pré-instalado no OS X.
Martijn Heemels

6
Esta ferramenta não parece ser compatível com o Windows. Como o pôster estava pedindo uma ferramenta do Windows, esse é um fator importante para esta resposta.
Robert MacLean

9

Aqui está uma maneira alternativa. Você precisará do python instalado.

  • corre git update-server-info
  • vá para o .gitdiretório
  • corre python -mSimpleHTTPServer

(basta criar um alias no seu gitconfig)

Agora você pode puxar o repositório com git pull http://HOST_NAME:8000/

PS: ao usar a solução git daemon, você pode configurar --base-path=.gitpara que o URL sejagit://HOST/


0

git-webui é uma extensão git que fornece uma interface de usuário baseada na web e a capacidade de clonar / extrair de outros computadores

https://github.com/alberthier/git-webui

$ cd my_git_repo
$ git webui

Outras pessoas podem

$ git clone http://<ip-of-your-computer>:8000/ repoclone

ou

$ git pull http://<ip-of-your-computer>:8000/

Eu apenas tentei cegamente. Eu consigo git clone, mas não consigo acessar o webgui. Parece que o navegador está aguardando uma resposta do seu servidor.
S3

0

Adicione as seguintes linhas em .git / config

[instaweb]
               local = true
               httpd = webrick
               port = 4231

então execute

git instaweb

0

O Git 2.21 (fevereiro de 2019) permite combinar python e git instaweb:

Veja commit 2eb14bb (28 Jan 2019) por Arti Zirk ( artizirk) .
(Mesclado por Junio ​​C Hamano - gitster- in commit abf39e3 , 05 de fevereiro de 2019)

git-instaweb: adicionar http.serversuporte incorporado ao Python

Com esse patch, é possível iniciar git-instawebusando o http.servermanipulador Python CGI via -d pythonopção.

git-instawebgera um pequeno invólucro em torno do http.server(in GIT_DIR/gitweb/) que aborda uma limitação do manipulador CGI em que os scripts CGI precisam estar em um cgi-binsubdiretório e o índice do diretório não pode ser facilmente alterado. Para manter a implementação pequena, gitwebestá sendo executado no URL /cgi-bin/gitweb.cgie um redirecionamento automático é feito ao abrir /.

O wrapper gerado é compatível com o Python 2 e 3.

Por padrão, o Python é instalado nas distribuições mais modernas do Linux, o que permite a execução git instaweb -d pythonsem a necessidade de mais nada.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.