2009-09-29 38 views
5

Tôi đang sửa đổi một dự án mã nguồn mở được lưu trữ trong một repo SVN. Vì những thay đổi của tôi có thể mất một lúc để hoàn thành, tôi đã kiểm tra dự án như một repo Git bằng cách sử dụng cây cầu git-svn. Tôi không có quyền truy cập vào repo Subversion của dự án vì vậy tôi không thể đẩy các thay đổi trở lại nó, nhưng tôi muốn xuất bản repo Git của tôi (trên GitHub) để những người khác có thể theo dõi sự phát triển của các sửa đổi của tôi.Xuất bản một "git svn" repo

Để cập nhật một "git svn" repo, bạn sử dụng git svn rebase, trong đó, như tên cho thấy, rebases bất kỳ thay đổi nào trên đỉnh của những thay đổi mới từ repo Subversion. Tất nhiên, bạn không nên đẩy bất kỳ nhánh nào bạn đã chuyển vào repo Git công cộng, vì vậy liên quan đến repo được sao chép từ kho SVN, tôi có một vài câu hỏi liên quan:

  1. Is it an toàn để xuất bản một chi nhánh được rebased (sử dụng git-svn rebase) cho một repo công cộng?
  2. Tôi hiểu rằng, giả định nhánh chính của bạn trong Git là cái mà bạn đang rebasing những thay đổi từ repo SVN, bạn không nên thực sự phát triển thực sự trong repo đó; tức là, nếu bạn hợp nhất các thay đổi vào master, bạn nên đẩy chúng vào repo SVN (sử dụng git svn dcommit). Nếu bạn tuân thủ chính sách này, bạn có thể xuất bản nhánh chính đã được rebased thành repo công khai không?

Trả lời

1
  1. Nó là an toàn để xuất bản một chi nhánh SVN, nhưng chỉ khi tất cả các cam kết được đẩy lên repo SVN sử dụng git-svn dcommit. Nếu bạn không có thay đổi trong chi nhánh, thì git-svn rebase sẽ chỉ tiến nhanh về phía trước.

    Nếu ai đó chi nhánh từ chi nhánh được xuất bản của bạn, điều quan trọng là họ biết rằng đó là từ một repo SVN. Đó là bởi vì nếu bạn đã bao giờ cố gắng chấp nhận những thay đổi của họ, cách duy nhất để đẩy họ vào repo SVN là cơ bản rebasing những thay đổi của họ. Sau khi bạn xuất bản lại các thay đổi đã cam kết, họ sẽ phải đối phó với các cam kết xung đột, vì băm sẽ không khớp.

  2. Thật an toàn khi làm việc ở master, nhưng có thể không thực tế. Từ phía trên, bạn không thể xuất bản các cam kết của mình cho đến khi bạn chạy git-svn dcommit. Vì vậy, nếu bạn có bất kỳ công việc nào bạn không muốn cam kết, bạn sẽ cần phải chuyển nó sang một nhánh riêng biệt trước khi cố gắng xuất bản các cam kết SVN mới nhất (ví dụ: git-svn rebase; git push)

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