2010-04-01 29 views
21

Tôi biết 1000 chủ đề tương tự đang nổi xung quanh. Tôi đọc ít nhất 5 chủ đề ở đây trong SO Nhưng tại sao tôi vẫn không thuyết phục về DVCS?Bán cho tôi quyền kiểm soát sửa đổi phân phối

Tôi đã chỉ sau câu hỏi (lưu ý rằng tôi ích kỷ lo lắng duy nhất về các dự án Java)

  • lợi thế hoặc giá trị của cam kết tại địa phương là gì? Gì? có thật không? Tất cả IDE hiện đại cho phép bạn theo dõi các thay đổi của bạn? và nếu được yêu cầu bạn có thể khôi phục một thay đổi cụ thể. Ngoài ra, chúng có một tính năng để gắn nhãn thay đổi/phiên bản của bạn ở cấp IDE !?
  • nếu tôi làm hỏng ổ cứng của mình thì sao? nơi kho lưu trữ cục bộ của tôi có hoạt động không? (Vậy làm thế nào nó mát mẻ so với việc kiểm tra tại một repo trung tâm?)
  • Làm việc ngoại tuyến hoặc trên máy bay. Đối với tôi để xây dựng bản phát hành với những thay đổi của mình, tôi cuối cùng phải kết nối với kho lưu trữ trung tâm . Cho đến khi nó không quan trọng như thế nào tôi theo dõi các thay đổi của tôi tại địa phương.
  • Ok Linus Torvalds cung cấp cho cuộc sống của mình Git và ghét mọi thứ khác. Có đủ để một cách mù quáng hát lời khen ngợi không? Linus sống trong một thế giới khác nhau so với các nhà phát triển ngoài khơi trong dự án cỡ trung của tôi?

Quảng cáo tôi!

+14

Dường như bạn đang tìm kiếm một cuộc tranh luận thay vì thành thật tìm cách thuyết phục. Git không dành cho tất cả mọi người, cũng không phải cho mọi dự án. Như bạn đã nói có hàng ngàn chủ đề như thế này, và nếu đọc tất cả những gì bạn không bị thuyết phục, thì đừng dùng nó. – David

+1

@David - Đã thích phản hồi của bạn và, đó là lý do tại sao tôi chưa bỏ phiếu cho chuyển đổi sang DVCS trong tổ chức của tôi. Không, tôi không tìm kiếm một lý lẽ. Tất cả những gì tôi đang tìm kiếm là một câu trả lời rõ ràng và ngắn gọn cho 3 câu hỏi đầu tiên của tôi. –

+0

Joel Spolsky tạo ra một trường hợp khá tốt: www.hginit.com –

Trả lời

13

Độ tin cậy

Nếu đĩa cứng của bạn âm thầm bắt đầu dữ liệu bị hỏng, bạn cũng muốn biết về nó. Git lấy SHA1 băm của mọi thứ bạn cam kết. Bạn có 1 repo trung tâm với SVN và nếu bit của nó được sửa đổi âm thầm bởi một bộ điều khiển HDD bị lỗi, bạn sẽ không biết về nó cho đến khi quá muộn.

Và vì bạn có 1 repo trung tâm, bạn chỉ thổi đường dây duy nhất của mình.

Với git, mọi người có một repo giống hệt nhau, hoàn chỉnh với lịch sử thay đổi và nội dung của nó có thể được tin cậy hoàn toàn do hình ảnh hoàn chỉnh của SHA1. Vì vậy, nếu bạn sao lưu 20 byte SHA1 của HEAD của bạn, bạn có thể chắc chắn rằng khi bạn sao chép từ một số gương không đáng tin cậy, bạn có repo chính xác cùng bạn bị mất!

Nhánh (và ô nhiễm không gian tên)

Khi bạn sử dụng một repo tập trung, tất cả các chi nhánh đang có cho thế giới xem. Bạn không thể làm cho các chi nhánh tư nhân. Bạn phải thực hiện một số chi nhánh mà đã không va chạm với một số tên toàn cục khác.

"test123 -. Chết tiệt, có đã là một test123 Hãy thử test124."

