Trình duyệt Bare Bones
git instaweb --httpd=webrick
từ cuốn sách git scm
kết hợp nó với một cái gì đó giống như cách tiếp cận được mô tả ở đây để phát triển phân tán (tín dụng cho datagrok cho khái niệm được mô tả tốt)
Khởi chạy một máy chủ git một lần từ bất kỳ kho lưu trữ cục bộ nào.
Tôi đã tweet điều này rồi nhưng tôi nghĩ nó có thể sử dụng một số mở rộng:
Cho phép luồng công việc git phi tập trung: git config alias.serve "daemon --verbose --export-all --base-path = .git --reuseaddr --strict-path .git /"
Giả sử bạn sử dụng quy trình công việc git liên quan đến việc làm việc với kho lưu trữ "chính thức" cốt lõi mà bạn kéo và đẩy các thay đổi của mình từ và vào. Tôi chắc chắn nhiều công ty làm điều này, cũng như nhiều người dùng dịch vụ lưu trữ git như Github.
Nói rằng máy chủ, hoặc Github, đi xuống một chút.
Không phải lo lắng, sau tất cả, một trong những lý do bạn sử dụng git là vì vậy bạn có một bản sao của toàn bộ lịch sử dự án trong bản sao địa phương của bạn.
Bạn có thể tiếp tục mã hóa và cam kết, trong khi bạn chờ nhóm vận hành đưa máy chủ hoạt động trở lại. Lưu ý cho bản thân: mua bánh rán cho nhóm hoạt động.
Nhưng nếu trong thời gian chết này, bạn muốn cộng tác với một người khác, người có thể không phải là chuyên gia git, trên cùng một kho lưu trữ thì sao?
Hoặc, thay vì thời gian chết, điều gì sẽ xảy ra nếu bạn và cộng tác viên của bạn ở trong lĩnh vực này và vì một số lý do bạn không thể có được VPN để cho phép bạn kết nối với repo chính thức của mình?
Hoặc, điều gì sẽ xảy ra nếu bạn và cộng tác viên của bạn đang đưa ra một loạt các thay đổi thử nghiệm và mặc dù bạn có quyền truy cập, bạn không muốn đẩy mớ hỗn độn chưa hoàn thành của mình vào kho lưu trữ trung tâm chính thức? (Thậm chí không phải là các nhánh tính năng.) Có thể bạn đang trong quá trình dọn dẹp một cuộc nổi loạn hoặc hợp nhất thảm hại và các chi nhánh ở khắp mọi nơi.
Vâng, như bạn có thể biết, là một hệ thống kiểm soát phiên bản "phân tán" .
Mặc dù bạn có thể sử dụng kho git "chính thức" trung tâm trong quy trình làm việc của mình, bạn vẫn có khả năng sử dụng git theo cách ngang hàng, trong đó bạn và cộng tác viên của bạn chỉ cần xây dựng và chia sẻ các cam kết với nhau và trung tâm Máy chủ thậm chí không bao giờ phải biết.
Vì vậy, làm thế nào để bạn có được các chi nhánh của bạn và cam kết với họ, hoặc ngược lại?
- Bạn có thể sử dụng các cơ sở của git cho các bản vá email. Nhưng đó là một chút không phù hợp và đòi hỏi một số kiến thức về cách áp dụng các bản vá email.
- Bạn có thể tạo một tài khoản trên máy của riêng bạn để cộng tác viên của bạn ssh vào. Nhưng có thể bạn không có quyền truy cập root cục bộ hoặc có thể bạn không tin tưởng họ với quyền truy cập SSH vào hộp của bạn.
- Bạn có thể sao chép repo của bạn lên một ngón tay cái và đưa nó qua lại. Nhưng điều đó khá tẻ nhạt, đặc biệt nếu bạn tình cờ ở trên cùng một mạng cục bộ và yêu cầu một ổ đĩa ngón tay cái.
Bạn có thể có thể nghĩ về các phương pháp khác, quá. Nhưng có một cách cực kỳ dễ dàng: nếu bạn có thể nhìn thấy nhau trên mạng, bạn có thể khởi chạy máy chủ git một lần mà họ có thể sử dụng làm điều khiển từ xa để sao chép, tìm nạp và kéo các thay đổi của bạn và giết nó khi bạn thực hiện với nó
Công cụ cho phép điều này là git daemon
, có rất nhiều tùy chọn và chức năng, nhưng với mục đích cho phép một lần dễ dàng này "chỉ phục vụ repo tôi tham gia", cách sử dụng là tạo ra bí danh. Tôi thích gọi nó git serve
. Chạy:
git config --global alias.serve "daemon --verbose --export-all --base-path=.git --reuseaddr --strict-paths .git/"
Sử dụng một bí danh thực sự rất quan trọng, bởi vì các bí danh git được thực thi trong thư mục cơ sở của cây làm việc của bạn. Vì vậy, đường dẫn '.git' sẽ luôn luôn đến đúng nơi, bất kể bạn đang ở đâu trong cây thư mục của kho lưu trữ.
Sử dụng git serve
như thế mới của bạn như vậy:
- Chạy
git serve
. "Sẵn sàng để ầm ầm", nó sẽ báo cáo. Git là ass xấu.
- Tìm địa chỉ IP của bạn. Nói đó là 192.168.1.123.
- Nói "này Jane, tôi chưa sẵn sàng / có thể đẩy các cam kết này lên nguồn gốc, nhưng bạn có thể lấy các cam kết của tôi vào bản sao của mình bằng cách chạy
git fetch git://192.168.1.123/
"
- Nhấn ctrl + c khi bạn không muốn phục vụ repo đó nữa.
Bạn cũng có thể nói với Jane git clone git://192.168.1.123/ local-repo-name
nếu cô ấy chưa có bản sao của kho lưu trữ. Hoặc, sử dụng git pull git://192.168.1.123/ branchname
để thực hiện tìm nạp và hợp nhất cùng một lúc, hữu ích nếu bạn đang làm việc cùng nhau trên một nhánh tính năng.
Tuy nhiên, lưu ý rằng bạn không nên làm điều này trên các mạng thù địch nếu bạn giữ bí mật trong kho lưu trữ của mình, vì không có xác thực. Nó không quảng cáo sự tồn tại của nó, nhưng bất kỳ ai có máy quét cổng aa đều có thể tìm thấy nó, kết nối với nó và sao chép repo của bạn.
Nhưng nó không nguy hiểm lắm vì nó chỉ đọc theo mặc định. Đọc git daemon
trang man cẩn thận nếu bạn nghĩ rằng bạn muốn kích hoạt quyền truy cập ghi. Trong trường hợp bạn muốn nhận được các cam kết của cộng tác viên, việc để nó ở chế độ chỉ đọc và yêu cầu cộng tác viên của bạn cũng chạy lệnh này sẽ an toàn hơn nhiều.
Liên quan liên tục: về chủ đề máy chủ một lần, nếu bạn muốn tạm thời chia sẻ một loạt các tệp tĩnh qua HTTP: python -m SimpleHTTPServer