2011-10-14 31 views
5

Tôi có một vấn đề lớn với git-svn: Tôi cần phải chỉ đẩy repo git của tôi đến một máy chủ svn, vì vậy tôi làm như saugit svn dcommit không tìm thấy những thay đổi và đặt lại đầu

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 

này làm việc tuyệt vời và tất cả mọi thứ là cả trên git và svn!

Bây giờ tôi nhận được thông báo rằng nhánh git master của tôi là 31 cam kết phía sau nguồn gốc/chủ, vì vậy tôi đã thực hiện một cú git kéo. Bây giờ tôi đã thay đổi một số thứ trong repo của tôi (cơ bản là một dự án java eclipse của nó) và cam kết nó. Bây giờ tôi cũng muốn đẩy nó trên repo svn và thực hiện một svn git dcommit nhưng thats không làm việc:

Committing to https://..../trunk ... 
No changes 
38b194cb2860b8bb73924cb05f9830dbdb70cf82~1 == 38b194cb2860b8bb73924cb05f9830dbdb70cf82 
No changes between current HEAD and refs/remotes/trunk 
Resetting to the latest refs/remotes/trunk 
Unstaged changes after reset: 
M  Product/Abgabe.tex 
Unable to extract revision information from commit daf483ad1333f3589386b87054f4c27fb7ff23cf~1 

Tôi đã làm gì sai? Các bậc thầy hiện đang reseted để cam kết trước đây, bây giờ tôi cần phải git checkout -- Abgabe.texgit pull để có phiên bản ngay tại đây ...

Edit: Nếu tôi làm một git svn rebase, tôi nhận được cho mỗi cam kết một danh sách dài các xung đột, vì vậy tôi đã thực hiện git rebase --skip đến cùng, và sau đó dcommted, điều này đã làm việc, nhưng nó có vẻ là một hack đẫm máu:/

Trả lời

7

tôi nghĩ rằng những gì bạn đang mất tích trong dòng chảy công việc của bạn là git svn rebase http://flavio.castelli.name/2007/09/04/howto_use_git_with_svn/

+0

mh có nó dường như vì vậy ... ok sau đó tôi xác định được vấn đề: nếu tôi sử dụng git trên máy chủ khác nhau và đẩy nó vào repo và phải hợp nhất các chi nhánh, svn nhánh có một vấn đề với lịch sử phi tuyến tính. bây giờ tôi phải rebase ... nhưng thats đau trong ass! khi tôi muốn đẩy git một lần nữa tôi cần phải kéo lịch sử git đầu tiên của tôi và sau đó rebase nó một lần nữa để phiên bản svn ... – reox

+3

Tôi thường làm một 'git svn rebase' trên master sau đó' git checkout -b feature_branch'. Làm tất cả công việc của tôi trong nhánh tính năng khi tôi đã sẵn sàng cam kết ngược dòng với máy chủ svn, tôi sẽ 'git checkout master' rồi' git svn rebase' rồi 'git merge feature_branch' rồi đến' git svn dcommit'. – Joe

+1

@Joe. Liên kết bây giờ đã bị hỏng, nhưng git svn rebase là thủ thuật. Cảm ơn. – JackMorrissey

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