2009-12-26 8 views
62

Tôi có một kho lưu trữ Mercurial cho một dự án cá nhân và tôi đã lưu trữ kho lưu trữ chính trong Dropbox của mình trong một vài tuần (một cái gì đó dọc theo this line; và tôi hiểu nó cũng là possible with git).Mercurial (và, tôi đoán Git) với Dropbox: bất kỳ hạn chế nào?

Ý tưởng là nó phục vụ cả hai như một cách để làm việc với nhiều máy và như một bản sao lưu từ xa. Tôi sao chép kho lưu trữ và làm việc trên bản sao không phải của Dropbox, và chỉ đẩy cập nhật một lần trong một thời gian, theo cách tương tự, tôi giả sử, làm việc với Bitbucket.

Bạn có thể nghĩ đến bất kỳ hạn chế nào đối với ý tưởng này không, so với việc sử dụng lưu trữ dành riêng (BitBucket trong trường hợp Mercurial)? Tôi biết Bitbucket có tài khoản miễn phí cho người dùng đơn lẻ, điều này thật tuyệt, nhưng chúng bị giới hạn ở mức 150 triệu, không phải là số lớn.

Cụ thể, có thể quy trình đồng bộ hóa của Dropbox sẽ làm hỏng kho lưu trữ? Tôi đã phải chạy hg khôi phục một lần trên kho lưu trữ chính, nhưng nó có thể không liên quan (và dù sao nó có khôi phục vui vẻ). Có ai có kinh nghiệm xấu với ý tưởng này không? Có ai có trải nghiệm tốt hơn và có thể giảm bớt nỗi lo của tôi không? Có ai có một ý kiến ​​dựa trên sự hiểu biết tốt hơn về nội bộ của những điều này?

chỉnh sửa: Tôi đã thêm một số giải thích cho các câu hỏi. Chúng ở dạng số in nghiêng.

+2

Tại sao bạn không sử dụng bitbucket? :/ –

+0

Trước khi đẩy vào tài khoản đăng, hãy thông báo cho dropbox để * tạm dừng đồng bộ hóa *. Sau đó đẩy. Trước khi * tiếp tục đồng bộ hóa *, hãy ghi lại thời gian chính xác để bạn có thể tìm thấy các thay đổi trong trang web dropbox trong trường hợp có điều gì đó xấu xảy ra và bạn muốn hoàn nguyên các thay đổi. Sau vài lần nhấn, hãy thực hiện 'git gc' để giữ số lượng tệp trong tối thiểu repo. –

+5

Như một lưu ý ở đây bitbucket không còn có giới hạn 150MB trên repos riêng của nó. Giới hạn bây giờ là 5 nhà phát triển có thể truy cập vào repo. –

Trả lời

73

Tôi khuyên bạn nên chống lại vì những lý do đã nêu ở trên, nhưng được nêu rõ hơn. Cả mercurial và git đều có các giao thức riêng để di chuyển các thay đổi giữa các kho. Các giao thức này được tối ưu hóa/xây dựng cho:

  • hiệu quả
  • nhất quán (không bao giờ bạn có thể kéo từ một repo trong trạng thái nửa cập nhật)
  • móc/triggers - làm việc trên đẩy/kéo bao gồm cả chất lượng (không cho phép các tab, v.v.) lọc

Khi bạn chỉ cho phép đồng bộ hóa thư mục xử lý việc lưu giữ thư mục .hg (hoặc .git) trong quá trình đồng bộ hóa trong khi đồng bộ hóa bạn có một cửa hàng từ xa một trạng thái không nhất quán và không biết điều đó.

Ngoài ra cả hg và git đều có sự phân tách nội dung chỉ dành cho địa phương và những gì ở xa trong trạng thái đĩa của chúng. Họ biết thông tin nào cần chia sẻ (ví dụ: commets changes) và những gì không (ví dụ: current, local working directory revisions).

