Thanh toán chi nhánh từ xa bằng git svn


188

Tôi đã kiểm tra kho lưu trữ svn bằng git svn. Bây giờ tôi cần kiểm tra một trong những chi nhánh và theo dõi nó. Đó là cách tốt nhất để làm điều đó?

Câu trả lời:


355

Bố cục lật đổ tiêu chuẩn

Tạo một bản sao git bao gồm thân Subversion, thẻ và các nhánh với

git svn clone http://svn.example.com/project -T thân cây -b thẻ -t thẻ

Các --stdlayouttùy chọn là một shortcut đẹp nếu kho Subversion của bạn sử dụng cấu trúc tiêu biểu:

git svn clone http://svn.example.com/project --stdlayout

Làm cho kho git của bạn bỏ qua mọi thứ mà repo lật đổ làm:

git svn hiển thị-bỏ qua >> .git / thông tin / loại trừ

Bây giờ bạn có thể thấy tất cả các nhánh Subversion ở phía git:

chi nhánh git -r

Nói tên của nhánh trong Subversion là waldo. Về phía git, bạn sẽ chạy

kiểm tra git -b waldo-svn điều khiển từ xa / waldo

Hậu tố -svn là để tránh các cảnh báo về hình thức

cảnh báo: tên gọi 'waldo' là mơ hồ.

Để cập nhật nhánh git waldo-svn, hãy chạy

kiểm tra git waldo-svn
git svn rebase

Bắt đầu từ một kiểm tra chỉ thân cây

Để thêm một nhánh Subversion vào một bản sao chỉ thân cây, hãy sửa đổi kho git của bạn .git/configđể chứa

[svn-remote "svn-mybranch"]
        url = http://svn.example.com/project/branches/mybranch
        tìm nạp =: refs / điều khiển từ xa / mybranch

Bạn sẽ cần phát triển thói quen chạy bộ

git svn tìm nạp - tìm nạp tất cả

để cập nhật tất cả những gì git svnnghĩ là từ xa riêng biệt. Tại thời điểm này, bạn có thể tạo và theo dõi các nhánh như trên. Ví dụ: để tạo một nhánh git tương ứng với mybranch, hãy chạy

kiểm tra git -b mybranch-svn điều khiển từ xa / mybranch

Đối với các nhánh mà bạn dự định git svn dcommit, hãy giữ lịch sử của họ tuyến tính!


Thêm thông tin

Bạn cũng có thể quan tâm đến việc đọc một câu trả lời cho một câu hỏi liên quan .


Điều này không hiệu quả với tôi, vì tôi đã kiểm tra thân cây bằng cách sử dụng git svn clone .. Tôi đã không đặt chi nhánh để kiểm tra ... Tôi nghĩ rằng trước tiên tôi cần phải làm điều đó.
markovuksanovic

Thực tế là tôi đã sử dụng git svn clone svn.example.com/project/trunk Và bây giờ tôi không biết làm thế nào để đặt các chi nhánh khác được theo dõi mà không mất repo hiện tại của tôi ...
markovuksanovic

20
Tôi sẽ đề nghị cung cấp một tiền tố cho điều khiển từ xa svn của bạn. (thêm --prefix=svn/khi thực hiện git-svn inithoặc git-svn clone) Điều này sẽ loại bỏ sự cần thiết phải thêm hậu tố vào các nhánh cục bộ của bạn.
jasonkarns

Nếu bạn có một vài chi nhánh đừng quên làm "git checkout master" trước khi chăm sóc một chi nhánh khác
Eildosa

Nếu show-ignorexảy ra lỗi, hãy thửgit svn show-ignore -i trunk
Antti Haapala
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.