2010-08-09 26 views
13

klonowanie repozytorium svn do git jest łatwe z git-svn. Jednak muszę zrobić to na odwrót. Mam repozytorium git leżące wokół i chcę zaimportować je do pustego (z wyjątkiem folderów trunk, branches i tagów) zachowując wszystkie informacje o zatwierdzeniu.Eksportuj repozytorium git do svn

Sprawdzam git-svn-clone repozytorium svn, wyciągnąłem mistrza git i dcommitted. Jednak jedynym zatwierdzeniem, które mam w svn, jest to, że "scalono z git"

Próbowałem też w inny sposób: sklonowałem repozytorium git i wywołałem git svn init, ale git ciągle mówi "Nie można ustalić informacji SVN w górę od Historia HEAD. "

Czy można w jakiś sposób utworzyć repozytorium svn z git?

Cheers, Michael

Odpowiedz

6

gdy ciągnąc gałąź master z drugiej repo git tworzy scalającej, ponieważ nie istnieje wspólna historia.

należy użyć git pull --rebase (który zmieni popełnić identyfikatory, ponieważ odtwarza zobowiązuje) zamiast, następnie dcommit


można też spróbować wykonać następujące czynności:

meldowanie pierwotnej wersji z SVN (po prostu tworząc te branże, tagi, foldery tułowia i popełniania), potem stworzyć klon git svn (git svn -s clone svn://…)

następnie wydać następujące polecenia:

# 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 

edit cherry pick było konieczne tylko dlatego, że mój szybko skonfigurować repozytorium git miał tylko puste, popełnia

+0

próbowałem go z git pull --rebase ale niszczy svn upstream informacje: # git svn clone -s # projekt cd # git ciągnąć --rebase git: Projekt # git svn dcommit Nie można określić informacje SVN w górę strumienia z historii HEAD. Być może repozytorium jest puste. w/usr/lib/git-core/git-svn linia 517. –

+0

spróbuj stworzyć fałszywego zatwierdzenia z svn najpierw – knittl

+0

Nie jestem pewien, czy rozumiem co masz na myśli: Po Git Svn Clone stworzyłem testowe zatwierdzenie w svn . Po git pull -rebase nadal mogę git svn Fetch, ale nie dcommit. Myślę o po prostu importowaniu do svn ignorując historię. –

12

Oto mój przepis na publikację repo git poprzez 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 Zachowaj czasy commitów lub autorstwo. Boże, jeśli użyłeś gałęzi.

+0

Po wykonaniu 'rebase', git zgłasza, że ​​te dwie transakcje reperowały teraz źle. Co należy zrobić, żeby to naprawić? –

Powiązane problemy