Trường hợp kinh doanh cho các hệ thống kiểm soát phiên bản phi tập trung


26

Tôi đã tìm kiếm và không thể tìm thấy bất kỳ lý do kinh doanh nào tại sao các hệ thống git / mercurial / bazzr tốt hơn các hệ thống tập trung (lật đổ, lực lượng).

Nếu bạn đang cố bán DVCS cho một người không có kỹ thuật, bạn sẽ cung cấp những lý lẽ nào cho lợi nhuận tăng DVCS .

Tôi sẽ sớm giới thiệu git cho người quản lý của mình, sẽ mất một thời gian để chuyển đổi kho lưu trữ lật đổ và một số chi phí trong việc mua giấy phép smartgit.

Chỉnh sửa Tôi đã cố gắng biến câu hỏi này thành một cuộc thảo luận chung về tập trung so với phi tập trung, nhưng chắc chắn nó đã biến thành git vs lật đổ. Chắc chắn có những hệ thống tập trung tốt hơn lật đổ.


1
Chúng tôi đang ở một vị trí tương tự để xem xét vụ án và phải nói rằng, tôi không tin rằng có một hiện tại.
Jon Hopkins

Có thể git-svnđáp ứng nhu cầu của bạn?
JBRWilkinson

@JBRWilkinson Tôi vừa mới sử dụng git-svn để di chuyển một loạt các kho lưu trữ sang git. Công ty không đầu tư nhiều vào các công cụ tích hợp với svn nên không có vấn đề gì.
Keyo

Tham khảo bản chỉnh sửa - bạn vẫn chưa giải thích làm thế nào và tại sao SVN lại thất bại đến mức bạn cảm thấy cần một người thay thế. Câu trả lời của tôi (ví dụ) KHÔNG phải là về git vs svn mà là tìm trường hợp kinh doanh để thay đổi hiện trạng.
Murph

Câu trả lời:


23

Hmm, đã từng là một người quản lý, tôi có hai phản ứng "giật đầu gối" ngay lập tức:

  • Nếu bạn không có lý do chính đáng tại sao bạn lại ném git ngoài việc hợp thời trang?
  • Tương tự, Subversion thất bại như thế nào mà bạn cần một sự thay thế?

Thật ra tôi không phải là người tiêu cực - tôi nghĩ có lẽ có một trường hợp được tạo ra (phụ thuộc vào hoàn cảnh) nhưng nếu trường hợp đơn giản là git đó "tốt" hơn lật đổ thì bạn không thực sự có.

Bạn cũng cần có khả năng liệt kê những nhược điểm - bạn đã xác định được chi phí di chuyển và công cụ lại - còn vấn đề gì nữa không? ví dụ: Điều gì xảy ra với kho lưu trữ đẹp, trung tâm, được sao lưu của bạn? Làm thế nào để bạn tích hợp với máy chủ xây dựng tích hợp liên tục của bạn (nếu bạn không có, hãy quên git và sắp xếp nó trước). Oh bảo mật và theo dõi - SVN chạy với thông tin đăng nhập và quyền thích hợp.

Theo suy nghĩ của tôi, các lợi ích là linh hoạt, hợp nhất tốt hơn, khả năng thực hiện các cam kết cục bộ mà không phá vỡ các bản dựng và như vậy. Những nhược điểm là thiếu kiểm soát và tính linh hoạt tương tự.

Có thể là tất cả những gì bạn muốn làm là chạy git cục bộ vào máy của bạn dưới dạng máy khách lật đổ "tốt hơn" (tôi đang xem xét việc này bằng cách sử dụng đồng bóng).

Hmm, có lẽ toàn bộ câu trả lời này là một nhận xét thực sự? Bạn cần đưa ra trường hợp của bạn ở đây (trong câu hỏi) để git over lật đổ (trong môi trường của bạn) để xem liệu chúng tôi có thể giúp bạn xác định trường hợp kinh doanh hay không.


