Czy możemy skonfigurować serwer SVN na komputerze lokalnym bez dostępu do sieci?

25

Chcę skonfigurować repozytorium SVN na moim komputerze bez dostępu do sieci. Pracuję nad kodem bez żadnego współpracownika, więc nie chcę, aby był on publicznie dostępny.

Przeczytałem ten post , ale sugeruje on korzystanie z usług repozytorium SVN online, które dają darmowe repozytoria. W takim przypadku mój kod będzie publicznie dostępny (zgodnie z warunkami bezpłatnych planów).

Zastanawiałem się więc, czy mogę skonfigurować lokalny serwer na moim komputerze z systemem Windows XP, do którego mam dostęp tylko wtedy, gdy nie mam połączenia z Internetem?

Aitezaz Abdullah
źródło
15
Zdecydowanie polecam użycie git
zamiast
7
Z pewnością możesz zainstalować SVN lokalnie i korzystać z niego. Nie ma z tym problemów. visualsvn.com/server/download
Alex
8
Lub rtęciowy; „hg init” tworzy repozytorium w katalogu, w którym się znajdujesz… nie może być dużo łatwiejsze?
perp.
8
Nic w tym pytaniu nie sugeruje, że DVCS jest konieczny. Subversion idealnie pasuje do opisanego scenariusza. Nie rozmazuj naszych odpowiedzi zaleceniami dotyczącymi rozwiązań alternatywnych, jeśli nie ma technicznych powodów, aby to zrobić.
RichardM
3
@RichardM: Nie ma nic złego w sugerowaniu innego rozwiązania, jeśli jest łatwiejsze do skonfigurowania i bardziej przyszłościowe. DVCS zapewnia wiele innych korzyści, jeśli OP chce pewnego dnia współpracować z innymi ludźmi.
marco-fiset

Odpowiedzi:

31

Najłatwiejszym sposobem skonfigurowania serwera lokalnego jest użycie svnserve :

Subversion obejmuje Svnserve - lekki autonomiczny serwer, który używa niestandardowego protokołu przez zwykłe połączenie TCP / IP. Jest idealny do mniejszych instalacji lub tam, gdzie nie można użyć pełnego serwera Apache.

W rzeczywistości nie potrzebujesz serwera subversion, jeśli wszystko, co chcesz zrobić, to uzyskać lokalny dostęp do repozytorium, ponieważ możesz uzyskać dostęp do repozytorium subversion za pośrednictwem adresu URL pliku, jak opisano w tej odpowiedzi :

Możesz uzyskać dostęp do repozytorium za pomocą protokołu file: //, więc będziesz potrzebować tylko zainstalowanego Tortoise SVN i nic więcej. Zobacz to pytanie w FAQ: Czy można używać TortoiseSVN bez serwera?

Możesz nawet mieć repozytorium w urządzeniu USB, aby móc zabrać ze sobą źródło i pracować z innymi komputerami.

Jeśli używasz TortoiseSVN , możesz znaleźć instrukcje w Creating The Repository With TortoiseSVN :

  1. Otwórz Eksploratora Windows

  2. Utwórz nowy folder i nazwij go np. SVNRepository

  3. Kliknij prawym przyciskiem myszy nowo utworzony folder i wybierz TortoiseSVN → Utwórz repozytorium tutaj ....

Bezpośrednio powyżej na tej stronie opisano również, jak utworzyć repozytorium z wiersza polecenia .


Powiedziawszy to, polecam spojrzeć na Mercurial lub Git jako alternatywę svn. Jeśli znasz TortoiseSvn, przekonasz się, że TortoiseHg i TortoiseGit są łatwym przejściem, a ponadto daje ci elastyczność do pracy w sposób rozproszony później, jeśli zajdzie taka potrzeba. Na przykład w przeszłości korzystałem z kart pamięci do przesyłania hgrepozytoriów między komputerami bez dostępu do sieci, a gdy pracujesz w ten sposób, otrzymujesz bezpłatną kopię zapasową w okazyjnej cenie.

Mark Booth
źródło
Co za świetna odpowiedź!
Steve
9

Najprostszy (i najszybszy) serwer, którego można używać do pracy z lokalnym repozytorium, osadzony w każdym kliencie svn . Jest to serwer do uzyskiwania dostępu do dowolnego repozytorium i dowolnej liczby repozytoriów , istniejących w lokalnym systemie plików, za pomocą pliku protokołu: ///. Nie zapewnia żadnych metod autoryzacji ani uwierzytelniania, zapewnia jedynie pełny, nieograniczony dostęp do kontrolowanego repozytorium, ale z drugiej strony pozwala na użycie i daje wszystkie funkcje systemu VCS per se.

