2009-07-22 91 views
10

Những ưu điểm và nhược điểm của hệ thống kiểm soát sửa đổi phân phối là gì?Ưu và nhược điểm của hệ thống kiểm soát sửa đổi phân phối?

Nếu bạn có bất kỳ kinh nghiệm với các hệ thống phân phối như Git, Mercurial, Plastic SCM, etc. xin vui lòng chia sẻ kinh nghiệm của bạn. Hãy cho chúng tôi biết những gì đã hoạt động tốt và những vấn đề nảy sinh.

Tôi đặc biệt quan tâm đến việc nghe về việc sử dụng các hệ thống phân tán trong các dự án truyền thống, thương mại, không nguồn mở nhưng các câu trả lời về các mục đích sử dụng khác cũng được hoan nghênh.

+1

http://tackoverflow.com/search?q=distributed+version+control – arathorn

Trả lời

6

Câu hỏi sebasgo chỉ thực sự có nhiều câu trả lời hay, nhưng hãy để tôi nói cho bạn biết kinh nghiệm cá nhân. Tôi làm việc với một số ít người khác rải rác khắp Hoa Kỳ làm công việc tư vấn cơ bản là tư nhân. Khách hàng khác nhau về kích thước, nhưng nhóm của chúng tôi là nhỏ, và chúng tôi làm việc khá nhanh. Mã này là thương mại nhưng thuộc sở hữu của khách hàng khi chúng tôi hoàn thành.

Chúng tôi sử dụng Mercurial, nhưng công cụ cụ thể ít quan trọng hơn quy trình làm việc chung của việc sử dụng kiểm soát phiên bản được phân phối như trái ngược với tập trung. Theo kinh nghiệm của tôi có một hai lớn lợi thế đến năng suất mà tôi không còn muốn làm việc mà không cần:

  1. Đầu tiên và quan trọng nhất: phân nhánh và sáp nhập là dễ dàng. Đây là một tác dụng phụ của việc phân phối, không hoàn toàn là một yêu cầu, nhưng điều quan trọng đối với một DVCS và tôi thấy nó rất quan trọng cho công việc của tôi. Mỗi người trong chúng ta có thể tự do phân nhánh mỗi và mọi tính năng chúng ta cần làm, làm cho nó hoạt động trong một sandbox (không có sự can thiệp từ kho lưu trữ được chia sẻ của chúng ta) và khi chúng ta sẵn sàng hợp nhất nó lại. dễ dàng như thỉnh thoảng sáp nhập, với tùy chọn để vứt bỏ sự hợp nhất và tiếp tục nếu xử lý các xung đột giải quyết là quá nhiều nỗ lực trong thời điểm này. Chúng ta có thể lấy các thay đổi cụ thể và ném chúng lại với nhau trong một nhánh thử nghiệm, và giữ kết quả nếu chúng ta thích chúng hoặc quăng chúng nếu chúng ta không. Khả năng này để thử mọi thứ, chia sẻ chúng và chỉ giữ lại kết quả tốt nhất là lợi ích nghiêm trọng. Như tôi nói nó không phải là một trong tôi có thể thoải mái làm việc mà không có tại thời điểm này.
  2. Làm việc ngoại tuyến. Nó không giống như một việc lớn, cho đến khi bạn không làm việc trong môi trường bình thường của bạn. Tôi có thể đi nghỉ mát, hoặc đi du lịch, hoặc bị cúp điện, hoặc chỉ muốn mang máy tính xách tay của tôi ra ngoài vào một ngày đẹp trời, và tiếp tục làm việc. Lợi ích tâm lý của việc có thể đứng lên và đi mà không cần phải ngừng làm việc, hoặc mất khả năng kiểm tra công việc của tôi là rất thực tế.

Ngoài các hiệu ứng đó, áp dụng cho tất cả các dự án của tôi, liên quan đến công việc và không, một lợi ích cụ thể cho sự sắp xếp cụ thể của chúng tôi, liên quan đến câu hỏi của bạn về sử dụng thương mại và điều bất ngờ xuất hiện: làm việc trên mã.Họ có thể chụp nhanh, thực hiện thay đổi cục bộ và gửi cho chúng tôi các bản sửa lỗi hoặc giữ mã được tinh chỉnh cho một mục đích cụ thể. Đây là sự trợ giúp tuyệt vời trong việc giữ họ tham gia, không quá xa đồng bộ với những gì họ muốn và cho phép họ chỉnh sửa mọi thứ mà không vi phạm bất cứ điều gì (chúng tôi không hợp nhất các thay đổi của họ trừ khi họ sẵn sàng - cùng quy tắc chúng tôi áp dụng cho chính mình.)