Và mọi người đều phải xem tất cả các chi nhánh có tên ngu ngốc. Bạn phải chống chọi với chính sách của công ty có thể đi dọc theo dòng "không tạo chi nhánh trừ khi bạn thực sự cần", điều này ngăn cản nhiều quyền tự do mà bạn nhận được với git.

Tương tự với cam kết.Khi bạn cam kết, bạn tốt hơn là thực sự là để đảm bảo mã của bạn hoạt động. Nếu không, bạn phá vỡ xây dựng. Không có cam kết trung gian. Bởi vì tất cả họ đều đi đến repo trung tâm.

Với git bạn không có gì trong số này vô nghĩa. Chi nhánh và cam kết tại địa phương tất cả các bạn muốn. Khi bạn đã sẵn sàng để lộ những thay đổi của bạn cho phần còn lại của thế giới, bạn yêu cầu họ kéo từ bạn, hoặc bạn đẩy nó vào một số "chính" git repo.

Performance

Kể từ repo của bạn là địa phương, tất cả các hoạt động VCS là nhanh và không đòi hỏi vòng các chuyến đi và chuyển từ máy chủ trung tâm! git log không phải đi qua mạng để tìm lịch sử thay đổi. SVN làm. Tương tự với tất cả các lệnh khác, vì tất cả các nội dung quan trọng được lưu trữ trong một vị trí!

Xem Linus' talk cho những lợi ích này và các lợi ích khác trên SVN.

+3

Lưu ý rằng trong các phiên bản hiện đại của lệnh SVN LOG, kết quả được lưu trữ, vì vậy lệnh không nhất thiết cần phải đi qua mạng để tìm kiếm lịch sử thay đổi –

+0

Downvoted Phần đáng tin cậy IMO là hoàn toàn sai.Nếu bạn sử dụng một hệ thống tập trung (không chỉ kiểm soát nguồn, nhưng bất kỳ hệ thống tập trung) nên tạo bản sao lưu và kiểm tra nút trung tâm để tham nhũng.Tham nhũng với svn là rất hiếm, BTW! Phần nhánh cũng sai. Bạn có thể có các giá riêng với Subversion. – bahrep

2

Đối số trung tâm của bạn về IDE thực hiện theo dõi cho bạn là sai. Hầu hết các IDE không thực sự có bất kỳ chức năng nào ngoài các mức undo không giới hạn. Hãy suy nghĩ của các chi nhánh, sáp nhập, reverts, cam kết tin nhắn (log) và như vậy và tôi đặt cược rằng ngay cả IDE mà bạn đã tham khảo rơi ngắn. Đặc biệt là tôi nghi ngờ nó theo dõi các cam kết của bạn - khá có thể trên một số ngành khác nhau mà bạn làm việc trên - và đúng cách đẩy chúng vào kho lưu trữ khi bạn nhận được trực tuyến.

Nếu IDE của bạn thực sự làm tất cả điều đó, tôi thực tế sẽ gọi đó là hệ thống kiểm soát phiên bản được phân phối.

Cuối cùng, nếu kho trung tâm bị chết vì bất kỳ lý do gì (nhà cung cấp dịch vụ của bạn bị phá sản, có hỏa hoạn, tin tặc bị hỏng, ...), bạn có bản sao lưu đầy đủ trên mọi máy đã lưu trữ gần đây.

EDIT: Bạn có thể sử dụng DVCS giống như một kho lưu trữ tập trung và thậm chí tôi khuyên bạn nên làm như vậy cho các dự án có quy mô vừa và nhỏ. Có một kho "có thẩm quyền" trung tâm luôn trực tuyến đơn giản hoá rất nhiều thứ. Và khi máy đó gặp sự cố, bạn có thể tạm thời chuyển sang một trong các máy khác cho đến khi máy chủ được khắc phục.

+1

cho nhận xét cuối cùng về lỗ hổng của kho lưu trữ trung tâm: đó là lý do bạn sao lưu nó, điều tốt là chỉ có một thứ để sao lưu. –

+0

Có nhiều lý do khác nhau khiến sao lưu cũng không thành công. Lỗi của con người, hỏa hoạn, phá sản, trừ khi bạn thực sự chú ý đến * thường xuyên * sao lưu kho lưu trữ tới nhiều vị trí vật lý và giữ lại nhiều phiên bản cũ của nó. Tôi nghi ngờ rằng nhiều người sẽ dính vào thủ tục như vậy nhưng chỉ đơn giản bằng cách sử dụng một DVCS được bạn rằng miễn phí. – Tronic

