2012-06-15 31 views
7

Tôi đang sử dụng SubGit để đồng bộ hóa repo Git và SVN. Khi nhân bản một repo Git từ xa, tôi muốn bảo toàn tất cả lịch sử của repo đó. Các bước tôi hiện theo dõi chỉ cho phép tôi sao chép lịch sử của chi nhánh chính:Chuyển kho lưu trữ Git sang SVN với SubGit

svnadmin create svn_repos 
subgit-1.0.0-EAP_1381/bin/subgit configure svn_repos 
subgit-1.0.0-EAP_1381/bin/subgit install svn_repos 
git clone svn_repos gitRepo 

cd gitRepo/ 
git remote add -f newRemote git://127.0.0.1/gitRepo 
... 
From git://127.0.0.1/gitRepo 
* [new branch]  FirstProductionTag -> newRemote/FirstProductionTag 
* [new branch]  SecondProductionTag -> newRemote/SecondProductionTag 
* [new branch]  ThirdProductionTag -> newRemote/ThirdProductionTag 
* [new branch]  bugfix  -> newRemote/bugfix 
* [new branch]  bugfix2 -> newRemote/bugfix2 
* [new branch]  master  -> newRemote/master 

git merge -s ours --no-commit newRemote/master 
git read-tree --prefix=foo/bar/ -u newRemote/master 
git commit -m "Merged new Remote into subdirectory /foo/bar" 
git push origin master 

Làm cách nào để hợp nhất các thay đổi từ bugfix và chi nhánh bugfix2 cùng một lúc? Cảm ơn!

+0

Evgeniy, bạn nghĩ sao về việc thay đổi tiêu đề câu hỏi? Tôi nghĩ rằng nó hiện không phản ánh vấn đề thực tế bạn có. Tôi muốn đề xuất "Chuyển đổi kho Git vào SVN với SubGit" hoặc một cái gì đó như thế này. – vadishev

+0

Vâng, bạn nói đúng. Cảm ơn! –

+0

Tuyệt vời! Cảm ơn bạn. – vadishev

Trả lời

5

Nếu mục tiêu của bạn là để có được kho lưu trữ Subversion từ kho Git từ xa và giữ cả kho đồng bộ, cân nhắc làm như sau:

$ svnadmin create svn_repos 
$ git clone --mirror git://127.0.0.1/gitRepo svn_repos/.git 
$ subgit-1.0.0-EAP_1381/bin/subgit install svn_repos 
+0

Cảm ơn bạn! Nó bây giờ hoạt động theo yêu cầu. –

+0

Thực sự cảm ơn bạn – Gromy

0

tôi đăng nhập vào nói công trình câu trả lời của vadishev đó và là giải pháp đơn giản nhất để nhập khẩu một repo git với lịch sử đầy đủ để svn.

Tôi cũng muốn nói thêm rằng, bạn nên yêu cầu chỉ chi nhánh tổng thể để ánh xạ (cố ý bỏ qua các chi nhánh khác trong repo git), bạn nên đầu tiên clone repo git với cờ chi nhánh duy nhất như vậy:

git clone git_url --branch git_branch --single-branch target_folder

Cảm ơn vadishev.

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