2009-02-21 55 views
10

Folks Tôi đang phải đối mặt với các cuộc xung đột đang lặp đi lặp lại trong khi kéo từ repo git được chia sẻ trong các tình huống sau:Tránh xung đột khi sử dụng git-svn

  1. Có một kho svn chung

  2. Có một số nhà phát triển theo dõi/đồng bộ hóa repo svn chung với repo git địa phương của mình bằng cách sử dụng git-svn bridge (thông qua git svn rebase/dcommit)

  3. Thỉnh thoảng các nhà phát triển này sử dụng git cần chia sẻ thay đổi của họ mà không ảnh hưởng đến svn kho. Với mục đích này, họ thiết lập một repo git chia sẻ và trao đổi công việc của họ bằng cách sử dụng lệnh pull/push

  4. . Điều này xảy ra bởi vì hoạt động rebase ghi lại lịch sử của nhánh git cục bộ và nó trở thành không thể đẩy vào repo git chia sẻ và kéo nó từ nó thường dẫn đến xung đột.

Bất kỳ ai có cùng sự cố?

Trả lời

8

git-svn(1) nói:

Vì lợi ích của sự đơn giản và interoperating với một hệ thống ít có khả năng (SVN), nó được khuyến khích rằng tất cả người dùng git-svn sao chép, lấy và dcommit trực tiếp từ máy chủ SVN, và tránh tất cả các hoạt động git-clone/pull/merge/push giữa các kho lưu trữ git và các nhánh. Phương pháp được đề nghị để trao đổi mã giữa các nhánh git và người dùng là git-format-patch và git-am hoặc chỉ 'dcommit'ing vào kho SVN.

Nếu tình huống của bạn cho phép, bạn có thể sử dụng nhánh (tức là thư mục con) trong kho SVN để cách ly công việc của bạn với các nhà phát triển khác.

3

Điều tôi phát hiện ra là việc hợp nhất các thay đổi git-svn với các nhánh git khác nhau và giữa chúng khá ổn. Điểm mà các vấn đề git-svn bắt đầu là kết hợp những thay đổi này trở lại svn (hay đúng hơn là, git branch mà từ đó bạn dcommit). Dường như với tôi rằng hầu hết các vấn đề này có thể được ngăn chặn nếu bạn hợp nhất các thay đổi của mình về svn theo cách thủ công (ví dụ: git diff | patch). Điều này sẽ loại bỏ lịch sử từ điều bạn hợp nhất, nhưng người dùng subversion được sử dụng để điều này để nó không phải là một việc lớn.

Các vấn đề liên quan