2009-01-31 32 views
39

Lý do để thực hiện điều này sang một bên, có cách nào hợp lý để chuyển đổi toàn bộ kho git thành subversion?Chuyển đổi kho lưu trữ từ git thành subversion

Tôi có thể tìm thấy chỉ tấn trên thông tin về di cư từ lật đổ - git, và trao đổi changesets giữa hai, nhưng không phải để làm một sự chuyển đổi đơn giản của kho git toàn bộ để svn.

+1

Đã sao chép tại đây: http://stackoverflow.com/questions/661018/pushing-an-existing-git-repository-to-svn/1056817#1056817 – cmcginty

+15

Buồn rằng bạn phải bắt đầu bằng "Lý do làm việc này sang một bên" để ngăn chặn một cuộc chiến tranh lửa hoặc như vậy ... –

Trả lời

14

Vấn đề chung khi thực hiện chuyển đổi theo hướng này là kho Git có thể chứa nhiều hơn lịch sử tuyến tính của các bản sửa đổi, như Subversion mong đợi. Nhiều tổ tiên có lịch sử khác nhau và thường xuyên hợp nhất các cam kết là tất cả có thể, mà không thể dễ dàng được đại diện trong một kho lưu trữ Subversion.

Đối với trường hợp đơn giản, nơi bạn có lịch sử tuyến tính trong kho lưu trữ Git, bạn có thể sử dụng git-svn dcommit để đẩy lô lên tới một kho lưu trữ Subversion khác trống.

+2

Xin lỗi để khuấy động điều này một lần nữa sau một vài năm, nhưng bạn có thể đưa ra một ví dụ cụ thể về cách làm điều này? Nói rằng tôi có một bản sao của một kho git tại ~/my-git-repo, và tôi muốn sao chép lịch sử cam kết vào một số repo SVN, nói svn: //foo.com/empty-svn-repo/ –

+1

@SchighSchagh: Có một cái nhìn tại câu hỏi gần đây, nó có thể phù hợp hơn với những gì bạn cần: [có thể tạo lại kho svn từ (đầy đủ) bản sao git-svn?] (Http://stackoverflow.com/questions/13284762/possible-to -recreate-svn-repository-from-full-git-svn-clone) –

6

Rất dễ thực hiện với SubGit.

$ svnadmin create svn.repo 
$ subgit configure svn.repo 
$ nano svn.repo/conf/subgit.conf to specify a path to your bare repository (you may use "git clone --bare <URL>" if you have none locally) 
$ subgit install svn.repo 

Sau khi chuyển đổi, SVN và kho Git được liên kết sẽ được đồng bộ hóa: mọi lần Git sẽ được dịch sang SVN cam kết và ngược lại. Để ngắt bản dịch, hãy chạy

$ subgit uninstall svn.repo 

Trong khi dịch SubGit sẽ cố gắng lưu giữ ngày cam kết, thẻ, bỏ qua, hợp nhất, EOL, chi nhánh, v.v., nếu có thể. Tôi không thể nói tương tự về kho git-svn.

+0

Điều này không hoạt động. Xem https://stackoverflow.com/a/11084905/785194 để biết giải pháp phân vùng hoạt động. – EML

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