2015-08-25 35 views
5

Chúng tôi sử dụng github để quản lý rất nhiều môi trường phần mềm của chúng tôi, và tôi cược rằng giống như nhiều tổ chức khác, phần lớn lưu lượng truy cập đến/từ repo đó đến từ văn phòng của chúng tôi. Với ý nghĩ đó, liệu có cách nào để xây dựng bộ đệm cục bộ của kho lưu trữ github đã cho, nhưng vẫn có sự bảo vệ của phiên bản đám mây không? Tôi đang nghĩ về điều này trong mô hình của máy chủ proxy caching, nơi máy chủ cục bộ (có lẽ trong tòa nhà của chúng tôi, trên mạng cục bộ của chúng tôi) sẽ xử lý phần lớn các hoạt động nhân bản/kéo. Điều này có vẻ như nó nên được doable, nhưng tìm kiếm này đã rất khó khăn, tôi nghĩ rằng không có phần nhỏ vì những từ "địa phương" và "bộ nhớ cache" có quá tải ý nghĩa đặc biệt là cho git (hub) câu hỏi.bộ nhớ cache cục bộ cho kho lưu trữ github?

+2

* Mọi kho lưu trữ * là * một 'bộ nhớ cache cục bộ'. – user2864740

+0

Bạn không thể sao lưu tệp repo '.git' cục bộ của mình? –

+0

Đây là một tối ưu hóa hiệu suất, không phải là một bản sao lưu. Tôi muốn người dùng thường xuyên thực hiện "git pull" hoặc "git clone" hoặc bất kỳ thứ gì và thay vì yêu cầu đó đến github.com, tôi muốn nó đi tới một số máy chủ cục bộ có bản sao repo được lưu trong bộ nhớ cache .. làm cho quá trình này có lẽ nhanh hơn nhiều. Chúng tôi thực hiện một số bản sao đầy đủ mỗi ngày trong thử nghiệm tự động và có bản sao của repo sống trên đĩa gần với người dùng sẽ làm cho mọi thứ nhanh hơn rất nhiều. – ljwobker

Trả lời

4

Nhận xét mới nhất của bạn cho thấy rõ ràng bạn đang tìm kiếm tối ưu hóa hiệu suất. Những sự giúp đỡ đó.

Bạn có thể bắt đầu tạo bản sao cục bộ của kho lưu trữ github sau these instructions. Bạn có thể cập nhật định kỳ hoặc sắp xếp để nhận web hooks từ github để cập nhật gương cục bộ "theo yêu cầu". Để làm điều này, bạn sẽ cần phải thiết lập một dịch vụ web nhỏ có thể trả lời các móc từ github. Bạn có thể thêm móc nối web bằng cách truy cập https://github.com/someuser/someproject/settings/hooks/new. Bạn có thể sẽ muốn chọn nút radio "Hãy để tôi chọn sự kiện cá nhân", và sau đó chọn:

  • xóa
  • đẩy
  • tạo

Điều này sẽ giữ cho bộ nhớ cache của bạn up-to -date đối với các thay đổi trong các thẻ và các nhánh có sẵn.

Thiết lập máy chủ git làm cho kho lưu trữ đó có sẵn cục bộ. Điều này có thể đơn giản như chạy git daemon hoặc tài khoản cục bộ có thể truy cập thông qua ssh hoặc một tính năng nào đó đầy đủ hơn, tùy thuộc vào yêu cầu địa phương của bạn.

Sau đó, bạn sẽ thiết lập bản sao làm việc địa phương của bạn như thế này:

$ git clone http://localrepository/someproject.git 
$ cd someproject 
$ git remote set-url --push http://github.com/someuser/someproject.git 

này sẽ thiết lập mỗi kho để kéo từ bộ nhớ cache địa phương của bạn, nhưng đẩy những thay đổi ở thượng nguồn để github.

1

Bạn nên xem git-cache-http-server project. Tôi nghĩ rằng nó một phần thực hiện những gì bạn cần (và tương tự như ý tưởng từ bài đăng @larsks).

Đây là phần mềm NodeJS chạy một máy chủ HTTP để cung cấp cho bạn quyền truy cập vào kho lưu trữ git được lưu trong bộ nhớ cache cục bộ. Máy chủ sẽ tự động tìm nạp các thay đổi ngược dòng khi được yêu cầu. Nếu bạn sử dụng các kho lưu trữ git cục bộ này thay vì các kho lưu trữ ở xa, trình khách git của bạn sẽ được phục vụ nội dung được lưu trữ cục bộ.

Nếu bạn chạy git-cache-http-server trên một máy chủ riêng biệt (VM hoặc vùng chứa), bạn có thể cấu hình máy khách git cục bộ của mình tự động sao chép và tìm nạp từ bộ nhớ cache bằng cách cấu hình nó để thay thế https://github.com như http://gitcache/github.com. Điều này có thể đạt được bằng cấu hình như:

git config --global url."http://gitcache:1234/".insteadOf https:// 

Hiện tại, phần mềm này chỉ cung cấp bộ đệm để sao chép và cập nhật kho lưu trữ, không có quy định nào để đẩy thay đổi lại.Đối với một số trường hợp sử dụng, hãy suy nghĩ về cơ sở hạ tầng CI cần kéo nội dung của nhiều kho lưu trữ ngay cả khi chỉ có một kho lưu trữ đã thay đổi hoặc thử nghiệm tự động mà bạn đề cập, điều này có thể hữu ích.

Các vấn đề liên quan