Git serve: Saya ingin sesederhana itu


139

Saya ingin tahu bagaimana cara mempublikasikan lebih dari http = seperti halnya layanan hg Mercurial ! Pada kotak Windows / work lakukan ini:

git serve 

dan kemudian pada kotak Linux SIMPLY pergi:

git clone http://project project 

jadi.


Apakah Anda sadar bahwa mengkloning klon git-svn dari repo svn itu rumit? subtlegradient.com/articles/2008/04/22/cloning-a-git-svn-clone
bendin

Mengapa tidak menginstal svn saja di notebook linux Anda menggunakan check out langsung dari repositori proyek? Git mungkin menjadi panas baru, tetapi sepertinya Anda membuat hidup Anda tidak perlu rumit dalam kasus khusus ini.
bendin

bendin tidak, aku tidak tahu itu rumit, karena aku mengatur lingkungan sekarang aku senang kau berbicara ...
Setori

1
Pertama: notebook saya tidak diizinkan masuk ke vpn ini, jadi saya tidak bisa mengakses svn secara langsung. kedua: Saya ingin mengkomit ke repositori saya sendiri, inti dari penggunaan git adalah agar saya dapat melakukan commit lokal, cabang dan bergabung tanpa kesulitan. Saya menemukan menggunakan svn sekarang agak kram.
Setori

Jika Anda memasang python, yang sederhana git instaweb -d pythonbisa jadi cukup (dengan Git 2.21, Februari 2019): lihat jawaban saya di bawah ini
VonC

Jawaban:


197

Navigasikan ke proyek Anda dan mulai git-daemon dengan sakelar berikut:

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

Ini memberitahu git-daemon untuk melayani semua proyek di dalam direktori saat ini (yang saya asumsikan adalah direktori proyek yang berisi .git / folder). Ia juga mengatakan untuk menggunakan kembali alamat yang sama jika Anda mematikannya dan memulainya kembali terlalu cepat.

Anda bisa memasukkan ini ke dalam skrip batch dengan nama yang mudah diingat seperti "gitserve", jadi Anda tidak perlu mengetik semuanya lagi. Seperti yang disarankan dalam beberapa komentar, dalam versi terbaru dari Git Anda dapat menambahkan alias ke konfigurasi Git :

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

Setelah selesai di server (kotak Windows Anda), Anda dapat melakukan:

git serve

git-daemon menggunakan protokol git: // untuk transportasi, jadi pada klien (kotak Linux Anda), Anda perlu melakukan:

git clone git://123.456.789.111/ project

3
Anda dapat menambahkan perintah sebagai alias untuk Anda .gitconfig file seperti yang dijelaskan di sini: git.or.cz/gitwiki/Aliases#Serverepoonthespot
RFelix


8
Saya pikir penting untuk dicatat bahwa meskipun git daemonmemungkinkan untuk akses jarak jauh oleh klien git lain, ia tidak memiliki antarmuka Web yang hg servemenyediakan.
Rob Kennedy

4
make serve alias di .gitrc Anda seperti:serve = !git daemon --reuseaddr --verbose --base-path=. --export-all ./.git
dlamblin

1
@ Aeon, sepertinya URL telah berubah dan sekarang git.wiki.kernel.org/articles/a/l/i/Aliases.html
Christophe Muller


13

Saat ini menggunakan dua alias - melayani dan hub. Sajikan untuk hanya-baca dan hub untuk baca / tulis:

[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

Juga, ada tutorial yang lebih terperinci tentang berbagi melalui git daemon: http://l.rw.rw/git-daemon .


12

Jika Anda hanya ingin mengekspos repositori dengan browser web

git-instaweb

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

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

4
@syedrakib Anda harus menginstal lighttpd, atau apache2, atau yang lainnya. Secara pribadi saya gunakan git instaweb -d webrickpada OS X, karena webrick dilengkapi dengan Ruby, yang sudah diinstal pada OS X.
Martijn Heemels

6
Alat ini sepertinya tidak kompatibel dengan Windows. Karena poster itu meminta alat Windows, itu adalah faktor penting untuk jawaban ini.
Robert MacLean

9

Inilah cara alternatif. Anda harus memasang python.

  • Lari git update-server-info
  • buka .gitdirektori
  • Lari python -mSimpleHTTPServer

(cukup buat alias di gitconfig Anda)

Sekarang Anda dapat menarik repo dengan git pull http://HOST_NAME:8000/

PS: ketika menggunakan solusi git daemon Anda dapat mengatur --base-path=.gitagar urlnyagit://HOST/


0

git-webui adalah ekstensi git yang menyediakan antarmuka pengguna berbasis web dan kemampuan untuk mengkloning / menarik dari komputer lain

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

$ cd my_git_repo
$ git webui

Orang lain bisa

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

atau

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

Saya hanya mencoba dengan membabi buta. Saya dapat git kloning tetapi tidak dapat mengakses webgui. Tampaknya browser sedang menunggu respons dari server Anda.
sree

0

Tambahkan baris berikut di .git / config

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

kemudian jalankan

git instaweb

0

Git 2.21 (Feb. 2019) memungkinkan Anda untuk menggabungkan python dan git instaweb:

Lihat komit 2eb14bb (28 Jan 2019) oleh Arti Zirk ( artizirk) .
(Digabung oleh Junio ​​C Hamano - gitster- di commit abf39e3 , 05 Feb 2019)

git-instaweb: tambahkan http.serverdukungan Python builtin

Dengan tambalan ini dimungkinkan untuk meluncurkan git-instawebdengan menggunakan Python http.serverCGI handler via -d pythonopsi.

git-instawebmenghasilkan pembungkus kecil di sekitar http.server(dalam GIT_DIR/gitweb/) yang membahas batasan penangan CGI di mana skrip CGI harus berada dalam cgi-binsubdirektori dan indeks direktori tidak dapat dengan mudah diubah. Agar implementasi tetap kecil, gitwebberjalan di url /cgi-bin/gitweb.cgidan pengalihan otomatis dilakukan saat membuka /.

Pembungkus yang dihasilkan kompatibel dengan Python 2 dan 3.

Python secara default diinstal pada sebagian besar distribusi Linux modern yang memungkinkan berjalan git instaweb -d pythontanpa perlu hal lain.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.