+0

Tôi đã có SVN kho trở nên không thể đọc được chỉ vì một phiên bản mới hơn của BerkDB (mặc định phụ trợ của SVN trở lại sau đó) không còn có thể đọc kho cũ. Sao lưu sẽ không giúp bạn với điều đó nhưng DVCS sẽ có các bản sao có thể sử dụng trên các máy chưa nâng cấp ngay cả khi một lỗi phần mềm như vậy sẽ xảy ra. – Tronic

5

DVCS là rất thú vị đối với tôi vì nó:

  • thêm một bài chiều hướng mới cho quá trình source control: ấn.
    Bạn không chỉ có một , bạn cũng có một công việc xuất bản (mà kho bạn sẽ đẩy lên/kéo từ), và có thể có nhiều ý nghĩa về mặt:

    • vòng đời phát triển (với kho chỉ được thực hiện cho một loại cam kết nhất định, như cam kết nhất định, cho mục đích triển khai)
    • các tác vụ solo (bạn có thể đẩy và cập nhật bản sao lưu, ngay cả trong form of just one file)
    • dự án phụ thuộc (khi một nhóm dự án A đang chờ đội B để cuối cùng cam kết với repo trung tâm, nó có thể yêu cầu B "chuyển" phát triển trung gian dưới dạng tệp zip đính kèm trong thư. Bây giờ, tất cả những gì A phải làm là thêm B repo như một điều khiển từ xa tiềm năng, lấy nó và có một peek)
  • mang lại một phương pháp mới để producing/consuming revisions với:

    • một thụ động cách sản xuất bản sửa đổi mới (chỉ có bản sửa đổi đang tích cực kéo từ repo của bạn sẽ thấy chúng trong chi nhánh của họ)
    • cách hoạt động tiêu thụ cách sửa đổi hoạt động từ người khác (bằng cách thêm repo của họ làm từ xa và tìm nạp/kết hợp những gì bạn cần từ họ).

Điều đó có nghĩa bạn không phụ thuộc vào khác cung cấp công việc của họ đến một repo trung ương nhưng bạn có thể có một mối quan hệ trực tiếp hơn với các diễn viên khác nhau và thỏa thuận mua của họ.

1

Nếu bạn không thấy giá trị của lịch sử cục bộ hoặc bản dựng cục bộ, thì tôi không chắc chắn hơn bất kỳ lượng câu hỏi trả lời nào sẽ thay đổi quyết định của bạn.

Tính năng lịch sử của IDE bị giới hạn và vụng về. Họ không có gì giống như chức năng đầy đủ.

Một ví dụ hay về cách thức công cụ này được sử dụng là trên các dự án Apache khác nhau. Tôi có thể đồng bộ hóa một repo git để repo Apache svn. Sau đó, tôi có thể làm việc cho một tuần trong một chi nhánh tư nhân tất cả của riêng tôi. Tôi có thể làm giảm các thay đổi từ repo. Tôi có thể báo cáo về những thay đổi, bán lẻ hoặc bán buôn của tôi. Và khi tôi làm xong, tôi có thể gói chúng thành một cam kết.

+0

@bmargulies IntelliJ IDEA cung cấp lịch sử địa phương tuyệt vời và khác biệt, có một cái nhìn tại 'http: // www.jetbrains.com/idea/features/local_history.html' nếu bạn không có bất kỳ kinh nghiệm đầu tay. –

+0

@ring bearer Tôi hoàn toàn nhận thức được những gì nó làm và không làm, tôi đã sử dụng nó. Nó không làm một dòng lệnh để chỉ cho tôi sự khác biệt trên toàn bộ cây, chỉ để đặt tên cho một cây. Nó không đồng bộ các nhánh từ xa và cho phép hợp nhất. – bmargulies

+2

Bây giờ chúng ta đang trộn ở đây. Những gì tôi nói là tại sao? tại sao? trên trái đất tôi cần lịch sử địa phương thông qua kiểm soát phiên bản phân phối? Tôi quản lý bằng lịch sử cục bộ trên IDE, sau đó hợp nhất/kiểm tra/mở bằng ứng dụng khách (cvs/svn ..) của tôi (hoặc IDE Plugin) –

