Tôi có thể tìm thấy SVN của SVN cho người dùng Git ở đâu? [đóng cửa]


18

Vì vậy, tôi đã nhận một công việc mà công ty sử dụng SVN (nhưng sẽ chuyển sang Git đôi khi trong tương lai). Vấn đề là tôi không biết SVN. Tôi đã thử rất nhiều truy vấn của Google và tất cả những gì tôi có thể tìm thấy là SVN-> Hướng dẫn về Git, "Tại sao Git tốt hơn SVN" và một "bảng cheat" cụ thể đưa ra (một số) các lệnh có thể so sánh ...

Đọc ngắn cuốn sách O'Reilly trên SVN, các hướng dẫn ngắn gọn (nhưng không quá ngắn gọn) cho SVN cho người dùng Git là gì?


3
Tóm lại: a) không có chỉ mục, b) svn up = git pull, c) svn commit = git commit && git đẩy d) các nhánh được mô phỏng bởi các thư mục ... ;-)
johannes

1
Tôi không chắc làm thế nào tôi có thể làm điều này nhiều hơn về chủ đề ...
đại lý 154

5
Không đời nào. Bên cạnh bất cứ điều gì là ngoại lệ trên P.SE.
JensG

@ agent154 đừng yêu cầu chúng tôi trở thành công cụ tìm kiếm đám đông cho bạn. Xác định vấn đề bạn đang gặp phải - vấn đề không phải là "tôi có thể tìm thấy những thứ trên svn" ở đâu "Tôi đang cố gắng làm điều gì đó và tôi không thể tìm ra cách để làm điều đó". Nếu một cái gì đó cụ thể cho lệnh 'svn' và bạn đang làm việc trên đường để viết nó, hãy hỏi về Stack Overflow. Nếu đó là một cái gì đó về quy trình làm việc và tổ chức của svn (khi nào phân nhánh, khi nào hợp nhất, làm thế nào để làm việc với các nhà phát triển khác) - thì hãy hỏi nó ở đây.

2
Tôi nghĩ rằng vấn đề được xác định là thiếu tài nguyên thậm chí có sẵn từ xa để hiểu SVN là người dùng Git. Thành thật mà nói, tôi thấy một cuộc thảo luận về siêu hữu ích này sau khi đã rót qua một vài trang kết quả Google / DuckDuckGo không tìm thấy gì khác ngoài những gì OP đề cập.
Nhà siêu âm

Câu trả lời:


8

Tham chiếu chính tắc là Sách đỏ Subversion . Bất kể kỹ năng trước đây của bạn là gì, hãy đọc nó từ mới và bạn sẽ nhận được tất cả thông tin sử dụng bạn cần. Nó không khó hoặc hoàn toàn xa lạ, hầu hết mọi người nói SVN dễ hiểu hơn rất nhiều so với git vì vậy bạn sẽ ổn chỉ với một chút đọc các lệnh chính. Chương sử dụng cơ bản sẽ giúp bạn khởi động và chạy mà không gặp vấn đề gì.

Có 2 điểm khác biệt chính:

  • cam kết = đẩy đến repo trung tâm. Không có rebase hoặc cam kết cục bộ, cũng không có kéo.
  • phân nhánh là theo thư mục. Tốt nhất để nghĩ về toàn bộ repo như một cấu trúc thư mục, phân nhánh giống như tạo một liên kết tượng trưng với ngữ nghĩa sao chép trên ghi. Trong khi git bạn phân nhánh toàn bộ repo và chuyển đổi giữa chúng để chi nhánh mới 'phủ lên' bản sao làm việc của bạn, với SVN, bạn có thể trao đổi các phần của repo của mình. Nói chung, mọi người phân nhánh trên một thư mục cấp cao nhất (thường được gọi là các chi nhánh), do đó việc chuyển đổi trở nên giống với phong cách làm việc 'lớp phủ' của git.

Sự phân nhánh là không đáng kể, việc hợp nhất không tệ như những người xin lỗi DVCS muốn thực hiện, đặc biệt nếu bạn dính vào bộ ba "tiêu chuẩn" của các thư mục cấp cao nhất (được gọi là thân cây, nhánh và thẻ).

Có một vài bit mà SVN đánh bại git, các thư mục thưa thớt xuất hiện trong tâm trí - nơi bạn chỉ thanh toán một phần trong repo của mình. Khi bạn cần nhiều phần hơn, bạn chỉ cập nhật những gì bạn cần. Nếu bạn có một repo khổng lồ (ví dụ một sản phẩm cốt lõi và vô số plugin) thì điều này thật tuyệt vời.

Có một vài bit không tốt bằng git, xung đột cây đáng sợ xuất hiện - nơi bạn có xung đột ở cấp thư mục (tức là ai đó đã xóa một tệp bạn đã chỉnh sửa)

Nếu bạn đang ở trên Windows, hãy sử dụng TortoiseSVN. Nó đá chủ yếu.


Phụ thuộc. Việc hợp nhất với SVN trở nên tồi tệ, khi các tệp đã được di chuyển (về cơ bản là một hình thức xóa + bổ sung được quản lý bởi chính SVN) bởi một người nào đó VÀ được thay đổi bởi người khác. Ngoài ra, câu trả lời tốt đẹp.
JensG

1
Tôi đã đề cập đến vấn đề xung đột cây ... Trạng thái như vậy là một vấn đề đối với các scms khác, mặc dù tôi hiểu git sử dụng một heuristic để phát hiện nếu tệp di chuyển là giống nhau, nó vẫn có thể sai nếu các thay đổi là đáng kể ( ví dụ: tập tin được chia thành 2).
gbjbaanb

Git không cần heuristic để phát hiện các thay đổi của cây - nó cần người dùng di chuyển tệp với git mv. SVN có svn move, nhưng vì việc phân nhánh và sáp nhập vào SVN là một loại hack, tôi không tin rằng nó có thể tự động giải quyết xung đột cây như git ...
Idan Arye

3
@IdanArye git mvđược triển khai dưới dạng add + remove. git sử dụng phương pháp phỏng đoán để xác định xem việc di chuyển hoặc sao chép diễn ra trong một lần xác nhận (tôi nghĩ mặc định là "80% + của tệp giống nhau không?")
Izkata

3

Sử dụng git svn nếu có thể. Tôi đã ở trong hoàn cảnh của bạn và sau nửa năm thất vọng tôi đã chuyển sang git svn và đã rất vui từ đó.

Git svn cho phép bạn sử dụng kho lưu trữ cục bộ và cam kết với máy chủ SVN sau đó được xử lý bằng cách git svn rebasekhởi động lại các thay đổi cục bộ của bạn trên trung kế lật đổ và sau git svn dcommitđó cam kết các cam kết bị từ chối.

Có thể nó không tối ưu cho việc sử dụng Subversion nâng cao, nhưng vì bạn đang sử dụng git cục bộ nên mọi thứ đều ổn.

Khi sử dụng git clone, bạn không nên sao chép thư mục gốc subversion mà là thư mục đích của bạn trực tiếp (clone trunk). Điều này sẽ làm cho git chạy nhanh hơn rất nhiều, nếu không bản sao làm việc của bạn có thể trở nên khổng lồ.

Tuyên bố miễn trừ trách nhiệm : Tôi không biết tình hình như thế nào khi bạn muốn tạo các nhánh Subversion, v.v ... Các đội tôi làm việc không sử dụng các nhánh (chỉ cho tôi các nhánh git địa phương).

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.