FWIW, tôi biết rằng người ta có thể dễ dàng chỉ định một thể hiện cụ thể của kho lưu trữ thành nguồn trung kế / nguồn tham chiếu và hơn nữa đó là cách một dây vào máy chủ xây dựng của một người - sự khác biệt là với DVCS có nhiều quyết định quản trị hơn một cái gì đó vốn có trong kiến ​​trúc.


1
Giải quyết các vấn đề về quyền / tính linh hoạt: bạn vẫn cần một kho lưu trữ "nguồn", nơi bạn thực sự có thể đặt quyền như bình thường. Tích hợp liên tục chạy cho kho lưu trữ nguồn, các nhà phát triển sao chép kho lưu trữ nguồn, v.v ... Tuy nhiên, bản sao lưu của nó ít quan trọng hơn, vì mọi người đều có bản sao, không chỉ là thanh toán.
Matthieu M.

1
Điểm về bản sao đầy đủ được sao lưu được thực hiện tốt. Tôi sẽ tự do thừa nhận có một số lĩnh vực này tôi không hiểu rõ lắm vì "công việc" của tôi là svn và sự đồng bóng của tôi là cá nhân và, tuy nhiên, có phần hạn chế.
Murph

14

Tôi có thể nói rằng việc phân nhánh và sáp nhập nhanh chóng và không đau sẽ cho phép các nhà phát triển làm việc hiệu quả hơn với mã của họ, vì mọi tính năng mới có thể được phân nhánh, sau đó được hợp nhất. Làm cho quá trình phát triển trôi qua suôn sẻ hơn nhiều. Ngoài ra, bản chất phân tán, sẽ cho phép mọi nhà phát triển có toàn bộ bản sao của mã, do đó, không có lo lắng về lỗi máy chủ tập trung lấy hết mã của bạn. Có lẽ có nhiều lý do hơn, tuy nhiên, hai lý do đó là lý do hàng đầu của tôi khi sử dụng Git.


2
Trong môi trường kinh doanh, 'máy chủ tập trung' sẽ có dự phòng, sao lưu và quản trị viên chịu trách nhiệm giữ cho nó (và tất cả các máy chủ khác) tồn tại.
JBRWilkinson

2
Trong một môi trường kinh doanh lớn, bạn sẽ có sự dư thừa máy chủ. Trong một doanh nghiệp nhỏ, sự dư thừa máy chủ như vậy là không chắc chắn.
Michael Shaw

2
Một lỗi máy chủ tập trung sẽ không lấy hết mã của bạn. Ngay cả khi bạn không có bản sao lưu, điều tồi tệ nhất có thể làm là gỡ bỏ lịch sử sửa đổi của bạn. Nhưng miễn là tất cả các nhà phát triển có mã kiểm tra, nó cũng tồn tại ở dạng hiện tại trên hệ thống của họ.
Mason Wheeler

1
@mason: nhưng đó chỉ là một giả định: 'miễn là tất cả các nhà phát triển ... ". Bởi vì trên các công ty quy mô nhỏ với các dự án quy mô nhỏ hơn, các dự án có thể sống và đang được sử dụng một cách hạnh phúc mà không có ai mã hóa trong một năm hoặc hai.
Inca

Và tôi cũng không đánh giá thấp giá trị của lịch sử cam kết. Trong một hệ thống khổng lồ, có thể thực sự có giá trị để xem ai và tại sao lại làm điều gì đó với mã.
Tamás Szelei

8

Tôi giả sử bạn có thể tạo ra một trường hợp để kiểm soát phiên bản tăng năng suất (và do đó lợi nhuận) ngay cả khi nhà phát triển đang làm việc một mình.

Một DVCS tốt nhận ra những lợi ích năng suất tương tự ngay cả khi làm việc trong nhóm - mỗi nhà phát triển có thể nhận được tất cả lợi ích khi làm việc với kiểm soát phiên bản - họ có thể thực hiện các cam kết thường xuyên, quay lại, chơi xung quanh với mọi thứ, v.v. - mà không phải lo lắng về xung đột với những gì các nhà phát triển khác đang làm cho đến khi họ sẵn sàng đẩy những thay đổi của họ ra.