Trong câu trả lời khác, mọi người đang nói "có thể bạn sẽ ổn" hoặc "tôi chưa bao giờ gặp sự cố" và điều đó có thể đúng, nhưng điều đó không được đảm bảo đúng và kiểm soát sửa đổi không phải là nơi để chơi tỷ lệ cược. Sử dụng giao thức đồng bộ hóa phù hợp, tốt hơn, an toàn hơn, hiệu quả hơn, đầy đủ hơn cho hệ thống kiểm soát nguồn của bạn.

2

Tôi sẽ gặp sự cố nếu bạn cố truy cập kho lưu trữ ở giữa đồng bộ hóa. Nó cũng có vẻ là một chút chi phí. Bạn không thực sự cần đồng bộ hóa với nội dung bạn đồng bộ hóa. Tôi không biết dropbox xử lý xung đột như thế nào, nhưng tôi nghi ngờ nó có thể làm điều đó theo cách nhận thức rõ ràng.

10

Tôi cho rằng có lẽ sẽ hoạt động tốt cho các dự án cá nhân trên một hoặc hai máy, nhưng thực sự bạn sẽ muốn sử dụng lưu trữ chuyên nghiệp cho các dự án đa thành viên.

Tôi đã đích thân sử dụng BitBucket một thời gian và đã khá hài lòng ... bạn cũng có thể có một dự án riêng tư trên tài khoản miễn phí.

+4

Tính đến 2012-01-13, bạn có thể có các dự án riêng tư không giới hạn trên Bitbucket.org nhưng chỉ có 5 người đăng ký cho toàn bộ tài khoản của bạn. Vì vậy, miễn là đội của bạn là không lớn hơn 6 người bạn tốt để đi. – sholsinger

2

+1 cho bitbucket. Nó hoàn toàn miễn phí và bạn nhận được một repo riêng lẻ với tài khoản miễn phí đó (không giống như github).

Hạn chế với giải pháp chỉ dành cho dropbox là nếu bạn làm điều gì đó trong repo trên máy của bạn, thì bản sao đó sẽ được sao chép thành bitbucket và sao chép tới mọi nơi khác mà bạn đã cài đặt dropbox. Dropbox rất nhanh, vì vậy bạn sẽ không thể ngăn nó xảy ra kịp thời để ngăn chặn các vấn đề.

Bạn mất khả năng tách riêng các thay đổi đối với kho lưu trữ của mình bằng cách xuất bản các thay đổi đó.

Tôi sử dụng dropbox để lưu trữ một vài kho lưu trữ mà tôi sử dụng trên cả máy tính ở nhà và cơ quan của mình, nhưng đó không phải là bản sao duy nhất của các kho lưu trữ đó. Ngoài ra còn có một repo bitbucket (cũng như những người khác có bản sao của họ).

+1

Ý tưởng là sử dụng bản sao dropbox như là một "bậc thầy" và để thực sự làm việc với các bản sao cục bộ. Vì vậy, dropbox không phải là bản sao duy nhất. Có lẽ tôi nên sửa nó thành câu hỏi. – daphshez

+0

nếu có ít nhất một bản sao/bản sao bên ngoài hộp kéo thả, nó sẽ hoạt động tốt. Tôi làm điều này chính xác với một số ghi chú cá nhân repos được sao lưu hàng đêm bên ngoài dropbox. –

1

Tôi đã sử dụng Dropbox với git cho các dự án cá nhân trong một thời gian ngắn và tôi chưa gặp sự cố nào. Mặc dù, có những lúc bạn phải chờ Dropbox đồng bộ hóa. I nghĩ rằng điều này có thể gây ra các vấn đề nhỏ nếu có nhiều người làm việc trên cùng một dự án, nhưng đối với các dự án cá nhân, tôi thấy Dropbox thậm chí còn tốt hơn GitHub, nếu chỉ là đẩy/kéo nhanh hơn.Để đẩy/kéo giữa đồng bộ, điều này có thể gây ra vấn đề, và nó thậm chí có thể làm hỏng repo của bạn, nhưng nếu bạn là người duy nhất làm việc trong dự án, thì bạn biết chính xác khi nào Dropbox sẽ đồng bộ.

+0

Tôi cho rằng bạn chỉ cần đẩy và kéo đến những gì git xem xét kho lưu trữ cục bộ của nó, rằng khi sử dụng Dropbox thì không cần khái niệm "từ xa" chính xác? – johnbakers

