2012-01-08 29 views
5

Tôi đã được yêu cầu cho một dự án trường học gửi tác phẩm của tôi bằng cách đẩy nó tới một kho hiện tại SVN. Nó là một kho lưu trữ hiện có với một số tệp đã có. Tôi không cần các tệp này hoặc các cam kết trước đó.Đẩy kho lưu trữ git hiện có vào kho SVN hiện có

Tôi đã thực hiện nhiệm vụ của mình với kho lưu trữ git trên máy tính của tôi. Tôi muốn đẩy công việc của mình đến kho SVN mà không mất bất kỳ lịch sử nào. Tôi có thể làm cái này như thế nào?

+0

Bạn có thể giải thích lịch sử thêm một chút không? Bạn đã sử dụng 'git svn clone' để sao chép từ SVN chưa? – fge

+0

Chưa có. Tôi không chắc đó có phải là cách chính xác để tiếp cận vấn đề này không. Cho đến nay tôi đã không làm gì để sửa chữa nó. Tất cả các hướng dẫn tôi thấy giả sử tôi có một repo SVN trần/mới. –

+0

Đó là một cách và bạn chắc chắn không mất lịch sử. Nhưng cần phải biết nhiều hơn nữa: là git ban đầu của bạn nhập một bản sao của repo SVN tại một số điểm? Bạn nói bạn đã làm việc trên một repo git địa phương, làm thế nào bạn có được các tập tin để làm việc với? – fge

Trả lời

6

tôi sẽ làm một sự pha trộn. Tức là, đầu tiên nhân bản svn với git svn. Sau đó, trong kho lưu trữ mới này, bạn merge công việc của bạn từ kho lưu trữ git hiện tại của bạn.

$ git svn clone http://svn.example.com/project/trunk 
$ cd trunk 
$ git checkout -b mywork 
$ git pull /path/to/current/work/repository/.git master 

Bây giờ bạn có công việc của bạn trong chi nhánh mywork trong clone từ lật đổ. Thời gian để hợp nhất và đẩy.

$ git checkout master 
$ git merge mywork 
$ git svn dcommit 

Tận hưởng!

+1

Điều này làm việc hoàn hảo! –

+1

Tôi đã thử điều này nhưng tất cả lịch sử git của tôi đã được đẩy như một cam kết svn, dẫn đến các bản ghi nhật ký lịch sử – palaniraja

0

Bạn có thể, như một điều kiện tiên quyết đảm bảo rằng tất cả thay đổi của bạn trong git đã được áp dụng hoặc sáp nhập vào chi nhánh master.

Sau đó, bạn có thể chạy git-svn rebase để hợp nhất mọi cập nhật từ svn và cuối cùng là git-svn dcommit để thực hiện thay đổi.

Có một lời giải thích chi tiết ở đây - cf - http://www.viget.com/extend/effectively-using-git-with-subversion/

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