1

Câu hỏi thú vị.

Tôi không phải là người dùng DVCS dày dạn nhưng hiển thị có giới hạn của tôi đã cảm thấy rất tích cực.

Tôi thích có thể thực hiện cam kết 2 bước. Nó hợp với tôi.

Một số lợi thế mà mùa xuân đến tâm trí:

  1. Better

    hỗ trợ hợp nhất. Chi nhánh-Merge cảm thấy giống như một công dân hạng nhất trong DVCS, trong khi trong kinh nghiệm của tôi về các giải pháp tập trung, tôi đã tìm thấy nó là đau đớn và thủ đoạn. Theo dõi hợp nhất hiện có sẵn trong svn, nhưng nó vẫn còn chậm và cồng kềnh.

  2. Nhóm lớn. DVCS không chỉ dành cho cam kết người dùng đơn lẻ. Bạn có thể đẩy & kéo các cam kết giữa các nhóm trước khi đóng góp trở lại kho lưu trữ chính (hoặc không).Điều này là vô giá đối với một số hương vị cộng tác nhất định.

  3. khi làm việc trên chức năng thử nghiệm, có ý nghĩa để cam kết thường xuyên, nhưng chỉ trong thời gian ngắn. Tôi không muốn luôn phân nhánh mã chính, vì vậy thật tuyệt khi có thể phát lại bản ghi &. Tương tự, tôi có thể thấy nó hữu ích khi làm việc với Tích hợp liên tục. Nếu tôi làm việc trong nhiều ngày vì nỗ lực tái cấu trúc, tôi có thể phá vỡ các bản dựng cho một khung thời gian không được chấp nhận, nhưng tôi vẫn muốn theo dõi những thay đổi của mình.

Lưu ý rằng trải nghiệm DVCS của tôi nhiều hơn với Mercurial so với Git. Đến từ một nền CVS/SVN, tôi đã tìm thấy đường cong học tập dễ dàng hơn nhiều với Mercurial (Hg). Hỗ trợ Google Code được thêm gần đây cho Mercurial cũng là một lợi ích. ... Tôi thậm chí sẽ đi xa như để nói, rằng phản ứng ban đầu của tôi để Git là tiêu cực, nhưng nhiều hơn từ một góc độ khả năng sử dụng hơn bất cứ điều gì để làm với DVCS

1

Nó có thể là thú vị để lưu ý rằng Subversion có thể nhận được những thứ như offline commits trong tương lai. Tất nhiên chúng ta không thể so sánh những tính năng đó với những gì có sẵn ngày hôm nay, nhưng nó có thể là một cách rất tốt để "sử dụng DVCS một cách tập trung" như được mô tả trong các câu trả lời khác ở đây.

Một recent post bang rằng Subversion không cố gắng để trở thành một DVCS

Những điều này có thể sẽ có nghĩa là kho vẫn còn tập trung, có nghĩa là bạn không thể làm phân nhánh bị ngắt kết nối, diffing của phiên bản cũ, nhưng bạn có thể xếp hàng lên cam kết.

14

Tôi đã ở vị trí hiện tại của bạn, hoài nghi về việc sử dụng kiểm soát phiên bản được phân phối. Tôi đã đọc tất cả các bài báo và biết các lập luận lý thuyết, nhưng tôi không bị thuyết phục.

Cho đến một ngày, tôi đã nhập git init và đột nhiên thấy mình trong kho lưu trữ git.

Tôi đề nghị bạn làm như vậy - chỉ cần dùng thử. Bắt đầu với một dự án sở thích nhỏ, chỉ để có được hang của nó. Sau đó, quyết định xem nó có đáng để sử dụng cho thứ gì đó lớn hơn không.

-1

Rất có thể, sẽ không ai bán cho bạn bất kỳ thứ gì ở đây. Nếu bạn cần các tính năng của git, chỉ cần git init. Nếu nó không phù hợp với bạn, chỉ cần không.

Nếu bạn chưa biết tính năng git, hãy nhập git vs (lưu ý không gian kết thúc) trong tìm kiếm của Google và xem kết quả từ tự động điền.