Aby korzystać z tego serwera, musisz w dowolnym pustym katalogu w dowolnej lokalizacji wywołać komendę CLI svnadmin z odpowiednią podkomendą i parametrami (nie pamiętam, czy w pakiecie klienta CLI są programy administracyjne, czy nie i nie mogę sprawdź - nie zainstalowałem klienta CLI svn, tylko TortoiseSVN, które mają te programy w instalatorze w wersji 1.7) - mam nadzieję, że będziesz w stanie go znaleźć.

svnadmin helppokaż nam wszystkie dostępne komendy, jesteśmy teraz zainteresowani komendą create.

svnadmin help create podać wszystkie potrzebne nam dane

create: usage: svnadmin create REPOS_PATH

Create a new, empty repository at REPOS_PATH.

Valid options:
...

W punkcie początkowym pierwszego repo możemy zignorować wszystkie opcje dostrajania i zapamiętać tylko główną formę svnadmin create REPOS_PATH, tam REPOS_PATH jest ścieżką bezwzględną lub względną do pustego katalogu, planowanego do repo. Ponieważ większość czasu zwykli ludzie systemu Windows do aplikacji wieloplatformowych mogą być zdezorientowani, której notacji (lewy lub lewy ukośnik) należy użyć w ścieżce (metoo), najbezpieczniejszym sposobem jest cdlokalizacja, z której nasz katalog jest widoczny bez długiej ścieżki - rodzic przyszłego katalogu repo lub samego katalogu. Do planowanego repo z:\Main wcześniej svnadmin create

Z:
cd \Main

i wreszcie

svnadmin create .

W rezultacie otrzymujemy puste repozytorium w katalogu, które jest wyświetlane w Eksploratorze Windows ze specjalną ikoną jako wskaźnik zawartości

RepoFolder

Teraz, za każdym razem, gdy to repozytorium jest potrzebne, używamy zwykłych poleceń SVN, tam pojawia się część URL lub parametryfile:///Z:/Main

c:\>svn ls file:///Z:/Main
branches/
tags/
trunk/

(Dodałem standardowe drzewo repozytorium w repo).

Przeanalizujmy ten dziwny adres URL:

  • file:///, jak w przypadku każdego adresu URL, oznacza protokół dostępu, w naszym przypadku protokół jest specjalny i ma trzy, a nie dwa ukośniki
  • Z:/Main jest pełna ścieżka do repozytorium z dyskiem i ścieżka wewnątrz dysku, tam wszystkie ukośniki odwrotne systemu Windows zastąpione „klasycznymi” ukośnikami

Z jakiegokolwiek innego miejsca to repozytorium nie różni się od „Big Brothers” ze specjalnymi serwerami Subversion

RepoBrower dla pliku: /// repo

Leniwy Borsuk
źródło
1
@Lazy Badger OP wyraźnie zapytał, jak skonfigurować serwer svn. Powiedziałeś mu, żeby w ogóle unikał używania jakiegokolwiek serwera. To pozwala uniknąć odpowiedzi na pytanie, jak stwierdzono.
alternatywny
5
@mathepic - właściwie OP pyta, jak skonfigurować repozytorium SVN, a nie serwer - ogromna różnica.
Murph
5

Spróbujmy odpowiedzi, która zaleca ogólne rozwiązania, a nie szczegółowe.

Po pierwsze tak, możesz używać Subversion na samodzielnym komputerze - możesz zainstalować serwer lokalnie lub pracować z plikiem: //


Ale chyba, że ​​istnieje bardzo dobry powód, dla którego musisz użyć subwersji, sugerowałbym, że nie jest to najlepsze rozwiązanie problemu lokalnej kontroli wersji - zwłaszcza dlatego, że zawodzi jedną z rzeczy, które uważam za niezbędne, tj. Zapewnienie, że ty kod źródłowy znajduje się w co najmniej dwóch miejscach (tak, nawet dla rzeczy osobistych). Dlatego sugerowałbym użycie rozproszonego systemu kontroli wersji (DVCS).

Jedną z zalet DVCS jest to, że po zainstalowaniu narzędzi repozytoria są autonomiczne w folderze i możesz synchronizować zawartość między różnymi folderami zawierającymi „to samo” repozytorium, o ile masz dostęp na poziomie plików. Możesz również porozmawiać z wersjami „serwerowymi” tych repozytoriów (które są hostowane prywatnie lub są dostępne jako usługa). To sprawia, że ​​życie jest dużo łatwiejsze w prowadzeniu wszystkiego lokalnie.

Istnieją również inne zalety DVCS.

