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.

Setori
fonte
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
seanhodges
fonte
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
14

Em vez de escrever seu próprio script em lote, use gitjour . Ele sabe como iniciar o git daemon corretamente e transmitirá a URL do clone via mDNS para que você possa fazer isso gitjour showna caixa do linux e copiar e colar.

Também é um bom artigo com uma visão geral do gitjour e várias outras ferramentas semelhantes do Dr. Nic, O que é * jour e por que eles são aplicativos matadores para o RailsCamp08 .

Otto
fonte
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 .

Criskiev
fonte
12

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

git-instaweb

$ git instaweb -d apache2 --start
$ lynx localhost:1234
John Mee
fonte
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/

bara
fonte
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/
Alberthier
fonte
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
Nayagam
fonte
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.

VonC
fonte