2009-01-19 17 views
12

Skonfigurowałem pusty svn na serwerze i pracowałem nad lokalnie wykonując zatwierdzenia po drodze. Teraz chcę przekazać moje repo na serwer svn. Do tego próbowałem:Jak dokonać repozytorium Git na pusty serwer SVN z repo?

git-svn checkout http://remote.svn.server.com 
git-svn dcommit 

Git skarży się, że:

Use of uninitialized value in concatenation (.) or string at /usr/bin/git-svn line 411. 
Committing to ... 
Unable to determine upstream SVN information from HEAD history 

Odkąd zacząłem na moim komputerze lokalnym pierwszy i repo online jest pusty, nie mogę znaleźć żadnych informacji na temat jak zrobić ta praca.

+0

Czy próbujesz zatwierdzić serwer SVN * i zachować dzienniki zatwierdzania * lub po prostu przekazać dane do SVN w jednym dużym "Wstępnym zatwierdzeniu?" –

+0

Czy rzeczywiście sklonowałeś już repozytorium svn? – tcurdt

+0

@Steve Losh. Zachowanie dzienników było moją intencją, ale w tym momencie możliwość wykonania wstępnego zatwierdzenia również będzie świetna. Moje zatwierdzenia mają teraz mniej niż 20 lat, więc byłbym bardzo szczęśliwy, gdybym mógł to po prostu uruchomić. @tcurdt. Zrobiłem to teraz, jak zasugerowałeś poniżej. Ale wciąż otrzymuję ten sam błąd –

Odpowiedz

6

Oto co zrobię:

git-svn clone http://remote.svn.server.com otherdir 

Następnie w drugiej reż pociągnąć zmiany lokalnie z poprzedniego reż. Następnie powinieneś mieć repozytorium git, które jest "połączone" przez git-svn i powinieneś móc użyć polecenia dcommit.

This może być również przydatna do przeczytania.

+1

Ciągle otrzymuję ten sam błąd. Wydaje się, że nawet po ciągnięciu lokalnie repo gir nie było podłączone. –

+0

wklej swój plik .git/config ... git-log również byłby przydatny ... to naprawdę nie jest pytanie dla SO ... powinieneś pójść i zapytać na IRC – tcurdt

28

Potrzebowałem czegoś takiego ostatnio, a proces ten jest stosunkowo prosty.

Istnieje dobry samouczek autorstwa Brandona Dimcheffa, "Commit a linear git history to subversion" (zastępuje old broken link), na którym oparte są te kroki.

Począwszy od wersji Git 1.6.3 są to kroki:

$ svnadmin create svn_repository 
$ svn mkdir -m "Initial setup" file:///full/path/to/svn_repository/trunk 

$ mkdir gitrepo && cd gitrepo 
$ git init 
$ echo 'Hello from Git' > file.txt 
$ git add file.txt 
$ git commit -m "Hello from Git" 

$ git svn init --trunk=trunk file:///full/path/to/svn_repository/ 
$ git svn fetch 

$ git branch -a # Lists remotes/trunk 

$ git rebase --onto remotes/trunk --root master 
# => Applying: Hello from Git etc. 

$ git svn dcommit 
# => Committing to ... Committed r2 ... etc 

można zrobić svn checkout z svn_repository teraz i zobaczyć Git repo.

+0

To pomogło mi dużo, dzięki! – Sietse

+2

Dodaj '--log-window-size' do' git svn fetch', inaczej zajmie to kilka wieków na dużych repozytoriach. = D – vmassuchetto

Powiązane problemy