Đây là những gì tôi sẽ đăng, khá nhiều. Bạn chắc chắn sẽ thấy sự cải thiện năng suất từ ​​các nhà phát triển cam kết sớm và thường xuyên vào kho lưu trữ của riêng họ, mà không gây ra bất kỳ rắc rối nào cho bất kỳ đồng nghiệp nào của họ.
Carson63000

5
Sau đó, bạn sẽ ở trong địa ngục hội nhập khi cuối cùng bạn thực hiện các thay đổi của mình. Đây là một điều xấu không phải là một điều tốt.
Henry

Khi bạn đang thực hiện phát triển cục bộ với nhiều cam kết, bạn có thể tiếp tục lấy các thay đổi từ kho lưu trữ trung tâm và giữ các thay đổi cục bộ của bạn phù hợp với sự phát triển đang diễn ra mà những người khác đang làm. Do đó, đã đến lúc đẩy các thay đổi của bạn vào kho lưu trữ trung tâm, bạn sẽ có phần lớn các thay đổi đã xảy ra ở đó và việc tích hợp sẽ trở nên dễ dàng.
DaveJohnston

1
Trừ khi một trong những đồng nghiệp của bạn đã làm điều tương tự chính xác và cả hai bạn đã không hòa nhập được một lúc. Luôn có sự đánh đổi. Tôi đã thấy các trường hợp công cụ được tích hợp trên tuyến chính mà họ không nên (giải pháp sai, cố gắng hết sức cho một giải pháp và như vậy), tích hợp ở tính đầy đủ tính năng cũng có những đặc quyền.
Joppe

2
Bạn không thể làm tất cả những điều này với (a) chi nhánh SVN hoặc (b) nhiều bản sao làm việc?
JBRWilkinson

4
  • Chi nhánh mỗi lỗi
  • Giảm độ trễ trên diffs của bạn.
  • Có thể rất nhanh chóng điều hướng tùy ý thông qua lịch sử của một chi nhánh khi bạn xem xét ngang hàng.
  • Bạn vẫn có quyền truy cập vào toàn bộ lịch sử của mình khi bạn không có quyền truy cập vào máy chủ tập trung: bạn không ở văn phòng, điện bị cúp nhưng pin của máy tính xách tay vẫn hoạt động, ...

Những điều này cho phép bạn làm việc hiệu quả hơn, cả solo và trong một nhóm. Làm việc hiệu quả hơn = thời gian phát triển nhanh hơn = thời gian tiếp thị nhanh hơn = lợi nhuận.


3

Xin lỗi vì đã liên kết với blog của riêng tôi, nhưng tôi đã viết bài về chủ đề này:

Vui lòng downvote nếu bạn không thấy chúng có liên quan.

Tóm lại, DVCS làm cho các mô hình phân nhánh dễ dàng có thể giữ cho các nhóm lớn các nhà phát triển không bước lên từng ngón chân, điều này làm tăng cả năng suất và chất lượng xây dựng hàng ngày của bạn. Phần cộng tác lộn xộn của kiểm soát phiên bản có thể được thực hiện trong các repos cục bộ, để lại kho lưu trữ trung tâm của bạn sạch hơn và có chất lượng cao hơn. Ngoài ra, các quyết định về thời điểm phân nhánh có thể có ảnh hưởng lớn đến hiệu quả, ví dụ nếu một bộ phận sẵn sàng bắt đầu công việc trên 2.0 khi 1.0 vẫn đang được những người khác dọn sạch. DVCS cho phép những quyết định đó được đưa ra ở cấp địa phương thay vì theo ủy ban.


Các mục blog của bạn được viết tốt. Tôi chưa đọc tất cả trong số họ mặc dù. Tôi tự hỏi tại sao bạn lại chọn Bzr khi Git và Hg dường như phổ biến hơn nhiều. Mọi người dường như ghét Bzr vì chậm. Tôi cũng là một fan hâm mộ của Git vì băm cây thay vì số sửa đổi, điều này có vẻ rất an toàn đối với tôi. Các số bzr rev có bị xáo trộn khi các chi nhánh được hợp nhất không?
Keyo