Tôi ưa thích Notepad hơn IDE cho đến khi tôi cần các tính năng của Netbeans. Có vẻ như đây là trường hợp tương tự ở đây.

Như bạn biết, có nhiều dự án thành công mà không cần VCS.

PS. Bán git vi phạm giấy phép của nó! ;)

+0

"Bán git vi phạm giấy phép của nó!", Điều đó không đúng! đó là GPLv2 bạn CÓ THỂ bán nó AFAIK. –

+0

* "có nhiều dự án thành công mà không có VCS ở tất cả" * - và có bao nhiêu dự án thất bại ** vì ** họ không sử dụng VCS (đúng)? Xem ví dụ về dịch vụ CIA.vc đã chết, máy chủ 'sản xuất' không thành công ... và codebase phức tạp và được chỉnh sửa trực tiếp trong sản xuất (mặc dù nó có kho lưu trữ Subversion trên Google Code). –

+0

@ JakubNarębski Điểm tốt :) Câu trả lời của tôi là một chút hoài nghi, rõ ràng là kiểm soát phiên bản là phải. Thực tế kỳ lạ là nhiều nhà phát triển vẫn không sử dụng nó ngay cả khi nó miễn phí và dễ dàng như 'git init' :) – takeshin

8

Tôi là nhà phát triển Mercurial và đã làm việc như một nhà tư vấn Mercurial. Vì vậy, tôi thấy các câu hỏi của bạn rất thú vị và hy vọng tôi trả lời chúng:

  • Lợi thế hoặc giá trị cam kết tại địa phương là gì? [...]

Bạn đúng rằng IDE có thể theo dõi các thay đổi cục bộ ngoài quá trình hoàn tác/hoàn tác đơn giản trong những ngày này. Tuy nhiên, vẫn còn một khoảng cách về chức năng giữa các ảnh chụp nhanh tệp này và hệ thống kiểm soát phiên bản đầy đủ.

Cam kết địa phương cung cấp cho bạn tùy chọn chuẩn bị "câu chuyện" của bạn cục bộ trước khi bạn gửi nó để xem xét. Tôi thường làm việc trên một số thay đổi liên quan đến 2-5 cam kết. Sau khi tôi thực hiện cam kết 4, tôi có thể quay trở lại và sửa đổi cam kết 2 một chút (có thể tôi đã thấy một lỗi trong cam kết 2 sau khi tôi thực hiện cam kết 4). Bằng cách đó tôi sẽ làm việc không chỉ trên mã mới nhất, mà còn trên một vài lần commit cuối cùng.Đó là tầm thường có thể khi tất cả mọi thứ là địa phương, nhưng nó trở nên khó khăn hơn nếu bạn cần phải đồng bộ với một máy chủ trung tâm.

  • nếu tôi làm hỏng ổ cứng thì sao? [...] Vì vậy, nó mát như thế nào so với kiểm tra tại một repo trung tâm?

Không hề lạnh! :-)

Tuy nhiên, ngay cả với repo trung tâm, bạn vẫn phải lo lắng về dữ liệu không được yêu cầu trong bản sao làm việc. Do đó tôi sẽ yêu cầu bạn phải có một giải pháp sao lưu tại chỗ.

Đó là kinh nghiệm của tôi, rằng mọi người thường có các khối dữ liệu không phổ biến lớn hơn nằm xung quanh trong bản sao làm việc của họ với một hệ thống tập trung. Khách hàng đã nói với tôi cách họ cố gắng thuyết phục các nhà phát triển cam kết ít nhất mỗi tuần một lần.

Những thay đổi này thường rời uncommited vì:

  1. Họ không thực sự kết thúc. Có thể có báo cáo in debug trong các mã, có thể có các chức năng đầy đủ, vv

  2. Cam kết sẽ đi vào trunk và đó là nguy hiểm với một hệ thống tập trung kể từ khi tác động đó tất cả mọi người khác.

  3. Cam kết sẽ yêu cầu bạn trước tiên hợp nhất với kho lưu trữ trung tâm. Việc hợp nhất đó có thể đáng sợ nếu bạn biết rằng đã có các thay đổi xung đột khác được thực hiện đối với mã. Việc hợp nhất có thể chỉ đơn giản là gây phiền nhiễu bởi vì bạn có thể không phải tất cả được thực hiện với những thay đổi và bạn thích làm việc từ một trạng thái đã biết tốt.

  4. Cam kết có thể chậm khi bạn phải nói chuyện với máy chủ trung tâm quá tải. Nếu bạn đang ở một vị trí ngoài khơi, cam kết thậm chí còn chậm hơn.

