Git phục vụ: Tôi muốn nó đơn giản


139

Tôi muốn biết làm thế nào để đơn giản xuất bản qua http = giống như phục vụ hg của Mercurial ! Trên hộp Windows / công việc làm điều này:

git serve 

và sau đó trên hộp Linux SIMPLY đi:

git clone http://project project 

đã kết thúc.


Bạn có biết rằng nhân bản một bản sao git-svn của một repo svn là khó khăn? subtlegradient.com/articles/2008/04/22/cloning-a-git-svn-clone
bendin

Tại sao không chỉ cài đặt svn trên quảng cáo máy tính xách tay linux của bạn, hãy kiểm tra trực tiếp từ kho dự án? Git có thể là sự nóng bỏng mới, nhưng có vẻ như bạn đang khiến cuộc sống của mình trở nên phức tạp không cần thiết trong trường hợp cụ thể này.
uốn cong

uốn cong không tôi không biết nó là khó khăn, vì tôi đang thiết lập môi trường bây giờ tôi rất vui vì bạn đã lên tiếng ...
Setori

1
Thứ nhất: máy tính xách tay của tôi không được phép vào vpn này, vì vậy tôi không thể truy cập trực tiếp vào svn. Thứ hai: Tôi muốn cam kết với kho lưu trữ của riêng tôi, toàn bộ quan điểm của việc sử dụng git là để tôi có thể thực hiện các cam kết cục bộ, chi nhánh và hợp nhất không đau. Tôi thấy sử dụng svn bây giờ thay vì bị chuột rút.
Setori

Nếu bạn đã cài đặt python, một đơn giản git instaweb -d pythoncó thể không ổn (với Git 2.21, tháng 2 năm 2019): xem câu trả lời của tôi dưới đây
VonC

Câu trả lời:


197

Điều hướng vào dự án của bạn và bắt đầu git-daemon với các công tắc sau:

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

Điều này nói với git-daemon để phục vụ tất cả các dự án bên trong thư mục hiện tại (mà tôi giả sử là thư mục dự án có chứa .git / thư mục). Nó cũng bảo nó sử dụng lại cùng một địa chỉ nếu bạn tắt nó và khởi động lại quá nhanh.

Bạn có thể đặt đoạn mã này thành một tập lệnh bó với một tên dễ nhớ như "gitserve", vì vậy bạn không cần phải gõ lại tất cả. Như được đề xuất trong một số ý kiến, trong các phiên bản Git gần đây, bạn có thể thêm bí danh vào cấu hình Git :

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

Khi đã xong trên máy chủ (hộp Windows của bạn), bạn có thể làm:

git serve

git-daemon sử dụng giao thức git: // để vận chuyển, vì vậy trên máy khách (hộp Linux của bạn), bạn sẽ cần phải làm:

git clone git://123.456.789.111/ project

3
Bạn có thể thêm lệnh dưới dạng bí danh cho tệp .gitconfig như được mô tả tại đây: git.or.cz/gitwiki/Aliases#Serverepoonthespot
RFelix


8
Tôi nghĩ điều quan trọng cần lưu ý là mặc dù git daemoncho phép các máy khách git khác truy cập từ xa, nhưng nó thiếu giao diện Web hg servecung cấp.
Rob Kennedy

4
thực hiện phân phát bí danh trong .gitrc của bạn như:serve = !git daemon --reuseaddr --verbose --base-path=. --export-all ./.git
dlamblin

1
@Aeon, có vẻ như các URL đã thay đổi và giờ là git.wiki.kernel.org/articles/a/l/i/Aliases.html
Muller

14

Thay vì viết tập lệnh bó của riêng bạn, hãy sử dụng gitjour . Nó biết cách khởi động git daemon một cách chính xác và sẽ phát URL bản sao qua mDNS để bạn có thể thực hiện gitjour showtrên hộp linux và sao chép và dán.

Đây cũng là một bài viết hay với tổng quan về gitjour và một số công cụ tương tự khác của Tiến sĩ Nic, * jour là gì và tại sao chúng là ứng dụng sát thủ cho RailsCamp08 .


13

Hiện đang sử dụng hai bí danh - phục vụ và trung tâm. Phục vụ cho chia sẻ chỉ đọc và trung tâm cho chia sẻ đọc / ghi:

[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

Ngoài ra, có hướng dẫn chi tiết hơn về chia sẻ qua git daemon: http://l.rw.rw/git-daemon .


12

Nếu bạn chỉ muốn để lộ kho lưu trữ bằng trình duyệt web

git-instaweb

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

nó nóilighttpd not found. Install lighttpd or use --httpd to specify another httpd daemon.
Rakib

4
@syedrakib Bạn sẽ cần phải cài đặt lighttpd, hoặc apache2, hoặc một cái gì đó khác. Cá nhân tôi sử dụng git instaweb -d webricktrên OS X, vì webrick đi kèm với Ruby, được cài đặt sẵn trên OS X.
Martijn Heemels

6
Công cụ này dường như không tương thích với Windows. Khi người đăng yêu cầu một công cụ Windows, đó là một yếu tố quan trọng cho câu trả lời này.
Robert MacLean

9

Đây là một cách khác. Bạn sẽ cần cài đặt python.

  • chạy git update-server-info
  • đi đến .gitthư mục
  • chạy python -mSimpleHTTPServer

(chỉ cần tạo một bí danh trong gitconfig của bạn)

Bây giờ bạn có thể kéo repo với git pull http://HOST_NAME:8000/

PS: khi sử dụng giải pháp git daemon, bạn có thể đặt --base-path=.giturl đểgit://HOST/


0

git-webui là một tiện ích mở rộng git cung cấp giao diện người dùng dựa trên web và khả năng sao chép / kéo từ các máy tính khác

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

$ cd my_git_repo
$ git webui

Người khác có thể

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

hoặc là

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

Tôi chỉ cố gắng với nó một cách mù quáng. Tôi có thể git clone nhưng không thể truy cập webgui. Có vẻ như trình duyệt đang chờ phản hồi từ máy chủ của bạn.
sree

0

Thêm các dòng sau trong .git / config

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

sau đó thực thi

git instaweb

0

Git 2.21 (Tháng 2 năm 2019) cho phép bạn kết hợp python và git instaweb:

Xem cam kết 2eb14bb (28 tháng 1 năm 2019) của Arti Zirk ( artizirk) .
(Được hợp nhất bởi Junio ​​C Hamano - gitster- trong cam kết abf39e3 , ngày 5 tháng 2 năm 2019)

git-instaweb: thêm http.serverhỗ trợ dựng sẵn Python

Với bản vá này, có thể khởi chạy git-instawebbằng cách sử dụng http.servertrình xử lý Python CGI thông qua -d pythontùy chọn.

git-instawebtạo ra một trình bao bọc nhỏ xung quanh http.server(trong GIT_DIR/gitweb/) giải quyết giới hạn của trình xử lý CGI trong đó các tập lệnh CGI phải nằm trong cgi-binthư mục con và chỉ mục thư mục không thể dễ dàng thay đổi. Để giữ cho việc triển khai nhỏ, gitwebđang chạy trên url /cgi-bin/gitweb.cgivà chuyển hướng tự động được thực hiện khi mở /.

Trình bao bọc được tạo tương thích với cả Python 2 và 3.

Python mặc định được cài đặt trên hầu hết các bản phân phối Linux hiện đại cho phép chạy git instaweb -d pythonmà không cần bất cứ thứ gì khác.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.