2
@Keyo, tôi đã chọn bzr vì tôi phải dạy DVCS cho chính mình và bzr là người mới thân thiện nhất. Tôi đã chuyển sang git cho tốc độ, tính năng và sự ổn định kể từ đó. Bazaar cũng băm các phiên bản của nó và có các định danh duy nhất trên toàn cầu, chúng không phải là mặc định được hiển thị cho người dùng. Số sửa đổi của họ là thực sự không khác gì so với sử dụng HEAD~1, HEAD~2vv trong git. Rất hiếm khi bạn cần băm thực tế, nhưng đó là điều đầu tiên bạn học được trong git và luôn ở trong khuôn mặt của bạn. Che giấu điều đó từ người dùng trừ khi bạn thực sự cần nó là một lý do bzr thân thiện với người mới hơn.
Karl Bielefeldt

Cảm ơn bạn đã làm rõ. Git không chính xác dễ dàng cho tôi đến từ lật đổ. Rất nhiều lệnh có cùng một từ nhưng làm những việc khác nhau.
Keyo

2

Đối số của tôi cho DVCS là:

  • Sự phân nhánh không bị phá vỡ, điều này dẫn đến ít ma sát hơn trong việc phát triển các tính năng và giữ cho các sản phẩm hiện có được vá. Ma sát tốn tiền kịp thời.

  • Chuyển sang một hệ thống hiện đại thu hút tốt hơn các nhà phát triển tiên tiến, điều này sẽ dẫn đến văn hóa các sản phẩm tốt hơn, cho phép doanh nghiệp bán được nhiều sản phẩm hơn.

  • Các cam kết phi mạng nhanh hơn , cho phép các nhà phát triển cam kết thường xuyên, dẫn đến phát hiện và phân tích lỗi chi tiết.

Về cơ bản, đó là về việc giảm ma sát. Có một thuật ngữ cho việc này: Muda . Càng nhiều ma sát, càng đau đớn khi làm mọi việc. Càng nhiều nỗi đau, càng ít được thực hiện, lợi nhuận càng ít.


2

Tôi xin lỗi nếu tôi hiểu, nhưng cho phép tôi đặt trường hợp kinh doanh không có điều khoản không chắc chắn:

SVN làm cho cuộc sống của các nhà phát triển khốn khổ . Và điều đó làm cho một doanh nghiệp phần mềm khốn khổ.

... theo những cách mà nhiều người sẽ không nhận ra cho đến khi họ bắt đầu sử dụng DVCS. Đây là trường hợp kinh doanh quan trọng nhất có thể được thực hiện . Tại sao? Chà, so với chi phí tìm kiếm và giữ chân các nhà phát triển giỏi, chi phí chuyển sang DVCS gần như không tồn tại .

Hãy xem xét những điều sau đây:

  • Tất cả trừ các hoạt động tầm thường nhất trong SVN (và hầu hết các CVCS khác) đều yêu cầu truy cập mạng. Trong hầu hết các DVCSes, truy cập mạng chỉ xảy ra khi bạn làm một pushhoặc pullphẫu thuật. Điều này có nghĩa là các lệnh không tầm thường là chậm . Bạn làm gì khi một lệnh được thực hiện mãi mãi? Cá nhân tôi duyệt các lập trình viên. Tin tức hoặc tin tặc trong khi chờ đợi. Nói một cách đơn giản, DVCS cho phép các lập trình viên tập trung vào làm những gì họ yêu thích: viết phần mềm của công ty .
  • SVN có hỗ trợ phân nhánh theo cách tương tự như các nhà tù có hỗ trợ thả xà phòng của bạn khi tắm: bạn có thể làm điều đó, nhưng khi bạn làm bạn bị đụ. Do đó, SVN buộc các nhà phát triển của bạn phải liên tục chiến đấu với nhau để thực hiện các thay đổi .
  • Khi SVN ngừng hoạt động, nó sẽ ngừng hoạt động. Nó trở nên cực kỳ khó khăn cho các nhà phát triển để thực hiện công việc của họ nếu họ có thể làm tất cả. Do đó, SVN buộc các nhà phát triển của bạn phải phụ thuộc vào cơ sở hạ tầng của bạn không có lỗi 100% .
  • Những ngày này, git đang nhanh chóng đạt được tư duy trong khi SVN đang nhanh chóng mất nó. Nếu không có lợi ích gì khi sử dụng DVCS qua SVN, tại sao cộng đồng lập trình lại thay đổi nhanh nhất có thể?

