Nasz zespół programistów korzysta obecnie z SVN do zarządzania tworzeniem aplikacji internetowych. Deweloper zarządzający serwerem SVN próbuje przeprowadzić migrację ze starszego serwera Win XP na inny serwer, ale próba wysłania zrzutu repozytorium kończy się niepowodzeniem (uszkodzenie lub coś). Dlaczego to się nie powiedzie, to zupełnie odrębne pytanie.
Dev zarządzający repozytorium SVN zasugerował eksportowanie bieżącej HEAD starego repo do użycia jako bazy nowego repozytorium SVN, ale stracimy całą naszą historię SVN. Używam git-svn lokalnie, co oznacza, że mam 1,5 roku informacji o zatwierdzeniu przechowywanych lokalnie. Czy istnieje sposób na usunięcie tych poleceń z git-svn i umieszczenie ich w nowym repozytorium SVN?
Odpowiedzi:
Jeśli utworzysz nowe, puste repozytorium SVN, czy możesz przenieść wszystkie zatwierdzenia z git-svn bezpośrednio do repo? (nie użyłem git ani git-svn, ale to jest to, co zrobię z jednym z moich repozytoriów hg, jeśli będę musiał go umieścić w repozytorium svn)
Edytować: Udało mi się doprowadzić to do pracy z ręcznym rebasingiem przez mercurial. Jedyną rzeczą, która wydaje się wyjątkowa, jest ręczna rebase zamiast automatycznej bazy svn. Możesz spróbować tego w git-svn przed wciągnięciem rtęci do miksu.
svnadmin create targetSVN
hg
:hg clone file://targetSVN hgCopy; cd hgCopy
hg-git
):hg pull git://yourrepo.git
hg rebase -s tip -d 0
(0
powinien być początkowym zatwierdzeniem SVN, itip
powinien być głową rzeczy, które wyciągnąłeś z gita. Upewnij się, że zmiany git są liniowe (nie mają scaleń!). Zastąpićtip
dla rzeczywistej liczby zmian zestawu głowy gita (znalezionej przezhg heads
) Jeśli to konieczne). Akceptuj wszystkie zdalne zmiany, gdy pyta o konflikty.hg push
dopóki wszystkie zmiany nie zostaną wprowadzone w repozytorium svn. Jednocześnie przesuwa 1 zestaw zmian.źródło
git svn dcommit
kończy się niepowodzeniem z „Nie można określić wcześniejszej informacji SVN z historii HEAD. Być może repozytorium jest puste. W / usr / lib / git-core / git-svn line 522.”git svn info
przestał także działać z tym samym błędem.touch
plik, zatwierdź go i usuń po zaimportowaniu danych.