Kiểm soát phiên bản dựa trên lưu trữ di động?


9

Tôi phát triển các dự án cá nhân trên hai máy mà không sử dụng máy chủ dùng chung hoặc kết nối mạng giữa hai máy.

Có bất kỳ hệ thống kiểm soát phiên bản phổ biến nào đáng tin cậy hỗ trợ sử dụng bộ lưu trữ di động (như thiết bị flash USB) làm kho lưu trữ được chia sẻ không?


Tại sao bạn muốn / cần sử dụng lưu trữ di động?
Bernard

Để di chuyển mã giữa hai máy theo cùng một cách mà hệ thống kiểm soát phiên bản bình thường làm với máy chủ dùng chung. (Tôi không có máy chủ dùng chung.)
billpg

Tôi đã từng sử dụng một bộ các kho lưu trữ đồng bóng trên ổ flash USB để cập nhật các công cụ sản xuất trong nhà máy và nó hoạt động rất tốt. Bạn thậm chí có thể thấy khi các kỹ thuật viên trên trang web đã sửa đổi mã trên máy cục bộ, trong khi bạn đi vắng và hợp nhất (hoặc từ chối) các thay đổi của họ trước khi đồng bộ hóa các thay đổi của họ trở lại ổ đĩa flash.
Đánh dấu gian hàng

Ở đây đã nói rằng SVN hỗ trợ lưu trữ cục bộ và bạn có thể sử dụng usb. Nhưng tôi thích lưu trữ DB của nó trong thư mục DropBox riêng tư của mình;) Bạn cũng có thể sử dụng nhiều dịch vụ miễn phí (như lắp ráp hoặc tfs.visualstudio.com)
Pavel Voronin

Câu trả lời:


31

Sử dụng DVCS như Git hoặc Mercurial .

Hệ thống kiểm soát phiên bản phân tán không có máy chủ trung tâm dùng chung.

Với DVCS, mọi bản sao của kho lưu trữ đều chứa toàn bộ lịch sử - mọi thứ. Điều này có nghĩa là, khi được sử dụng trên khóa USB, mọi thay đổi bạn thực hiện sẽ được thực hiện đối với kho lưu trữ trên khóa USB và khi được di chuyển giữa các máy tính sẽ giữ lịch sử này.


9
Và nếu bạn đã sử dụng github, bạn thậm chí sẽ không phải mang theo ổ USB
CamelBlues

Cảm ơn bạn. Nó có thể được thiết lập để sử dụng lưu trữ di động làm kho lưu trữ không?
billpg

@billpg - Vâng. Nó chỉ đơn giản là sống trong một cấu trúc thư mục.
Oded

@CamelBlues hoặc bitbucket hoặc kilnhg hoặc có thể nhiều loại khác có thể phù hợp hoặc không phù hợp ...
Murph

3
Tôi đã có kho lưu trữ Mercurial cá nhân chính của mình trên DropBox. Hoạt động rất tốt và tự động thực hiện sao lưu (vì DropBox dường như không biến mất cùng lúc với việc tôi mất tất cả các máy tính của mình).
David Thornley

7

Ngoài GIT, Mercurial, v.v. đã đề xuất ở trên, cũng hãy xem Fossil - Nó có những ưu điểm là các nhị phân thời gian chạy là nhỏ (1Meg hoặc hơn cho Windows và Linux), cần cài đặt di động và không. Do đó, không giống như những người khác (theo như tôi biết), nó có thể được đặt vào thiết bị lưu trữ và chạy trên bất kỳ máy nào mà bộ lưu trữ được cắm vào mà không cần phải cài đặt ứng dụng trên máy trước tiên. Nó bao gồm một Wiki và hệ thống theo dõi thay đổi / lỗi với repo. Nó cũng có một gui được xây dựng trong.

Tôi đã không sử dụng nó một cách nghiêm túc (tôi chủ yếu sử dụng GIT), nhưng bị ấn tượng bởi cách tiếp cận trọng lượng nhẹ và việc đưa vào Wiki và trình theo dõi khiếm khuyết khiến nó trở nên lý tưởng cho các dự án nhỏ. Mối quan tâm duy nhất của tôi là một số tính năng mạnh mẽ hơn của GIT có thể không thực hiện được và không giống như GIT, cộng đồng người dùng không lớn đến mức dễ dàng tìm thấy câu trả lời cho các câu hỏi.


Mặc dù Git sử dụng điều răn Unix để làm một việc và thực hiện nó một cách nghiêm túc, bạn có thể có các tính năng này trong Git thông qua các tiện ích mở rộng như ticgit (hệ thống bán vé) và gollum (wiki dựa trên repo).
Jason Lewis

