2010-08-09 38 views
13

nhân bản kho lưu trữ svn thành git thật dễ dàng với git-svn. Tuy nhiên, tôi cần phải làm theo cách khác. Tôi có một kho lưu trữ git nằm xung quanh và muốn nhập nó vào một sản phẩm nào (trừ các thư mục con, nhánh và thẻ) giữ tất cả thông tin cam kết.Xuất kho git sang svn

Tôi kết hợp một git-svn-clone của repo svn, đã kéo git master và dcommitted. Tuy nhiên cam kết duy nhất tôi có trong svn sau đó là một trong những nói rằng "sáp nhập từ git"

Tôi cũng đã thử cách khác: Nhân bản git repositoy và gọi git svn init nhưng git giữ nói "Không thể xác định thượng nguồn SVN thông tin từ Lịch sử chính. "

Có cách nào đó có thể tạo kho lưu trữ svn từ git không?

Chúc mừng, Michael

Trả lời

6

khi kéo chi nhánh tổng thể từ git repo khác tạo ra một hợp nhất cam kết, vì không có lịch sử chung.

bạn nên sử dụng git pull --rebase (mà sẽ thay đổi cam kết id, vì nó tái tạo lại các cam kết) thay vào đó, sau đó dcommit


bạn cũng có thể thử như sau:

checkin phiên bản ban đầu với svn (chỉ cần tạo các nhánh, thẻ, thư mục gốc và cam kết) trước, sau đó tạo một bản sao git svn (git svn -s clone svn://…)

rồi phát hành các lệnh sau:

# create a ref to your "svn" commit 
git checkout -b svn 
# get all your "git" commits 
git fetch $your_remote_git_repo 
# create a ref to your "git" commit 
git branch master FETCH_HEAD 
# rebase the rest your git commits 
git rebase svn master 
# commit to svn! 
git svn dcommit 

chỉnh sửa cherry chọn là chỉ cần thiết vì nhanh chóng thiết lập kho git của tôi chỉ có cam kết trống rỗng

+0

Tôi đã thử nó với git pull --rebase nhưng nó phá hủy các thông tin ngược dòng svn: # git svn bản sao -s # dự án cd # git pull git --rebase: Dự án # git svn dcommit Không thể xác định thông tin SVN ngược dòng từ lịch sử HEAD. Có lẽ kho lưu trữ trống. tại/usr/lib/git-core/git-svn dòng 517. –

+0

cố gắng tạo một dummy cam kết với svn đầu tiên – knittl

+0

Tôi không chắc chắn rằng tôi hiểu những gì bạn có nghĩa là: Sau khi git svn clone tôi tạo ra một cam kết thử nghiệm trong svn . Sau khi git pull --rebase tôi vẫn có thể git svn fetch, nhưng không phải dcommit. Tôi nghĩ về việc chỉ cần nhập vào svn bỏ qua lịch sử. –

12

Dưới đây là công thức của tôi cho xuất bản một repo git qua svn:

svn mkdir --parents http://host/path/to/repo/{trunk,tags,branches} \ 
    -m "Standard layout for $project" 
git svn init -s http://host/path/to/repo/ 
git svn fetch 
git rebase trunk master 
git svn dcommit 

Subversion won không giữ lại thời gian cam kết hoặc quyền tác giả. Chúa giúp bạn nếu bạn sử dụng các chi nhánh.

+0

Sau khi thực hiện 'rebase', git báo cáo rằng hai repos giờ đây đã bị phân tán nặng. Tôi nên làm gì để khắc phục điều đó? –

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