Cảnh báo: Vì bài đăng này tôi đã tìm thấy Mercurial và yêu thích nó hơn SVN rất nhiều. Vì vậy, bài đăng này hơi lỗi thời với các bình luận Pro SVN và chống DVCS nói chung, nhưng các công cụ chống git vẫn có liên quan
Tôi là một fan hâm mộ của SVN trên Git.
Tại sao? Bởi vì SVN dễ dàng hơn nhiều đối với một nhà phát triển hoặc nhóm nhỏ, và git (cụ thể là msysgit) đã để lại cho tôi một mùi vị tồi tệ trong miệng.
Khi tôi đang thực tập tại một cửa hàng nhỏ, tôi đã được giới thiệu về git trên Windows. Tôi ngay lập tức nhận thấy khối lượng công việc cần thiết để khiến nó hoạt động với Github. Đầu tiên, tôi phải tạo khóa riêng ssh, dán khóa công khai vào Github, sau đó mở cuộc thi và mở khóa riêng của tôi mỗi lần tôi muốn ấn, điều này cực kỳ khó chịu.
Và tôi không bao giờ thực sự thích rằng tôi đã kéo xuống toàn bộ kho lưu trữ. Tôi sẽ thừa nhận rằng tôi chưa bao giờ làm việc với bất cứ thứ gì to lớn, nhưng tôi sẽ sợ tải xuống kho lưu trữ của KDE trong Git nếu toàn bộ repo và bản sửa đổi của nó có trên HD của tôi.
Sau đó là quá trình khó hiểu để thực hiện một cam kết. TMK, trước tiên tôi phải "giai đoạn" tất cả các tệp tôi muốn cam kết (đã bị hút khi bạn có nhiều tệp, tôi mất một lúc để tìm lệnh thủ công để xử lý mọi thứ), sau đó thực hiện cam kết, sau đó đẩy vào chính repo (tại sao đó là một hoạt động riêng biệt?!).
Bạn cũng có dữ liệu cam kết không hữu ích (!). Hãy nhìn xem, đây là cam kết 14f74433245ae17aeeaa của cây 2167a4934d0a4a7db0de và cha mẹ d7042abb4821d3faf600. Điều đó có nghĩa là gì? Tôi sẽ có thể tìm ra mọi thứ khá nhanh chóng và không phải tham khảo một số tài liệu kỳ lạ.
Nói về tài liệu, ít nhất là khi tôi đang sử dụng nó, dường như mọi thứ đều ở định dạng tệp linux man, IE khó hiểu và vô dụng với tôi. Tôi hiếm khi có thể tìm thấy nhiều sự giúp đỡ trong các tài liệu và chỉ đơn giản là dùng đến google.
Và với các cam kết, một điều mà tôi không thích là thiếu số phiên bản. Bây giờ tôi biết rằng điều này là do thiết kế của git, nhưng bất kỳ phần mềm nào cũng cần số phiên bản. Tôi vẫn còn nhớ các cam kết đánh dấu sẽ bật lên nói rằng "Phiên bản đã thay đổi thành 1.8.6" hoặc một cái gì đó tương tự, nhưng bạn vẫn không thể tạo số. Đối với tôi, phiên bản là 1.8.6.5164 (phần cuối là số sửa đổi) cho tôi biết nhiều hơn chỉ đơn giản là 1.8.6 và một lưu ý nói rằng một cái gì đó nhỏ đã thay đổi, hãy thử nó
Lấy phần mềm cụ thể, chương trình cơ bản trên Windows là msysgit, một giao diện khủng khiếp. Nó đã khóa tôi vài lần, có giao diện khủng khiếp và tích hợp CLI-GUI là iffy tốt nhất. Những người nghiện dòng lệnh xung quanh tôi thậm chí còn ghét gui hơn.
Bây giờ hãy nhìn vào SVN. Và vì tôi đang ở trên Windows và có tài khoản google, cụ thể là TortoiseSVN và Google Code.
Đầu tiên, tích hợp shell hoàn chỉnh để làm mọi thứ trên kho lưu trữ (và đối với bạn là người linux, RabbitVCS cũng làm điều tương tự), không cần GUI chính. Nhận một kho lưu trữ dễ dàng như một kiểm tra, không cần SSH (không thể nhớ nếu Github yêu cầu SSH cho các lần kéo) và không có toàn bộ repo + tất cả các cam kết trong quá khứ ngồi trên HD của bạn.
Cam kết cực kỳ dễ dàng, chủ yếu là do không yêu cầu SSH hoặc dàn dựng. Bạn chỉ cần kiểm tra tất cả các tệp bạn muốn bằng tùy chọn chọn tất cả rất hữu ích mà trong phiên bản msysgit của tôi không có sẵn, nhập tin nhắn cam kết và nhấn commit. Google Code sau đó hỏi bạn về thông tin đăng nhập của bạn (mà hầu hết khách hàng lưu trữ) và bạn đã hoàn thành. Đơn giản, dễ dàng và không có SSH
Số phiên bản? Với một số mã dễ dàng, bạn có thể thêm số phiên bản và số cam kết vào tất cả các kiểm tra, điều này làm cho mọi việc trở nên dễ dàng hơn nhiều. Bạn cũng có được các số phiên bản có thể sử dụng thực sự cho thấy một sự thay đổi, ví dụ 1.8.6.5165 mới hơn 1.8.6.5164.
Tài liệu? Chà, thật khó để nói Rùa được ghi lại, nhưng tôi thực sự đã không tham khảo tài liệu chính thức trong một thời gian dài mà tôi không thể phán xét. Đọc một hướng dẫn giới thiệu đơn giản là đủ cho tôi.
Sáp nhập là một cái gì đó khác tôi không thể so sánh. Tôi đã phải làm điều đó một lần trong Git khi có người khác cam kết thay đổi tệp tôi đang làm việc, nhưng không bao giờ ở SVN.
Tôi muốn giới thiệu cái nào? Trong các nhóm lớn, git có lợi thế của nó, chủ yếu trong chu kỳ phát triển phi tuyến tính. Trong một dự án khác, tôi thấy 4 lập trình viên bắt đầu trong các nhánh riêng biệt, sau đó hợp nhất tất cả các mã theo những cách rất lạ mà bằng cách nào đó đã biến thành nhánh chính cuối cùng. Github và msysgit đã có một công cụ trực quan thực sự tốt cho toàn bộ dự án mà tôi thực sự thích.
Đối với các nhà phát triển đơn lẻ hoặc các dự án nhóm nhỏ, SVN sẽ là tốt nhất vì hầu hết các tính năng Gits không được sử dụng và bạn chỉ nhận được các phần tiêu cực. Đơn giản là một điều tốt đẹp