@Jason Lewis: Bạn là chính xác, và vì nó là nguồn mở, bạn chỉ có thể sửa đổi nó để đáp ứng yêu cầu của bạn, vì vậy GIT (hoặc bất kỳ công cụ nào khác) có thể là tất cả đối với bất kỳ ai (có thể bị làm phiền, có thời gian và tài nguyên rảnh rỗi để tải xuống, cài đặt và gỡ lỗi tất cả các "plugin". Tất cả những gì tôi đã nói là cho một giải pháp "Chỉ hoạt động tốt", đáng để xem xét Fossil.
mattnz

1

Sử dụng DCVS có lẽ là một ý tưởng tốt, nhưng đó không phải là lựa chọn duy nhất.

Tôi có một kho CVS nhỏ trên ổ USB. Khi tôi muốn truy cập nó, tôi chỉ cần sử dụng cvs -d <path>hoặc đặt thành $CVSROOTđường dẫn gốc của kho lưu trữ (tất nhiên yêu cầu ổ ngón tay cái phải được gắn trên hệ thống).

Nếu bạn đã quen sử dụng CVS, việc này sẽ khả thi. Điều tương tự nên áp dụng cho SVN. Nó chỉ có nghĩa là kho lưu trữ trung tâm của bạn nằm trên ổ ngón tay cái và không phải lúc nào cũng hiển thị.

Có các đối số cho việc sử dụng DCVS thay vì CVS nói chung. Tôi không nghĩ những đối số đó bị ảnh hưởng đặc biệt bởi liệu kho lưu trữ trung tâm nằm trên ổ ngón tay cái hay ở nơi nào khác. Ví dụ, bạn có thể dễ dàng tạo một kho git trên ổ ngón tay cái.


1
Tôi thường không phải là một fan hâm mộ lớn của DVCS, nhưng tôi nghĩ DVCS sẽ tốt hơn trong trường hợp này. Vấn đề với VCS không phân phối là repo là một điểm thất bại duy nhất. Nếu nó ngồi trong một trung tâm dữ liệu kiểm soát khí hậu và được sao lưu thường xuyên, thì đó không phải là vấn đề lớn - nhưng thứ gì đó như ổ ngón tay cái sẽ bị mất (hoặc bị dẫm lên, hoặc bị chó ăn, hoặc rơi vào người Nga trắng) sớm hơn hoặc sau đó.
Mike Baranczak

1
@MikeBaranczak: Điểm hay - nhưng mọi thứ trên ổ ngón tay cái nên được sao lưu thường xuyên, cho dù đó có phải là kho CVS hay không.
Keith Thompson

với một hệ thống phân tán, mỗi khách hàng đã có một bản sao đầy đủ của repo. Vì vậy, không có lý do cho một thủ tục "sao lưu" riêng biệt.
Mike Baranczak

1
@MikeBaranczak: Chắc chắn, đó là một lý do tốt để sử dụng DCVS. Quan điểm của tôi là việc lựa chọn DCVS so với hệ thống tập trung không phụ thuộc vào việc bạn có sử dụng ổ ngón tay cái hay không.
Keith Thompson

0

Ngoài ra các câu trả lời khác:

Mặc dù DVCS rất phù hợp với vấn đề này, nhưng về mặt kỹ thuật bạn cũng có thể sử dụng Subversion, nếu bạn cảm thấy thoải mái hơn với nó. Subversion có thể sử dụng một thư mục địa phương thay vì một máy chủ trung tâm. Bạn chỉ có thể đặt nó vào một ổ đĩa ngón tay cái, và sử dụng nó.

Nhược điểm, so với DVCS, là bạn chỉ có thể làm việc với Subversion (nghĩa là cam kết, xem nhật ký, v.v.) trong khi ổ ngón tay cái được cắm vào. Ngoài ra, nó phải luôn là cùng một ổ ngón tay cái (hoặc ít nhất là lên -to-date copy), vì với Subversion, bạn không nên sử dụng nhiều hơn một kho lưu trữ (đó là phần không được phân phối). Vì vậy, nếu bạn quên ổ ngón tay cái của mình, bạn không thể sử dụng nó, không giống như với Git hoặc Mercurial.

Ghi chú:

Như đã giải thích ở trên, và trong các ý kiến, DVCS thực sự phù hợp hơn cho vấn đề của bạn. Tôi chỉ đề cập đến Subversion vì lợi ích hoàn toàn, và trong trường hợp bạn có một số lý do đặc biệt để sử dụng Subversion.


1
Như với câu trả lời của Keith , vấn đề với một VCS trong một thư mục cục bộ là đó là một điểm thất bại duy nhất. Ngoài ra, nếu bạn chuyển từ máy A sang máy B nhưng để ổ đĩa ngón tay cắm vào máy A, thì bạn sẽ ít quan tâm hơn nếu bạn đang sử dụng DVCS (bạn luôn có thể hợp nhất các thay đổi cục bộ của mình sau này) trong khi với VCS , bạn sẽ phải quay lại mechine A, lấy ổ đĩa và quay trở lại máy B trước khi bạn có thể tiếp tục.
Đánh dấu gian hàng

@MarkBooth: Tôi không ủng hộ giải pháp này, tôi chỉ muốn chỉ ra nó tồn tại, vì lợi ích hoàn toàn và trong trường hợp OP có một số ưu tiên đặc biệt cho Subversion. Tôi chỉnh sửa câu trả lời của tôi để làm cho điều này rõ ràng.
sleske

Cảm ơn @sleske, tôi đồng ý rằng một ưu tiên cho svn(hoặc thực sự là Cvs) có thể cân nhắc việc sử dụng giải pháp đó, nhưng vì lợi ích của việc tiết lộ đầy đủ, những nhược điểm của phương pháp đó cũng cần được đề cập. Hãy chỉnh sửa các điểm từ nhận xét của tôi vào câu trả lời của bạn. Nếu bạn làm như vậy, tôi sẽ vui lòng dọn dẹp (xóa) ý kiến ​​của tôi. * 8 ')
Đánh dấu gian hàng

Tôi không chắc câu trả lời này cho biết thêm rằng tôi đã không nói gì trong tôi.
Keith Thompson

1
@KeithThndry: Nó thêm thông tin rằng SVN có thể sử dụng một thư mục cục bộ thay vì một máy chủ trung tâm. Điều đó được giải thích trong các tài liệu SVN, nhưng vì hầu hết mọi người sử dụng SVN thông qua một máy chủ trung tâm, nên có thể không rõ ràng rằng SVN không yêu cầu máy chủ.
sleske
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.