Jak już zauważyłem, nie sądzę, że naprawdę masz odpowiednie rozwiązanie VCS, dopóki kod nie znajduje się na co najmniej dwóch komputerach (w szczególności na dwóch różnych dyskach twardych i idealnie w więcej niż jednej lokalizacji - chociaż klonuje się i naciska na pamięć USB lub Przechowywanie „w chmurze” (skydrive, dropbox, i in.) to kolejny sposób, który również powinien działać.

Pod względem DVCS - spojrzałbym na Mercurial (Hg) i Git, a także na Veracity . Używam Mercurial, ponieważ jest jeszcze ładniejszy w systemie Windows ...

Jeśli chodzi o warunki hostowanych usług, zgadzam się, że github ma wiele do powiedzenia - ale jest też wiele fajnych rzeczy o bitbucket i Fogbugz / Kiln ... i to samo prawdopodobnie dotyczy wielu innych usług których nie wymieniłem (np. http://beanstalkapp.com/, o czym wspominałem dzisiaj na Twitterze)

Murph
źródło
2

Subversion nie wymaga serwera. Korzysta ze scentralizowanego repozytorium, ale dostęp do tego repozytorium można uzyskać za pomocą metody dostępu do „pliku”, co oznacza, że ​​wystarczy dostęp do systemu plików, w którym repozytorium jest przechowywane. Najłatwiejszym sposobem skonfigurowania tego jest utworzenie folderu gdzieś na dysku twardym, wskazanie TortoiseSVN (lub podobnego narzędzia) i „utworzenie tutaj repozytorium”. Stamtąd możesz zrobić wszystko, aby wprowadzić swój kod do repozytorium.

Jednak na dłuższą metę prawdopodobnie lepiej będzie użyć rozproszonego SCM, przy czym najlepszymi kandydatami są git (bardziej wydajny, stromy krzywa uczenia się, działa najlepiej na * nix) i merkurialny (nieco mniej wydajny, łatwy do nauczenia się, działa jednakowo dobrze w systemie Windows i * nix). Dzięki nim twoja kopia robocza zawiera całe repozytorium i możesz utworzyć tyle klonów (zdalnych lub lokalnych), ile chcesz. Możesz zacząć lokalnie, a jeśli zdecydujesz się hostować repozytorium na zewnątrz, po prostu sklonuj swoje istniejące repozytorium lokalne do lokalizacji zewnętrznej i możesz synchronizować w obu kierunkach w dowolnym momencie. Jeszcze lepiej, ponieważ każdy z twoich klonów zawiera całą historię projektu, SCM działa również jako system zapasowy. Dzięki subversion, jeśli twój serwer umrze i nie utworzyłeś jego kopii zapasowej, twoja historia zniknęła - z git,

http://hginit.com/ ma doskonały samouczek na temat rozpoczęcia korzystania z rtęci.

tdammers
źródło
1

Istnieje wiele firm hostingowych SVN, które oferują darmowe konto dla jednego lub dwóch programistów i nie wymagają publicznego kodu. Sprawdź połączoną tabelę pod kątem opłaty 0 USD, Wymagane OSS = NIE. Naliczyłem dziewięciu dostawców, którzy obecnie spełniają te kryteria.

Chociaż z pewnością możesz bardzo łatwo hostować własne repozytorium, istnieją pewne korzyści związane z korzystaniem z usług dostawcy:

  • Możesz uzyskać dostęp do kodu z dowolnego miejsca bez dodatkowej konfiguracji.

  • Przechowywanie kodu poza witryną chroni Cię przed awariami dysku twardego, pożarami itp.

  • Niskie koszty administracyjne.

Caleb
źródło
Widzę rozsądną koncepcję po stronie OP - chce SVN i chce go lokalnie (ostatnie słowo - najważniejsze). Przypadkowa skrzynka. Odpowiedziałeś na inny przypadek użycia , który można uznać za „Brak odpowiedzi” - ponownie przeczytaj tekst od pierwszych słów! Nie oznaczyłem twoich i innych odpowiedzi jako „brak odpowiedzi”, podczas gdy formalnie nie są to odpowiedzi . HTH
Lazy Badger
Ponownie przeczytaj LAST SENTENCE of OP: „czy mogę skonfigurować serwer lokalny na moim komputerze z systemem Windows XP, do którego mam dostęp tylko wtedy, gdy nie mam połączenia z Internetem?” - to pytanie , zwykłym tekstem w języku angielskim. To pytanie wymaga odpowiedzi. Czy twoja „odpowiedź” ma jakiś związek z pytaniem ?! Bądź szczery przynajmniej dla siebie , rozpoznając błędy
Lazy Badger
Nie czytam między wierszami (i pokazałem to więcej niż raz ), czytam dokładnie to, co zostało napisane i odpowiadam na zadane pytanie, nie myśląc o autorze, co chciał powiedzieć, ale nie powiedzieć . W przeciwieństwie do większości odpowiedzi w tym temacie, odpowiedzi nie mają związku z pytaniem
Lazy Badger