Bạn đang tuyệt đối đúng nếu bạn nghĩ rằng ở trên là không thực sự là một vấn đề tập trung so với điều khiển phiên bản distribted. Với CVCS, mọi người có thể làm việc trong các nhánh riêng biệt và do đó trivially tránh 2 và 3 ở trên. Với một nhánh riêng biệt, tôi cũng có thể cam kết nhiều như tôi muốn vì tôi có thể tạo ra một nhánh khác, nơi tôi cam kết thay đổi nhiều hơn (giải quyết 1). Tuy nhiên, các cam kết vẫn có thể chậm, do đó, 4 vẫn có thể áp dụng.

Những người sử dụng DVCS sẽ thường xuyên chuyển các cam kết "cục bộ" của họ sang máy chủ từ xa bằng giải pháp dự phòng của người nghèo. Họ không đẩy tới máy chủ chính nơi mà các thành viên còn lại của đội đang làm việc, nhưng với một máy chủ khác (có thể là riêng tư). Bằng cách đó họ có thể làm việc trong sự cô lập và vẫn giữ sao lưu off-site.

  • Làm việc ngoại tuyến hoặc trên máy bay. [...]

Vâng, tôi cũng chưa bao giờ thích đối số đó.Tôi có kết nối Internet tốt 99% thời gian và không bay đủ cho điều này là một vấn đề :-)

Tuy nhiên, đối số thực sự không phải là bạn đang ngoại tuyến, nhưng bạn có thể giả vờ để trở thành ngoại tuyến. Chính xác hơn, bạn có thể làm việc trong sự cô lập mà không phải gửi các thay đổi của bạn tới kho lưu trữ trung tâm ngay lập tức.

Công cụ DVCS được thiết kế xoay quanh ý tưởng rằng mọi người có thể đang làm việc ngoại tuyến. Điều này có một số hậu quả quan trọng:

  • Chi nhánh sáp nhập trở thành một điều tự nhiên. Khi mọi người có thể làm việc song song, dĩa sẽ tự nhiên xuất hiện trong biểu đồ cam kết. Do đó, các công cụ này phải là thực sự tốt tại các chi nhánh hợp nhất. Một công cụ như SVN is not very good at merging!

    Git, Mercurial và các công cụ DVCS khác hợp nhất tốt hơn vì chúng đã có nhiều thử nghiệm hơn trong khu vực này, không trực tiếp vì chúng được phân phối.

  • Linh hoạt hơn. Với DVCS, bạn có quyền tự do đẩy/kéo các thay đổi giữa các kho lưu trữ tùy ý. Tôi sẽ thường xuyên đẩy/kéo giữa các máy tính ở nhà và máy tính của tôi, mà không cần sử dụng bất kỳ máy chủ trung tâm thực sự nào. Khi mọi thứ đã sẵn sàng để xuất bản, tôi đẩy họ đến một nơi như Bitbucket.

    Đồng bộ hóa nhiều trang không còn là "tính năng dành cho doanh nghiệp", đây là tính năng tích hợp sẵn. Vì vậy, nếu bạn có một vị trí ngoài khơi, họ có thể thiết lập một kho lưu trữ trung tâm địa phương và sử dụng nó với nhau. Sau đó, bạn có thể đồng bộ hóa giờ trung tâm địa phương, hàng ngày hoặc khi nó phù hợp với bạn. Điều này đòi hỏi không có gì hơn một cronjob chạy hg pull hoặc git fetch đều đặn.

  • Khả năng mở rộng tốt hơn do có nhiều logic hơn ở phía máy khách. Điều này có nghĩa là bảo trì ít hơn trên máy chủ trung tâm và các công cụ mạnh mẽ hơn phía máy khách.

    Với DVCS, tôi hy vọng có thể thực hiện tìm kiếm từ khóa thông qua các sửa đổi của mã (không chỉ thư cam kết). Với một công cụ tập trung, bạn thường cần phải thiết lập một công cụ lập chỉ mục bổ sung.