Tất cả số tiền này để làm gì? Tôi vẫn chưa gặp một nhà phát triển đã cho DVCS một thử nghiệm trung thực mà sau đó thích SVN hơn. Nếu tôi có thể đưa ra một tuyên bố khó chịu, táo bạo hơn, SVN là một "điều ác cần thiết" mà các nhà phát triển buộc mình phải sử dụng. Git là một công cụ giúp các nhà phát triển làm việc hiệu quả hơn và hạnh phúc hơn .

(Tôi nên chỉ ra rằng các tuyên bố được in đậm là những tuyên bố cụ thể mà bạn nên tập trung vào. Phần còn lại của chúng chỉ cung cấp ngữ cảnh.)


5
-1 - bạn là người hiểu biết và trong khi có một số sự thật trong những gì bạn viết, nó lại được đưa ra một cách tiêu cực như để xác minh về FUD thay vì phân tích lý luận. SVN có chậm không? Chỉ khi kho lưu trữ rộng lớn và mạng băng. SVN có ngừng hoạt động không - tôi không thể nhớ nó đã ngừng hoạt động và KHÔNG vì máy tính của tôi không phụ thuộc vào sự tồn tại của kho lưu trữ để chỉnh sửa / biên dịch / chạy nguồn. SVN phân nhánh và sáp nhập kém? Wow mọi người có những ký ức ngắn ... tại sao DVCS đạt được mindshare? Một mớ hỗn độn của chức năng - được cải thiện - và, thẳng thắn, thời trang.
Murph

1
@Murph - Dù muốn hay không, mọi người ghét thay đổi đến mức bị dằn vặt. Để thuyết phục họ thay đổi, bạn cần thuyết phục họ rằng hiện trạng bị phá vỡ. Và nó đang bị phá vỡ. FUD chỉ xấu khi không có lý do để sợ hãi, không chắc chắn và nghi ngờ. Đối với mindshare, tôi đồng ý với bạn. Nhưng đó không thực sự là vấn đề. Đó là liệu những người ra quyết định có đồng ý với nó hay không. Và mọi người quản lý mà tôi từng gặp đều bị thuyết phục bởi lập luận này (ngay cả khi họ ghét git).
Jason Baker

