Git: Đồng bộ hóa

Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực
Đồng bộ hóa

Thật dễ dàng để đồng bộ hóa kho Git của bạn với các xác nhận mới trong kho SVN gốc. Điều này làm cho giai đoạn chuyển tiếp thoải mái trong quá trình di chuyển nơi bạn có thể tiếp tục sử dụng quy trình làm việc SVN hiện tại của mình, nhưng bắt đầu thử nghiệm với Git.

Có thể đồng bộ hóa theo cả hai hướng. Tuy nhiên, chúng tôi khuyên bạn nên đồng bộ một chiều từ SVN sang Git. Trong thời gian chuyển tiếp, bạn chỉ nên cam kết với kho lưu trữ SVN của bạn chứ không phải repo Git của bạn. Khi bạn tự tin rằng nhóm của bạn đã sẵn sàng thực hiện chuyển đổi, bạn có thể hoàn tất quy trình di chuyển và bắt đầu thực hiện các thay đổi với Git thay vì SVN.

Di chuyển Git: chúng tôi khuyên bạn nên đồng bộ một chiều từ SVN sang Git.

Trong thời gian chờ đợi, bạn nên tiếp tục cam kết với kho lưu trữ SVN của mình và đồng bộ hóa kho Git của bạn bất cứ khi nào cần thiết. Quá trình này tương tự như giai đoạn Chuyển đổi , nhưng vì bạn chỉ xử lý các thay đổi gia tăng, nên sẽ hiệu quả hơn nhiều.

Cập nhật tệp tác giả

Các authors.txttập tin mà chúng tôi sử dụng để ánh xạ tên người dùng SVN để tên đầy đủ và địa chỉ email là điều cần thiết cho quá trình đồng bộ hóa. Nếu nó đã được di chuyển từ ~/GitMigration/authors.txtvị trí mà chúng tôi đã sử dụng cho đến nay, bạn cần cập nhật vị trí của nó với:

git config svn.authorsfile <path-to-authors-file>

Nếu các nhà phát triển mới đã cam kết với kho lưu trữ SVN kể từ lần đồng bộ hóa cuối cùng (hoặc bản sao ban đầu), tệp tác giả cần được cập nhật tương ứng. Bạn có thể làm điều này bằng cách nối thêm thủ công người dùng mới vào authors.txthoặc bạn có thể sử dụng --authors-progtùy chọn này, như được thảo luận trong phần tiếp theo.

Đối với đồng bộ hóa một lần, việc chỉnh sửa trực tiếp tệp tác giả thường dễ dàng hơn; tuy nhiên, --authors-progtùy chọn- được ưu tiên nếu bạn thực hiện đồng bộ hóa không giám sát (nghĩa là trong tác vụ theo lịch trình).

Tự động tạo tác giả Git

Nếu tệp tác giả của bạn không cần cập nhật, bạn có thể bỏ qua phần tiếp theo.

Các git svnlệnh bao gồm một tùy chọn gọi --authors-prog, mà chỉ vào một kịch bản tự động chuyển tên người dùng SVN vào tác giả Git. Bạn sẽ cần định cấu hình tập lệnh này để chấp nhận tên người dùng SVN làm đối số duy nhất của nó và trả về một dòng duy nhất ở dạng Name <email>(giống như phía bên phải của tệp tác giả hiện có). Tùy chọn này có thể rất hữu ích nếu bạn cần định kỳ thêm nhà phát triển mới vào dự án của mình.

Nếu bạn muốn sử dụng --authors-progtùy chọn, hãy tạo một tệp có tên authors.shtùy chọn trong ~/GitMigration. Thêm dòng sau authors.shđể trả lại tên và email Git giả cho bất kỳ tác giả nào không tìm thấy trong authors.txt:

echo "$1 <$1@example.com>"

Một lần nữa, điều này sẽ chỉ tạo ra một tên giả và email dựa trên tên người dùng SVN, vì vậy hãy thoải mái thay đổi nó nếu bạn có thể cung cấp một ánh xạ có ý nghĩa hơn.

Lấy các cam kết SVN mới

Không giống như SVN, Git phân biệt giữa tải xuống các cam kết ngược dòng và tích hợp chúng vào dự án. Cái trước được gọi là "tìm nạp", trong khi cái sau có thể được thực hiện thông qua việc hợp nhất hoặc nổi loạn. Trong ~/GitMigrationthư mục, hãy chạy lệnh sau để tìm nạp bất kỳ xác nhận mới nào từ kho lưu trữ SVN gốc.

git svn fetch

Điều này tương tự như git svn clonelệnh từ giai đoạn trước ở chỗ nó chỉ cập nhật các nhánh từ xa của kho Git - các nhánh cục bộ sẽ không phản ánh bất kỳ cập nhật nào. Mặt khác, các chi nhánh từ xa của bạn phải khớp chính xác với lịch sử của đại diện SVN của bạn.

Nếu bạn đang sử dụng --authors-progtùy chọn, bạn cần đưa nó vào lệnh trên, như vậy:

git svn fetch --authors-prog=authors.sh

Đồng bộ hóa với các cam kết được tìm nạp

Để áp dụng các cam kết đã tải xuống vào kho lưu trữ, hãy chạy lệnh sau:

java -Dfile.encoding=utf-8 -jar ~/svn-migration-scripts.jar sync-rebase

Điều này sẽ khởi động lại các cam kết được tìm nạp vào các nhánh địa phương của bạn để chúng khớp với các đối tác từ xa của chúng. Bây giờ bạn sẽ có thể thấy các cam kết mới trong git logđầu ra của bạn .

Làm sạch repo Git (một lần nữa)

Bạn cũng nên chạy lại git-cleantập lệnh để xóa bất kỳ thẻ hoặc nhánh lỗi thời nào đã bị xóa khỏi kho SVN gốc kể từ lần đồng bộ hóa cuối cùng:

java -Dfile.encoding=utf-8 -jar ~/svn-migration-scripts.jar clean-git
--force

Kho lưu trữ Git cục bộ của bạn bây giờ sẽ được đồng bộ hóa với kho lưu trữ SVN của bạn.

Tóm lược

Trong giai đoạn chuyển đổi này, điều rất quan trọng là các nhà phát triển của bạn chỉ cam kết với kho lưu trữ SVN ban đầu. Lần duy nhất kho lưu trữ Git nên được cập nhật là thông qua quá trình đồng bộ hóa được thảo luận ở trên. Điều này dễ hơn nhiều so với việc quản lý quy trình đồng bộ hóa hai chiều, nhưng nó vẫn cho phép bạn bắt đầu tích hợp Git vào quá trình xây dựng của mình.

» Tiếp: Chia sẻ
« Trước: Chuyển đổi
Các khóa học qua video:
Python SQL Server PHP C# Lập trình C Java HTML5-CSS3-JavaScript
Học trên YouTube <76K/tháng. Đăng ký Hội viên
Viết nhanh hơn - Học tốt hơn
Giải phóng thời gian, khai phóng năng lực
Copied !!!