Chúng tôi không có nhiều khiếu nại. Phải mất một số nhận được sử dụng để, mặc dù bộ lệnh của Mercurial là đủ gần Subversion (mà chúng tôi sử dụng để sử dụng) mà chúng tôi đã không có rất nhiều rắc rối. Ngay cả sự khó chịu thường xuyên, như vô tình kiểm tra các tệp nhị phân hoặc tệp không được kiểm tra, chúng ta có thể đi lại vì chúng ta có thể tạo lại một kho lưu trữ mà không có những thay đổi đó và thay thế chính nếu chúng ta cần. Điều này không quy mô cho một nhóm người tốt, nhưng hoạt động khá tốt cho một nhóm 3-4 người nhỏ.

Một điều tiêu cực tôi có thể nghĩ rằng đó thực sự là một vấn đề, là một tác dụng phụ của việc có thể dễ dàng phân nhánh: bạn có thể có đủ công việc đang chờ xử lý mà bạn mất theo dõi nó. Điều này hơi giống với việc có nhiều bản thảo của một tài liệu bằng văn bản: truyền đủ bản sao và bạn không nhớ bản sao nào có những thay đổi bạn muốn. Đó không phải là một lỗ hổng trực tiếp của công cụ, và nếu bất cứ điều gì làm cho nó dễ dàng hơn để mang lại cùng nhau làm việc khác nhau hơn so với các công cụ ít có khả năng sáp nhập sẽ được. Nhưng nó là một mối nguy hiểm. Cách duy nhất tôi biết để quản lý nó là phải được xử lý kỷ luật về việc viết nhật ký cam kết hữu ích, mô tả chi nhánh hữu ích và không cố gắng giữ quá nhiều nhiệm vụ mở cùng một lúc. Nói cách khác, ngay cả một công việc rất tốt đẹp vẫn là một quy trình làm việc và cần sự chú ý hoặc nó được ra khỏi bàn tay.

Tôi có vấn đề cụ thể với Mercurial (Tôi thực sự muốn hỗ trợ chi nhánh có tên chỉ là chút bit dễ hơn) và với Git (Tôi thực sự muốn lệnh được đặt trực quan hơn, ngay cả bây giờ), nhưng chúng là khiếu nại về các vấn đề góc đi kèm với sự quen thuộc tuyệt vời. Họ thậm chí sẽ không thể có được nếu những công cụ này đã không đẩy phong bì của những gì tôi nghĩ rằng một VCS có thể làm vượt xa những gì tôi biết trước khi tôi bắt đầu sử dụng chúng.

+0

Các tiêu cực khác của hệ thống kiểm soát sửa đổi phân phối (ít nhất là những gì tôi tìm thấy trên git) là không gian được sử dụng để giữ repo. Ví dụ: 460MB nguồn Ubuntu Quantal với 5 nhánh sẽ mất 1.2 GB trên HDD. Ngay cả khi nó không phải là một vấn đề lớn đối với kích thước ổ cứng hiện tại trên các máy cục bộ, bạn vẫn phải kéo mạng vượt quá 700MB khi bạn kéo lần đầu tiên. Chỉ 3 xu của tôi để hỗ trợ câu trả lời @quark :) –

2

Tôi chưa thử các hệ thống phân phối khác nên không thể nhận xét về chúng. Nhưng một điều làm tôi khó chịu về Git là không có cách nào để chỉ sao chép một phần của kho lưu trữ. Cuối cùng tôi đã kiểm tra, nó cũng thiếu những thứ tương tự như svn: externals. Tôi tìm thấy các externals svn thường được sử dụng trong các công ty để kiểm tra các thư viện từ các kho lưu trữ khác, v.v.

+1

Bạn có thể xác định mô-đun con trong git cho phép bạn chỉ sao chép mô-đun con, tuy nhiên, cho kho lưu trữ này của bạn phải có cấu trúc, bạn không thể làm điều đó khi bạn sao chép. – txwikinger

+0

Đó là khái niệm về kiểm soát sửa đổi phân phối, rằng bạn là người dùng phải có một repo hoàn chỉnh trên máy địa phương của bạn. Hãy nhớ rằng chỉ một lần khi bạn sao chép dự án vào máy cục bộ, bạn kéo tất cả mọi thứ. Kéo tiếp theo sẽ chỉ cung cấp cho bạn những thay đổi. –

3

Đọc này question trên stackoverflow cho nhiều thông tin về GIT vs SVN và các hệ thống phân phối trung tâm nói chung.

2

Vâng, hãy kiểm tra câu hỏi về lưu lượng truy cập ngăn xếp cho việc này. Nếu bạn muốn biết thêm thông tin về cách Git so sánh với các hệ thống kiểm soát sửa đổi khác, có một trang web thông tin thú vị cho rằng: Why Is Git Better Than X?

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