2
Tôi không nhất thiết không đồng ý với bạn Jason chỉ cho rằng điểm của bạn không được thực hiện tốt. Cụ thể, tôi nghĩ rằng bạn đang rất hiệu quả và nếu bạn bị bắt làm việc đó, bạn có xu hướng mất điểm cho lập luận của mình ngay cả khi bạn đúng. (Ngoại trừ những điểm mà bạn sai dĩ nhiên ... (- :)
Murph

2
Tất cả các điểm của bạn là vấn đề quan điểm hơn là sự thật. Tôi sẽ liệt kê từng cái nhưng không có đủ không gian trong các bình luận. Làm thế nào về bạn trả lời một lần nữa mà không có sự hiểu biết?
Henry

1
@Henry - Lập trình viên.se dành cho các câu hỏi và câu trả lời chủ quan. Chủ quan == vấn đề quan điểm.
Jason Baker

1

Điều duy nhất tôi có thể nghĩ là git hoạt động mà không cần kết nối mạng. Mọi thứ khác thậm chí thường khó bán cho người dùng kỹ thuật sử dụng chìm hoặc lực lượng trong một thời gian khá lâu.


2
Chắc chắn, nhưng Subversion chủ yếu hoạt động mà không cần kết nối mạng. (Không phải cam kết rõ ràng, nhưng những điều phổ biến như nhận được thông tin về các bản sao làm việc hoặc diffing với các phiên bản cơ sở tất cả các công việc.)
j_random_hacker

@j_random_hacker: Điểm của một VCS là theo dõi các thay đổi mã. Cam kết thay đổi mã theo dõi. Nếu bạn không thể cam kết ngoại tuyến, tôi sẽ lập luận rằng VCS của bạn không hoạt động khi ngoại tuyến.
Daenyth

1

Sự khác biệt cho thấy khi có sự cố

Chúng tôi đã chuyển sang git 6 tháng trước sau khi chuyển kho lưu trữ cũ trong thập kỷ của chúng tôi.

Cho đến nay tôi đã tìm thấy những điều sau đây, sau một chút thử nghiệm:

  • phân nhánh và sáp nhập gần như không đau. Điều này làm cho nó dễ dàng hơn nhiều để làm việc trên các tính năng riêng biệt và sửa lỗi mà không cần bước lên các ngón chân khác. Nó cũng làm cho nó rất dễ dàng để áp dụng một lỗi nhất định ở một nơi khác.

  • mạnh mẽ hơn theo thiết kế - bạn không phụ thuộc 100% vào một máy chủ trung tâm có sẵn và nếu không, bạn có thể sử dụng tạm thời bất kỳ bản sao nào để thay thế. Điều này loại bỏ một điểm quan trọng của sự thất bại - nếu máy chủ SVN ngừng hoạt động vì bất kỳ lý do gì, không ai có thể thực hiện công việc của SVN. Nếu kho lưu trữ git trung tâm bị hỏng vì bất kỳ lý do gì, bạn vẫn có thể làm việc và đẩy / kéo cục bộ để đảm bảo rằng các cam kết được sao chép. Bạn thậm chí có thể có nhiều kho lưu trữ ngoài trang web cho chính xác mục đích này.

  • tương tác kho lưu trữ được đơn giản hóa. Đối với CVS, về cơ bản bạn cần truy cập mọi lúc mọi nơi bạn cần một số thông tin. Đối với git, toàn bộ kho lưu trữ có sẵn tại địa phương cho phép nhiều thứ đi nhanh hơn.

Vì vậy, lợi ích không nhiều trong thói quen hàng ngày, nhưng rất rõ ràng thời điểm bạn có một cái gì đó không hoạt động chính xác!

Do đó, tôi đề nghị rằng đối với trường hợp kinh doanh của bạn, hãy nhìn vào những gì bạn sẽ làm khi thảm họa xảy ra ...


Đó là lập luận tương tự như đối với các bản sao lưu: Bạn chỉ cần chúng khi thảm họa xảy ra. Câu hỏi là những gì bạn sẽ làm khi nó làm, và những gì bạn sẽ chấp nhận xảy ra sau đó.

0

Sự dễ dàng của việc phân nhánh và hợp nhất là lý do cụ thể nhất, nhưng để thuyết phục ai đó bạn sẽ phải cho họ một ví dụ cụ thể về cách cải thiện mọi thứ.

Giả sử bạn có một vài lập trình viên làm việc để cải thiện hiệu suất cho một ứng dụng và họ đang trong giai đoạn thử nghiệm và không biết liệu mã họ đang viết có bao giờ là một phần của nhánh chính / thân không. Tuy nhiên, họ cần thường xuyên chia sẻ mã với nhau và thử những ý tưởng có thể là ngõ cụt. Làm thế nào để bạn quản lý phân nhánh và sáp nhập thường xuyên như vậy trong lật đổ? Câu trả lời ngắn gọn là bạn không. Với một dvcs, điều đó thực sự dễ dàng và các lập trình viên có thể nhanh chóng thử các ý tưởng mới trong các nhánh và chia sẻ với những người khác trước khi quyết định liệu ý tưởng đó có tồn tại không.


-1

Trường hợp kinh doanh cho việc bỏ SubVersion là hỗ trợ phân nhánh là một rào cản đối với việc ổn định và bảo trì sản phẩm. Nếu bạn cần phát hành một sản phẩm và sau đó tiếp tục phát triển, bạn cần một chi nhánh. Với lật đổ, các nhà phát triển sẽ không sử dụng phân nhánh đúng cách và do đó bạn sẽ không tiếp tục phát triển trên tunk và đảm bảo rằng các bản sửa lỗi thực sự cũng làm cho nó trên cả thân cây và nhánh.

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.