2011-01-17 36 views
7

Tôi đang quay số ở nơi tồi tệ (vâng, nó vẫn xảy ra trong năm 2011) và cố gắng sao chép một kho lưu trữ khổng lồ. Nó bắt đầu mà không có vấn đề, nhưng mỗi khi các dialup ngắt kết nối (mà là không thể tránh khỏi, có vẻ như), cáC#% $ * hg cuộn tất cả mọi thứ trở lại và tôi lại một thư mục rỗng.Có cách nào để sao chép kho lưu trữ từ web theo từng bước không?

Có một giải pháp nào khác ngoài việc thực hiện nó trên một máy tính từ xa và sau đó tải xuống toàn bộ điều đó bằng FTP hay gì đó không?

+1

Tùy thuộc vào loại quyền truy cập bạn có vào repo, nhưng trong một số trường hợp, 'rsync' sẽ là một tùy chọn. – miku

+0

'rsync' chắc chắn là cách để đi đến đây. Bạn sẽ nhận được tối thiểu các truyền tệp dự phòng và kết quả được đảm bảo, bất kể số lần khởi động lại. –

Trả lời

8

Trong một vỏ bash giống như bạn có thể làm một cái gì đó như thế này:

$ hg init myclone 
$ cd myclone 
$ for REV in `seq 10 10 100` ; do hg pull -r $REV <REMOTEREPO>; done 

Bắt đầu từ 10, mỗi kéo tải 10 sửa đổi tiếp theo, lên đến 100. Trong trường hợp của một kết nối bị mất, điều chỉnh đầu tiên đối số cho seq để khớp với những gì bạn đã kéo.

+4

Hoặc trên dấu nhắc lệnh Windows: 'FOR/L% A IN (10,10,100) làm hg pull -r% A ' –

+0

Mặc dù bạn cần lưu ý rằng việc đánh số changeset có thể khác với kho lưu trữ ngược nếu bạn làm theo cách này. – Ringding

+0

Tôi đã thử đẩy nó thêm và hiện đang duy trì một repo (mới) trong trường hợp nhiều người trong chúng ta có cùng một vấn đề: Vui lòng thử đóng góp? : D https://github.com/nootanghimire/hg-clone-bash – cipher

1

Tùy thuộc vào cách kết nối của bạn bị gián đoạn, có hai tùy chọn để thực hiện nhái ban đầu.

Trước tiên, bạn có thể thử cái gọi là “dòng vô tính”. Những điều này giảm thiểu Thời gian thành Byte đầu tiên, nhưng thường yêu cầu phải truyền thêm một chút dữ liệu.

Dưới đây là cách thực hiện một luồng bản sao:

$ hg clone --uncompressed https://~~~~ 

tùy chọn thứ hai của bạn sẽ trở thành một bản sao hg --rev hoạt động, tiếp theo là một số Kéo gia tăng. Điều này hoạt động tương tự như nhân bản một kho lưu trữ trong một số quá khứ xa và thỉnh thoảng cập nhật.

$ hg clone --rev 5 https://~~~~ 
0

Dựa trên những gợi ý ở đây,

Tôi tạo ra một repo mà đã làm điều này.

https://github.com/nootanghimire/hg-clone-bash 

Nó được tối ưu hóa cho một lần thử lại, nhưng tôi đoán bạn có thể ngã ba và làm việc trên đó! :)

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