Czy mogę odzyskać historię repozytorium SVN z lokalnego repozytorium git-svn?


1

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?


Wciśnij zatwierdzenia do nowego repozytorium Git. :RE
grawity

Odpowiedzi:


0

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.

  1. Utwórz nowe repozytorium SVN: svnadmin create targetSVN
  2. Czy początkowe zatwierdzenie na nowym repozytorium SVN:

    svn co file://targetSVN svnCopy cd svnCopy
    touch test
    svn add test; svn commit -m "Initial Import"

  3. Sprawdź repo przez hg: hg clone file://targetSVN hgCopy; cd hgCopy
  4. Pociągnij zmiany z git (przez hg-git ): hg pull git://yourrepo.git
  5. Ręczne podstawianie: hg rebase -s tip -d 0 ( 0 powinien być początkowym zatwierdzeniem SVN, i tip 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 przez hg heads ) Jeśli to konieczne). Akceptuj wszystkie zdalne zmiany, gdy pyta o konflikty.
  6. hg push dopóki wszystkie zmiany nie zostaną wprowadzone w repozytorium svn. Jednocześnie przesuwa 1 zestaw zmian.

git-svn najwyraźniej nie radzi sobie z wieloma zdalnymi repozytoriami svn; nie chce zatwierdzać moich zmian w drugim repozytorium svn-remote. Nie wiem, czy poprawnie przestawia wszystkie zatwierdzenia na zatwierdzenie bazy nowego repo ...
James

Co się stanie, jeśli utworzysz nowe repo, sprawdzisz je za pomocą git-svn, ściągniesz zmiany z pierwszego repozytorium git-svn, rebase, a następnie push?
Darth Android

Po przeniesieniu gałęzi master z pierwszego repozytorium git-svn na drugą gałąź mater git-svn repo, 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.
James

Spróbuj wykonać początkowe zatwierdzenie w repozytorium svn i pociągnij to pierwsze. Właśnie touch plik, zatwierdź go i usuń po zaimportowaniu danych.
Darth Android

Nie mam szczęścia, wciąż nie mogłem zatwierdzić rebased commits z oryginalnego git-svn.
James
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.