2015-07-31 50 views
6

Problem: starsze repozytorium svn ma katalog, który jest zsynchronizowany z konfiguracją użytkownika na serwerze prod.Filtr zostaje usunięty podczas klonowania git svn?

synchronizacji skutecznie:

  • usuwa wszystkie pliki
  • zobowiązuję
  • kopiuje wszystkie pliki
  • zobowiązuje

Czy to możliwe, aby odfiltrować wszystkie pliku usuwa podczas git svn klon tego repo?

I kolejne git svn również pobiera?

Niekoniecznie chcę filtrować całe zatwierdzenie tylko części, które usuwają pliki.

Oznaczałoby to zmianę kolejnych plików dodawania w celu modyfikacji plików.

Odpowiedz

1

Po pierwsze, jeśli chcesz mieć większą kontrolę nad swoim konwersji repo, można rozważyć użycie Reposurgeon zamiast git-svn


Ze względu na sposób, że Git działa, wpływ tych złych praktyk w SVN są mniej surowe niż myślisz.

Po pierwsze, sam Git nie ma pojęcia "historii pliku". Nie ma czegoś takiego jak "plik modyfikuj", tak jak w SVN lub innych systemach VCS. Git zapamiętuje tylko drzewo plików. A potem kolejne drzewo plików. Itd.

Jeśli porównasz HEAD do HEAD ^^ (gdzie HEAD^jest interwencyjnym "usuniętym" zatwierdzeniem), otrzymasz wyniki nie różniące się od tych, które uzyskałbyś, gdyby udało ci się opuścić wersję "usuniętą" całkowicie.

Ponadto wymagania dotyczące pamięci nie będą dużo większe - Git przechowuje całe obiekty i porównuje je pod względem podobieństwa podczas tworzenia paczek, w przeciwieństwie do SVN, który używa kompresji delta (i dlatego zależy od tej historii plików). Drzewo A + puste drzewo + Drzewo B (złożone w większości z tych samych plików) zajmie bardzo malutką dodatkową przestrzeń w porównaniu z brakującymi pustymi wersjami drzewa.

+0

Problem dotyczy tutaj przydatnej historii plików. To nie jest konwersja repo, ale raczej lustro repozytorium. Revision svn nadal aktywnie otrzymuje potwierdzenia SVN. Rozwiązałem problem z opiekunem, ale rozdzielczość ma niski priorytet. – Gabriel

+0

SVN zatwierdza z trzech źródeł są skutecznie przeplatane. Czy istnieje sposób, w jaki mogę je rozplątać. Zrób trzy lustra, z których każde wykona co trzeci commit z przesunięciem? – Gabriel

+0

W rzeczywistości każde źródło ma unikalny komunikat zatwierdzenia, który jest używany za każdym razem. Więc może po prostu muszę odfiltrować zatwierdzenia w wiadomości commit do trzech nowych repo? – Gabriel