+0

Điều này có vẻ đẹp. Tôi sẽ cố gắng xem liệu nó có thể dừng/khởi động Dropbox theo chương trình sau đó quấn toàn bộ thứ đó vào một kịch bản crontab hàng ngày. –

15

Tôi đã gặp sự cố với kho chứa Dropbox'ed của mình bị hỏng. Nó không xảy ra mọi lúc, nhưng thực tế là nó đã xảy ra nhiều lần có nghĩa là tôi sẽ ngừng sử dụng Dropbox cho mục đích này.

Điều đó nói rằng, Dropbox chắc chắn là rẻ hơn so với việc lưu trữ thực sự, miễn là bạn giữ bản sao lưu, bạn có thể thấy nó có thể chấp nhận cho các dự án cá nhân.

+3

+1 Dropbox dường như bị lẫn lộn khi nhiều tệp được tạo và xóa trong một thời gian ngắn, ví dụ như tệp khóa. –

1

Tôi sẽ không khuyên bạn sử dụng dropbox với mercurial, vì tôi thường thấy các tệp xung đột giữa máy Mac và máy khách Windows của mình. Đặc biệt là hoàn tác bị ảnh hưởng, nhưng tôi cũng đã gặp phải xung đột với các tệp khác.

Trân Mirko

0

Tôi đang sử dụng nó với Bazaar tại thời điểm trên 3 máy. Tuy nhiên, tôi là nhà phát triển duy nhất trong bất kỳ chi nhánh nào.

Tôi đã sử dụng lệnh init-repo --no-trees để tạo kho lưu trữ.

2

Tôi cũng đã sử dụng Dropbox với Hg mà không gặp sự cố cho đến bây giờ. Quá muộn, tôi nhận ra hg không báo cáo tham nhũng trong quá trình kiểm tra định kỳ, chỉ khi bạn cố gắng sử dụng repo cho thực (tồi tệ nhất trong mọi tình huống, vì bạn không biết thứ gì đó bị hỏng cho đến khi bạn thực sự cần nó).

Không rõ liệu tham nhũng là tự phát hay do truy cập kho lưu trữ với máy Mac, máy khách Windows và Linux (tôi sử dụng cả ba lần tại các thời điểm khác nhau). Nhưng tôi đã thấy ít nhất một trường hợp tham nhũng xảy ra khi chỉ có Mac hoạt động để nó cũng có thể là Dropbox.

Nếu bạn quyết định sống nguy hiểm, hãy chạy "hg verify" (hoặc "git verify" thường xuyên để bật bất kỳ bụi bẩn nào.

0

Đối với những người thích sử dụng Dropbox trên bitbucket/github, đây là những gì tôi làm để tránh tham nhũng từ 2 chiều quá trình đồng bộ hóa các dịch vụ sao lưu đám mây:

thư mục mã địa phương của tôi là c:\code & thư mục sao lưu là c:\Dropbox . Bên trong thư mục Dropbox, tôi có một thùng chứa tệp được mã hóa truecrypt (Kích thước của nó đủ lớn hơn thư mục mã của tôi). Trong ngày tôi thường xuyên cam kết thay đổi kho lưu trữ Git/Mercurial địa phương của tôi. Tuy nhiên vào cuối ngày, tôi bỏ Dropbox & gắn hộp chứa tệp truecrypt. Tôi đẩy các thay đổi vào kho lưu trữ trống trong vùng chứa tệp, bỏ gắn kết nó & khởi động lại Dropbox.

Bằng cách đó, tôi có thể sử dụng dịch vụ đám mây một cách an toàn để phục vụ như một bản sao lưu kho lưu trữ DVCS của tôi. Nếu vùng chứa tệp đang được sử dụng, Dropbox sẽ chờ nó được bỏ gắn kết để hy vọng, không có sự thay đổi tham nhũng ở đó. Tuy nhiên, nếu tôi nhận được một bản sao mâu thuẫn của vùng chứa tệp bằng cách nào đó, tôi có thể dễ dàng gắn kết cả hai bản sao và so sánh các bộ thay đổi.