2010-06-03 32 views
24

Tìm thấy bản thân mình khá bối rối ngày hôm nay về việc này.Cách sao chép kho lưu trữ đến một máy chủ/kho lưu trữ từ xa với Mercurial

Tôi tạo một kho lưu trữ trống cục bộ (hg init), sao chép nó vào bản sao làm việc, thêm một số mã, cam kết và đẩy nó (để repo cục bộ rõ ràng).

Bây giờ tôi cần chia sẻ kho lưu trữ đó với người khác. Có một máy chủ có tính thương xót trên đó, làm thế nào để sao chép kho lưu trữ của tôi đến một kho từ xa để các nhà phát triển khác có thể truy cập nó và kéo/đẩy mã từ/đến nó?

Trả lời

36

Bạn sẽ muốn kiểm tra trang publishing repositories wiki để có được vào giao diện web và kiểm soát truy cập, nhưng lúc đó là cơ bản nhất bạn có thể làm một cái gì đó như thế này:

hg clone yourlocalrepo ssh://[email protected]//home/you/repo 

Đó bắt chước repo địa phương của bạn đến một vị trí từ xa của bạn lựa chọn. Lưu ý rằng có hai dấu gạch chéo kép trong URL đó.

Bạn không thể tạo repo từ xa như vậy bằng cách sử dụng http: //, chỉ ssh: //. Nếu tất cả bạn có là http để hgweb.cgi bạn có thể 'hg init' một repo trống trên máy chủ và sau đó hg đẩy nó.

+0

Thật tuyệt, cảm ơn, nhưng làm thế nào để người khác sao chép nó? –

+0

chúng chỉ có thể sao chép từ ssh: // bạn @ server // home/you/repo nếu chúng được phép đọc từ homedir của bạn. Nếu bạn không đồng ý với điều đó, bạn có thể thiết lập một khu vực mà bạn có thể đọc và viết. –

7

Nếu kho "chính thức" của bạn được phục vụ bởi máy chủ HTTP và bạn muốn tạo repo ở vị trí trung tâm dựa trên repo của máy cục bộ, dưới đây là một cách. Bạn cần quyền quản trị trên máy chủ trung tâm để thực hiện việc này.

ví dụ: Tôi đang phát triển trên các cửa sổ và kho lưu trữ trung tâm của tôi đang chạy trên linux và được phục vụ bởi lighttpd trên mỗi the official guide. Thư mục repo trung tâm của máy chủ là /var/hg/repos/, thuộc sở hữu của người dùng/nhóm www-data. IP của máy cục bộ của tôi là 10.1.10.100 và kho lưu trữ tôi muốn sao chép có tên là foo.

  1. Trên máy cục bộ, mở lời nhắc lệnh vào thư mục lưu trữ và nhập hg serve. Thao tác này chạy máy chủ web cục bộ hg, cho phép máy chủ lấy nó.
  2. ssh vào máy chủ repo trung tâm, đăng nhập với tư cách người dùng có quyền sudo vào www-data.
  3. cd /var/hg/repos
  4. sudo -u www-data hg clone http://10.1.10.100 foo
+0

+1 cho tài liệu kỹ thuật thông thường những ngày này ... Tôi bị bệnh của kỹ thuật thông thường, vì vậy tôi có kế hoạch viết một cgi (trang web) trong python để thực hiện lệnh clone hg cho bạn, từ bất kỳ máy chủ được ủy quyền nào. –

4

Đối với những người đến sau và không muốn phải bận tâm về sự phức tạp của ssh để đẩy những thay đổi đến một máy chủ được xây dựng để lưu trữ các hợp đồng mua, bạn chỉ có thể init trên máy chủ, và sau đó đẩy như bạn làm mọi repo khác.

# on server: 
cd repos/ 
mkdir myrepo 
cd myrepo 
hg init 
cd .. 
chown -R apache:apache myrepo 

cd .. 
vim hgweb.config 

# change [paths] 
[paths] 
myrepo = /path/to/myrepo 



# on your machine 

# make sure you've configured hgrc correctly 
[paths] 
default = http://server/hg/repos/myrepo 

hg push 

# ??? 

# profit 
+0

Không phải là một ý tưởng tồi khi được biến thành một trang web trợ giúp cgi. Tạo đầu tiên trên máy chủ, nhân bản cái trống và bạn đã thiết lập cho một luồng công việc tập trung. –

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