git vs Subversion - ưu và nhược điểm [đóng]


11

Tôi đã là người dùng của SVN trong nhiều năm nay và tôi không thể nói rằng tôi hoàn toàn hài lòng về điều đó. Vài ngày trước, đối tác của tôi đã yêu cầu tôi xem git nói rằng "nó có hiệu suất tốt hơn, hợp nhất và phân nhánh dễ dàng hơn".

Tôi đã đọc một số bài viết so sánh git so với SVN và tôi rất vui nếu mọi người có thể tổng hợp những ưu và nhược điểm bằng cả hai hệ thống kiểm soát phiên bản.

Bây giờ tôi đang xem xét những người đã chuyển từ hệ thống này sang hệ thống khác và nghe ý kiến ​​chủ quan.

Bản thân tôi biết rằng tôi thực sự thích cách SVN hoạt động, có một kho lưu trữ trung tâm nơi mọi người có thể kiểm tra, biết rằng tôi có thể triển khai từ đó một bản sao phát triển trực tiếp và một bản sao sản xuất trực tiếp, nhưng đôi khi chúng tôi đau đầu khi sắp xếp xung đột hoặc các lỗi khác và mỗi lần chúng tôi cần tìm hoặc tìm hiểu lịch sử của một tập tin, chúng tôi có độ trễ mạng để xử lý.

Mặt khác, có một nền tảng phân tán nghe có vẻ đau đầu, làm thế nào bạn có thể kiểm soát truy cập? Bạn có một kho lưu trữ trung tâm nơi bạn đẩy và cập nhật không?

Cảm ơn đã làm sáng tỏ thêm về vấn đề này.

Câu trả lời:


15

Bạn đang cố gắng so sánh hai công cụ từ nhận thức của quản trị viên hệ thống hay là một lập trình viên? Nếu bạn đang xem xét điều này từ góc độ lập trình viên, có lẽ bạn nên hỏi điều này trên stackoverflow. Hoặc thậm chí tốt hơn, có lẽ bạn nên xem những gì đã được hỏi về " git svn ".

Điều về git và svn, đó không phải là / hoặc mệnh đề. Bạn có thể chạy một kho lưu trữ SVN và các nhà phát triển của bạn có thể sử dụng git-svn để tương tác với nó nếu họ nghĩ git là một công cụ tốt hơn trong một trường hợp cụ thể.


2

Thật sự không có bất kỳ ưu điểm nào để lật đổ git, thực sự. Trong khi git được phân phối, mọi người đều có thể làm việc với một kho lưu trữ trung tâm bằng cách sử dụng các nhánh theo dõi từ xa. git là nhanh hơn, linh hoạt hơn, và sáp nhập thực sự hoạt động. Ngoài ra, bạn có thể thực sự hoạt động ngoại tuyến trong khi với lật đổ, bạn không thể cam kết thay đổi nếu bạn không có Bạn có thể làm việc dễ dàng hơn với các cam kết riêng lẻ trong git so với việc có một ID cam kết duy nhất thể hiện trạng thái của kho lưu trữ trong svn.

Quyền truy cập được kiểm soát bởi tài khoản người dùng / nhóm trên máy chủ git (bạn phải khởi tạo kho lưu trữ gốc bằng 'git init --bare - shared' để các quyền được đặt một cách thích hợp) hoặc bằng cách sử dụng các khóa ssh. Kiểm soát truy cập rất chi tiết có thể được thiết lập bằng cách sử dụng 'gitosis', một addon của bên thứ ba.

Phải mất một chút thời gian để làm quen với git khi bạn đã quen với svn (chúng tôi mới thực hiện điều này tại văn phòng của tôi), nhưng git mạnh hơn nhiều.

Nếu bạn cần một hướng dẫn tuyệt vời, hãy xem http://progit.org - đó là bản sao trực tuyến đầy đủ của một cuốn sách nguồn mở.


svn có thể xử lý các tệp lớn hơn git
Joshua

Tôi đã không biết rằng git có kích thước tệp tối đa - giới hạn là gì?
Aaron Brown

2
Chủ yếu là vì Git mang theo lịch sử xung quanh với mỗi bản sao hoạt động, một tệp lớn, được chỉnh sửa nhiều sẽ chiếm rất nhiều dung lượng. Nếu tệp lớn về cơ bản không thay đổi, thì tốt thôi
Phil Miller

Tôi sẽ nói rằng Joshua bình luận là sai lệch. Các tệp được kiểm tra có cùng kích thước cho cả SVN và git. Điều gì sẽ xảy ra là vì git giữ một bản sao thông tin repo cục bộ, tổng dung lượng đĩa cần thiết cho tất cả các tệp cộng với lịch sử repo sẽ tăng lên khi bạn chỉnh sửa các tệp, nhưng đối với SVN thì không gian này được cố định (vì lịch sử repo không lưu trữ tại địa phương).
Walter

1

Trong nhóm của tôi, chúng tôi đang ở giữa thay đổi hệ thống phiên bản kiểm soát của chúng tôi từ svn sang git. Git có một đường cong học tập khó hơn một chút, vì vậy tôi bắt đầu làm quen với nó và sau đó dạy các nhà phát triển cách sử dụng nó. Họ cần biết tất cả các lợi thế từ hệ thống phiên bản điều khiển phân tán: nhiều nhánh, không có kho lưu trữ trung tâm, tốc độ, v.v.

Giống như bạn, chúng tôi đã có một hệ thống để triển khai các trang web của chúng tôi để chúng tôi giữ một cái gì đó giống như một máy chủ trung tâm git nơi các thay đổi được kéo và đẩy từ và đến các máy của các nhà phát triển. Các trang web của chúng tôi lấy các thay đổi từ "máy chủ trung tâm" này và phần còn lại của quá trình triển khai tương tự như sử dụng svn.

Chúng tôi đã cố gắng không trộn các kho svn và git, bắt đầu di chuyển các trang web nhỏ của chúng tôi và tạo các kho git mới cho các trang web chính như chúng là một phiên bản mới. Truy cập được quản lý với các phím ssh. Ngoài ra, chúng tôi sử dụng gitweb làm giao diện web (hệ thống svn của chúng tôi dựa trên http)

Nó hoạt động, nó không phải là sự thay đổi từ ngày này sang ngày khác và chúng tôi đang cố gắng các nhà phát triển không coi sự thay đổi này là một sự phiền toái mà là một kỹ năng mới để tìm hiểu một công cụ cuối cùng sẽ cải thiện hệ thống của chúng ta.

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.