+0

+1 cho nhiều trang web được tích hợp sẵn . Điều này thực sự có thể là một thay đổi trò chơi. Tôi làm việc cho một công ty có văn phòng cách nhau 500 km và hiện tại chúng tôi có máy chủ SVN trong mỗi máy chủ. Một số tập lệnh của bên thứ ba quan tâm đến việc giữ cho chúng được đồng bộ hóa. Trong khi họ chủ yếu là làm việc, đôi khi chúng tôi có vấn đề, và sắp xếp lại 2 máy chủ là không bao giờ tầm thường. Tôi thực sự muốn hỗ trợ nhiều trang web này là chính thức và đáng tin cậy. –

1

Tôi sẽ không bán bất kỳ thứ gì ở đây.

• Lợi thế hoặc giá trị cam kết cục bộ là gì? Gì? có thật không? Tất cả các IDE hiện đại cho phép bạn theo dõi các thay đổi của mình? và nếu yêu cầu bạn có thể khôi phục một thay đổi cụ thể. Ngoài ra, họ có tính năng để gắn nhãn các thay đổi/phiên bản của bạn ở cấp IDE !?

Lợi thế thực sự duy nhất là bạn không cần kết nối với kho lưu trữ trung tâm chính. Ai đó có thể nói rằng lợi ích của Git là một thực tế rằng một nhà phát triển có thể cam kết tại địa phương, chuẩn bị một kết hợp tuyệt vời của các bản vá lỗi và sau đó kéo chúng vào repo trung tâm may mắn, nhưng IMO này là khá uninteresting. Một nhà phát triển có thể sử dụng một kho riêng hoặc một chi nhánh trong kho lưu trữ Subversion để làm việc trên nhiệm vụ của mình và sau đó hợp nhất nó với một đường chính (ví dụ/trunk) hoặc một nhánh khác.

Đối với tôi, nhược điểm chính ở đây là tôi phải tải xuống và lưu trữ toàn bộ kho lưu trữ Git trên máy của mình. Với một dự án lớn với lịch sử looong nó trở thành một nỗi đau và mất quá nhiều không gian.

Một nhược điểm khác của việc tập trung là Git technically can't track renames or copy operations. Chỉ là tries to guess whether a file was renamed or copied based on the file's content. Điều này dẫn đến các trường hợp ngộ nghĩnh như vậy: svn to git migration keeping history of copied file (Guy hỏi tại sao lịch sử của một tệp bị mất sau khi SVN> di chuyển Git,).

• Nếu tôi làm hỏng ổ đĩa cứng thì sao? kho lưu trữ cục bộ của tôi đã đi đâu? (Vì vậy thế nào là nó mát mẻ so với kiểm tra vào một repo trung ương?)

Với Git, nếu bạn bị rơi thiết bị lưu trữ địa phương của bạn (HDD, SSD, bất cứ điều gì) và nó đã thay đổi mà không được kéo hoặc đẩy để một repo may mắn của Git, sau đó bạn đang ra khỏi may mắn. Bạn vừa mất thời gian và mã của mình. Ngoài ra, sự cố của ổ cứng với repo Git cục bộ của bạn có thể tạm dừng quá trình phát triển trong một thời gian: Linus Torvald's SSD breaks, halts Linux kernel development.

Với điều khiển nguồn tập trung như SVN, bạn chỉ có thể mất cam kết cuối cùng của mình vì tất cả công việc của bạn đã được cam kết với kho lưu trữ trung tâm đến chi nhánh, giá riêng hoặc thậm chí là thân cây. Rõ ràng, bạn nên đảm bảo rằng có một thảm họa phục hồi và sao lưu thực hiện cho repo trung tâm của bạn.

• Ok Linus Torvalds cho cuộc sống của mình để Git và ghét mọi thứ khác. Có đủ để mù quáng hát những lời khen ngợi không? Linus sống trong một thế giới khác nhau so với các nhà phát triển ra nước ngoài trong dự án cỡ trung của tôi?

Đối với dự án như hạt nhân Linux sử dụng BitKeeper trong quá khứ, Git là hệ thống kiểm soát nguồn tốt nhất! Nhưng tôi muốn nói rằng Git không phù hợp với mọi người.

Chọn một cách khôn ngoan!

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