2010-03-24 34 views
10

Tôi là một fan hâm mộ lớn ủng hộ mọi thứ. Tôi giữ các bài tiểu luận quan trọng của tôi và như vậy trong một thư mục của Dropbox của tôi. Tôi đảm bảo rằng tất cả ảnh của tôi được sao chép vào ổ đĩa ngoài. Tôi có một máy chủ gia đình nơi tôi giữ các tập tin quan trọng được nhân đôi trên hai ổ đĩa bên trong máy chủ (giống như phần mềm RAID 1).Sao lưu kho lưu trữ của Mercurial tại địa phương

Vì vậy, đối với mã của mình, tôi luôn sử dụng Subversion để sao lưu nó. Tôi giữ thư mục thân cây với một bản sao ổn định của ứng dụng của tôi, nhưng sau đó tôi tạo ra một chi nhánh đặt tên với tên người dùng của tôi, và bên trong có bản sao làm việc của tôi. Tôi thực hiện rất ít thay đổi giữa các cam kết với nhánh đó, với sự hiểu biết rằng mã trong đó là bản sao lưu của tôi.

Bây giờ tôi đang xem xét Mercurial, và tôi phải thừa nhận rằng tôi chưa thực sự sử dụng nó, vì vậy tôi có thể có tất cả điều này sai. Nhưng có vẻ như với tôi rằng bạn có một kho lưu trữ phía máy chủ, và sau đó bạn sao chép nó vào một thư mục làm việc dưới dạng một kho lưu trữ cục bộ. Sau đó, khi bạn làm việc trên một cái gì đó, bạn thực hiện cam kết lưu trữ cục bộ đó và khi mọi thứ ở trạng thái được chia sẻ với người khác, bạn hg push vào kho lưu trữ gốc trên máy chủ.

Giữa các mã ổn định, được thử nghiệm, không có lỗi, bản sao lưu ở đâu?

Sau khi thực hiện một số suy nghĩ, tôi đã đi đến kết luận rằng nó không có nghĩa là cho các mục đích sao lưu và nó giả định bạn đã xử lý một mình. Tôi đoán tôi cần giữ các kho lưu trữ Mercurial địa phương trong tài khoản đăng của tôi hoặc một số vị trí được sao lưu khác, vì mã trong tiến trình của tôi không được đẩy tới máy chủ.

Đây có phải là khá nhiều, hoặc tôi đã bỏ lỡ điều gì đó? Nếu bạn sử dụng Mercurial, làm thế nào để bạn sao lưu kho lưu trữ địa phương của bạn? Nếu bạn bật máy tính vào sáng nay và ổ đĩa cứng của bạn bị cháy lên (hoặc nhiều khả năng, đầu đọc bị hỏng, hoặc hệ điều hành bị hỏng, ...), điều gì sẽ bị mất? Nếu bạn đã dành một tuần trước để phát triển một mô-đun, viết các trường hợp thử nghiệm cho nó, ghi lại và nhận xét nó, và sau đó một vi-rút xóa kho lưu trữ cục bộ của bạn, không phải là bản sao duy nhất phải không?

Vì vậy, sau đó ở mặt bên trái, bạn có tạo một kho lưu trữ từ xa cho mọi kho lưu trữ cục bộ và đẩy nó vào mọi lúc không?

Bạn tìm số dư bằng cách nào? Làm cách nào để đảm bảo mã của bạn được sao lưu? Đâu là ranh giới giữa việc sử dụng Mercurial làm dự phòng và sử dụng một tiện ích sao lưu hệ thống tập tin cục bộ để giữ cho các kho lưu trữ cục bộ của bạn an toàn?

Trả lời

11

Đó là ok suy nghĩ của Subversion như là một 'sao lưu', nhưng nó chỉ thực sự làm điều đó bởi đức hạnh là được trên một máy riêng biệt, mà không thực sự nội tại để Subversion.Nếu máy chủ Subversion của bạn là cùng một máy như máy phát triển của bạn - không phải là không phổ biến trong thế giới Linux - bạn không thực sự được sao lưu theo ý nghĩa của việc bảo vệ khỏi lỗi phần cứng, trộm cắp, cháy, vv Và thực tế, có một số dữ liệu trong trường hợp đó không được sao lưu - mã hiện tại của bạn có thể tồn tại ở hai nơi nhưng mọi thứ khác trong kho lưu trữ (ví dụ: lịch sử sửa đổi) chỉ tồn tại ở một nơi, trên máy chủ từ xa.

Cũng giống như Mercurial ngoại trừ việc bạn đã lấy đi nhu cầu cho một máy chủ riêng và do đó bạn phải suy nghĩ một cách rõ ràng về việc sao lưu chứ không phải là tác dụng phụ cần có máy chủ ở đâu đó. Bạn chắc chắn có thể thiết lập một kho lưu trữ Mercurial khác ở đâu đó và đẩy các thay đổi của bạn vào đó định kỳ và xem xét sao lưu của bạn. Ngoài ra, chỉ cần sao lưu kho lưu trữ cục bộ của bạn giống như cách bạn sao lưu bất kỳ thư mục quan trọng nào khác. Với bạn có một bản sao đầy đủ của kho lưu trữ cục bộ, bao gồm tất cả lịch sử sửa đổi và dữ liệu meta khác, điều này được cho là thuận tiện hơn và an toàn hơn cách bạn hiện đang làm với Subversion.

+0

mercurial cũng giữ lịch sử sửa đổi (của các nhánh được theo dõi) trên mỗi kho – kriss

2

Các thay đổi chỉ được chuyển đến thư mục từ xa khi bạn đẩy. Cam kết ở lại địa phương, nhưng bạn nhận được chúng nếu bạn sao chép kho lưu trữ của bạn. Sau đó, có, nếu bạn muốn những thứ của bạn để có được kho lưu trữ máy chủ, bạn phải đẩy nó vào "mọi lúc".

Mặt khác, không có gì ngăn bạn có nhiều máy và đẩy nội dung từ máy này sang máy khác. Mỗi kho lưu trữ thủy ngân có thể biến chính nó thành một máy chủ trong một vài giây gõ "hg phục vụ".

Tôi không chắc nó thực sự trả lời câu hỏi của bạn, nhưng tôi cũng là một fan hâm mộ lớn của sao lưu và quản lý mọi thứ theo cách này với nhiều bản sao của kho lưu trữ của tôi (tôi cũng sử dụng ồ ạt mq để làm việc trong chế độ vá câu chuyện).

PS: như một sidenote, tôi đang xem xét sử dụng mercurial như một công cụ để sao lưu hệ thống tập tin. Điều duy nhất làm phiền tôi là vì mục đích này, tôi muốn vô hiệu hóa tính năng diff và xử lý tất cả các tệp dưới dạng nhị phân, nhưng điều đó phải dễ dàng.

9

Thư mục .hg "ẩn" lưu trữ tất cả các cam kết cục bộ. Bạn có thể sao lưu thư mục này bằng chương trình sao lưu chuẩn.

+2

Vì vậy, giả sử thay đổi đã được cam kết, điều duy nhất tôi cần phải sao lưu là thư mục .hg? Ai đó có thể xác nhận điều này? –

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