Subversion: czy można zatwierdzać wersje lokalne bez ich przesuwania, a następnie je przesuwać w późniejszym czasie - czy też brak tej funkcji, dlaczego jest nazywany "scentralizowanym"?svn: local commits
Odpowiedz
Nie można lokalnie zatwierdzać z Subversion.
Dzieje się tak dlatego, ponieważ jako scentralizowany system kontroli wersji, lokalna kopia robocza nie zawiera wszystkich informacji, jakie serwer posiada na temat ostatnich wersji, wpisów w dzienniku itp., Które miałby, gdyby był to system kontroli wersji rozproszonej. (DVCS).
Kopia robocza dla subversion zawiera kopię wszystkich plików, które zostały wyrejestrowane, aby można było przywrócić zmienione pliki bez kontaktu z serwerem.
Jeśli naprawdę chcesz wykonywać lokalne zatwierdzenia, powinieneś rzucić okiem na SVK, który jest zbudowany na Subversion i zapewnia funkcje podobne do DVCS.
Czy masz doświadczenie z SVK? Używałem go trochę i wydawało mi się, że jest w porządku, ale nie mam zbyt wiele wiary w to, że gładkie svn używa. Mogę sobie wyobrazić, że wszystko, co zostało zbudowane, byłoby równie chwiejne. – jskulski
@jskulski: Nie mam doświadczenia z SVK, ale ich strona "antiFUD" odpowiada na twoje pytanie: http://svk.bestpractical.com/view/SVKAntiFUD – Catskul
Ta odpowiedź jest trochę myląca. Nie dlatego, że SVN jest scentralizowany, że lokalne zatwierdzenia nie są możliwe. Jest to po prostu pominięty szczegół implementacji. Traktowanie lokalnych zatwierdzeń jako kolejki zestawów zmian, które można wsunąć wsadowo do repozytu, jest technicznie wykonalne (svk to pokazuje) - wystarczyłoby zmienić UX do punktu, w którym SVN staje się bardziej "trudny" do użycia (przy użyciu standardowego workflow). SVN wybiera optymalizację pod kątem łatwości użycia, a nie funkcjonalności; ale można go włamać się do Subversion bez niszczenia czegokolwiek. –
Dlatego jest nazywany scentralizowanym. Możesz spróbować użyć repozytorium wewnątrz repozytorium. Jeden jest lokalny, a drugi jest odległy. Następnie przekazujesz całe wewnętrzne repozytorium do zdalnego.
Można zrobić coś takiego, jeśli łączysz serwer SVN z GIT lub Mercurial Bridge. Ponieważ GIT i Mercurial są w stanie wykonywać lokalne polecenia, możesz ich użyć w ten sposób. Może sprawdź git-svn lub coś podobnego (pamiętam, że był bazar-svn, ale nie jestem pewien).
Wariantem tego jest "git init" w roboczej kopii SVN, spraw, aby lokalne zatwierdzenia były niedostępne. Później zatwierdzasz stan końcowy (lub nawet pośredni) do SVN. Po tym możesz również usunąć katalog .git. Oznacza to, że kopia robocza pozostaje kopią roboczą SVN, a nie git-repo. – fmarc
Nie! git jednak może to zrobić i możesz użyć git-svn do zachować synchronizację z oryginalnym repozytorium.
Aby uzyskać najlepsze z obu światów, SVK został zbudowany na Subversion, ale utrzymanie stanu lokalnej, dzięki czemu można zrobić lokalnych zobowiązuje ...
Jak mówili inni, nie.
Chciałbym zdecydowanie polecam próbować użyć czegoś zdalnie janky z svn.
Nie użyłem wystarczająco dużo SVK, aby polecić przeciwko niemu, wydawało się dość miłe. Jednak sceptycznie podchodzę do tego, że wykorzystuję wszystko, co zostało zbudowane na SVNie dla całego projektu, bez żadnych problemów. Korzystam z SVN na tyle, by wiedzieć, że nawet regularne cykle pracy mogą toastować, jeśli nie jesteś ostrożny.
Używamy SVN w pracy. Korzystam z bzr i bzr-svn, aby wykonywać wszystkie moje interakcje z i działa cudownie.Moja pracy jest coś takiego:
$ bzr branch file:///var/svn/project ~/project
(hack, hack, siekać)
$ bzr commit -m "commit log"
(powtórzenie)
kiedy jestem gotowy
$ bzr push
Tak, inst EAD aktualizowania masz $ bzr merge
i zobowiązać się zmiany (ewentualnie regały co pracują na), ale lokalne commity są bardzo miła rzecz, a regały jest zbyt (regały jest jak przywrócić z Zapisz)
Myślę, że git również to obsługuje. Słyszałem, że nie jest tak kompletny jak bzr-svn, ale nie mogę tego potwierdzić.
Ale korzystanie z DVCS z repozytorium svn to dobry sposób na rozpoczęcie pracy!
Wiele z wyżej stał się nieco przestarzały, a ponieważ kwestia ta pojawia się jako trafienie w wyszukiwarce Google dla „svn lokalny popełnić” oto zmiana:
rozważyć przy użyciu pakietu „git-svn” (wraz z "git-gui", jeśli nie znasz git), aby lokalne zatwierdzenia były możliwe i łatwe, z pełną, zdalną integracją SVN. Przyzwoity przegląd/samouczek/przypadek użycia to here. Właśnie zacząłem używać tego procesu z projektami Sourceforge, więc nie mogę jeszcze zgłaszać żadnych problemów. Upewnij się, że plik Autorów jest prawidłowy!
EDYCJA: Zaktualizowany link. Dzięki, hdl!
+1 - za notowanie nadmiarowości. Myślę, że nawet gdzieś czytałem, że SVN będzie wprowadzać lokalne zatwierdzenia. – Seth
To łącze nie działa. – thirtythreeforty
@thirtythreeforty: Archive.org ma kopię strony: https://web.archive.org/web/20130924234957/http://utsl.gen.nz/talks/git-svn/intro.html – newenglander
Po odpowiedzi od BobC, dla mercurial użyłbyś hgsubversion
.
- 1. Garbage collect commits in git
- 2. Git merge commits
- 3. Git stracił commits
- 4. Rozwiń gałąź git, zachowując po fuzji commits
- 5. Zobacz dziennik git bez łączenia commits
- 6. Historia Git w tym/interleave submodule commits
- 7. SVN - Odzyskiwanie przydatnych informacji
- 8. Local zawiadomienie w Planie
- 9. iOS Notification "Local" Push
- 10. Paszport-Local Mongoose - Zmień hasło?
- 11. mysql_connect z --local-plik_we parametru
- 12. Local XARecoveryModule.xaRecovery dostał XA wyjątek
- 13. Wartość datetime-local z React
- 14. git svn braku migracji z svn 1.8
- 15. Dlaczego błędy commits nie są zgodne z błędem merge-base?
- 16. Nie można zlokalizować CPAN.pm w @INC (@INC zawiera:/usr/local/lib/perl5/usr/local/share/perl5
- 17. W jaki sposób git decyduje, której wersji svn użyć w git-svn?
- 18. Importuj Repozytorium SVN po wyświetleniu SVN
- 19. utwórz nowy oddział svn z git-svn
- 20. SVN - całkowicie usunąć rewizję z serwera SVN
- 21. Jak używać HTML5 Local Storage z Ember.js?
- 22. Ustawianie wartości datetime-local z Data
- 23. C++: jak stworzyć wątek local/zmienną globalną
- 24. Jak odinstalować Ruby z/usr/local?
- 25. Czy istnieje środowisko Windows Azure Local Development?
- 26. Zmienne lokalne w bash: local vs subshell
- 27. Zastosowanie Leiningen Z Local M2 Repozytorium
- 28. Homebrew nie zainstalowany na/usr/local
- 29. Zrozumienie Globalne & Local Scope w JavaScript
- 30. LOAD DATA LOCAL, Jak pominąć pierwszy wiersz?
użyj Git. ma tę funkcję – nightingale2k1