2010-10-05 21 views
14

Có một dự án mã nguồn mở SVN mà tôi có quyền truy cập chỉ đọc, và tôi muốn tạo một bản sao GIT của dự án đó được cập nhật trên GitHub.Có dịch vụ đồng bộ hóa SVN-> GIT tự động nào không?

Tôi biết cách thiết lập gương ban đầu và sau đó cập nhật git svn rebase, nhưng vẫn yêu cầu có máy chủ được thiết lập ở đâu đó với công việc cron đang chạy để xử lý đồng bộ hóa, thiết lập giám sát để đảm bảo máy chủ đang hoạt động và công việc cron đang chạy, định kỳ nâng cấp lên bản phát hành git mới nhất, v.v.

Trước khi tôi phát minh lại cùng một bánh xe mà mọi gương SVN-> GIT khác phải làm, tôi đã tự hỏi liệu có bất kỳ dịch vụ nào không (miễn phí hoặc trả tiền) sẽ tự động sao chép SVN-> GIT cho tôi. Biết gì không?

Rõ ràng dịch vụ tự động không thể hợp nhất các thay đổi của tôi-- tất cả các thay đổi của tôi đang diễn ra trong một repo riêng biệt (hoặc có thể là chi nhánh riêng trong cùng một kho lưu trữ). Tôi chỉ đang tìm kiếm một cách để tự động hóa tương tác SVN và tạo một tấm gương chính xác mà những người khác có thể sao chép.

+1

Tôi cũng quan tâm đến dịch vụ này vì tôi muốn sử dụng nguồn mở dự án được lưu trữ trong SVN dưới dạng git subtree. Câu trả lời được chấp nhận không trả lời câu hỏi được hỏi. Có thể có một niche ở đây cho một doanh nghiệp nhỏ. Ngoài ra, một người như github có thể muốn cung cấp một dịch vụ như vậy nếu nó không tồn tại. – paperjam

Trả lời

6

Tôi nghĩ rằng trách nhiệm cho điều này sẽ rơi vào tay của những người duy trì dự án. Xem ví dụ cách Apache support their projects with Git mirrors.

Mặt khác, không có nhiều "sáng chế" để làm ở đây, tôi nghĩ vậy. Nếu bạn có một máy chủ có thể thăm dò liên tục đến kho lưu trữ SVN để thay đổi, thực hiện một lệnh git-svn rebase và push to github là khá thẳng về phía trước. Tôi nghi ngờ bất kỳ công ty chuyên thiết lập này (ít nhất, tôi đã không nhìn thấy bất kỳ).

Trên một lưu ý phụ, khi bạn muốn chia sẻ thay đổi, bạn không nên đẩy vào gương Git. Tốt hơn là hãy làm git-svn dcommit trở lại SVN, hoặc gửi một bản vá cho các nhà phát triển. Nếu bạn đẩy SVN lấy repo, nó sẽ làm hỏng git-svn, tôi tin vậy. Như bạn nói, việc đồng bộ hóa hai hướng Git-SVN không thể tự động được.

5

Bạn có thể sử dụng post-commit hooks trong máy chủ svn để thông báo cho git-svn rằng đã đến lúc khởi động lại.

+3

Bạn có thể mở rộng trên đó không? –

2

Bạn chỉ nên sử dụng tailor. Nó có thể liên tục chuyển đổi về bất kỳ VCS nào cho bất kỳ VCS nào khác. Và nó tăng dần, có nghĩa là nếu bạn chuyển đổi repo SVN thành Git, thì commit sẽ được chuyển sang SVN, và bạn chuyển đổi lại, nó sẽ chỉ chuyển đổi các phiên bản mới, thêm chúng như lịch sử cho lịch sử Git hiện có.

Bạn có thể tự động hóa quá trình này theo hai cách: hoặc là bạn chỉ cần chạy thợ may trên cơ sở thời gian, với một cái gì đó giống như cron hoặc anacron, hoặc bạn sử dụng, như đề xuất trước đây, post-commit hooks trong SVN, do đó kích hoạt chuyển đổi ngay lập tức sau khi bất cứ điều gì cam kết tới SVN.

0

svn2github.com dường như chính xác như bạn muốn. Nó phản chiếu mọi repo svn thành github và cập nhật tự động miễn là repo có ít hơn 2000 tệp tin (ở trên mà bạn cần cập nhật thủ công)

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