2011-12-27 16 views
22

Zasadniczo chcę przesłać moje zmiany bez popychania ich i bez przełączania oddziałów. To pozwala mi wykonywać pewną pracę, gdy jestem w dobrym punkcie zatrzymania, a następnie kontynuuję pracę w tej samej gałęzi. Jeśli zepsuję, mogę revert, jeśli dodaję nowe zmiany, znowu mogę commit.Czy SVN ma odpowiednik zatwierdzenia git (bez naciśnięcia)?

Rozumiem, że mogę utworzyć gałąź funkcji w SVN, aby śledzić te zmiany, ale znowu chciałbym to zrobić, pozostając w tej samej gałęzi/pniu. Nawet odpowiednik git stash wystarczy, choć wydaje się, że SVN nie ma tej cechy.

+0

Zobacz także: http://stackoverflow.com/a/527048/59087 –

Odpowiedz

31

Punktem kontrolowania wersji rozproszonej jest ta funkcja lokalnych zatwierdzeń, która może później zostać scalona z repozytorium wyższego poziomu. SVN nie jest dystrybuowany i nie może tego zrobić. Główną przeszkodą jest numeracja liniowa SVN, co oznacza, że ​​każdy klient musi uzyskać nowy numer wersji identyfikacyjnej dla każdego zestawu zmian. Ponieważ "przydzielanie" numeru wersji i późniejsze korzystanie z niej prowadzi do różnych warunków wyścigowych, akcje "zatwierdzania" i "pchania" są atomiczne w SVN i każdym nierozdzielnym systemie kontroli wersji.

To powiedzenie, że frontend SVN git jest dobrym wyborem, jak sugerował Joe. Dba o to, aby SVN nigdy nie widział twoich lokalnych, indywidualnych zatwierdzeń, a "push" jest tłumaczony na pojedynczy, duży commit SVN.

+2

Jeśli chodzi o git-svn, to polecenie push tłumaczy każde zatwierdzenie git na zatwierdzenie svn. Jednak przed pchnięciem można ręcznie zgnieść zatwierdzenia. –

25

Według projektu SVN nie, jednak można użyć polecenia git jako git svn jako front-end do SVN. Pozwala na wykonywanie operacji push/pull z pilota SVN, ale nadal używa git lokalnie, a tym samym do lokalnego zatwierdzania bez popychania do repozytorium SVN.

Coś takiego może pomóc: http://www.viget.com/extend/effectively-using-git-with-subversion/

+5

+1: Git jest idealnym front-endem do Subversion. – Johnsyweb

+2

Z mojego rozumienia SVN jest on bardzo scentralizowany. To znaczy, jeśli coś popełnisz, trafi do centralnego repo. Inne IDE mogą wykonać lokalną "migawkę" podczas wprowadzania zmian i zapisać to. – Joe

1

Możesz być w stanie wykorzystać kołdrę to zrobić, chociaż zaczyna się trudne, jeśli tylko chcą popełnić część swojej kołdry kolejce do SVN.

Powiązane problemy