Moje zdjęcie
Uczeń LO im. Ma­­ła­chow­skie­go w Płoc­ku. Lubi czy­tać książ­ki. Ma du­żo po­my­słów, jed­nak za­zwy­czaj ma­ło chę­ci lub nie­do­bór umie­jęt­no­ści na ich re­ali­za­cję. In­te­re­su­je się pro­gra­mo­wa­niem. Bie­rze udział w kon­kur­sie po to aby na­uczyć się cze­goś no­we­go. Ocze­ku­je na kon­struk­tyw­ną kry­ty­kę.

środa, 4 sierpnia 2010

004: Pierwszy mur - SVN

Od momentu wysłania zgłoszenia do dnia rozpoczęcia konkursu mogłem sobie wesoło bawić się w QtDesignerze i zastanawiać się jak ten mój program ma w ogóle wyglądać. Jednak w poniedziałek doszedłem do wniosku, że trzeba wziąć się za poważne pisanie. A to wiązało się z rozpoczęciem wrzucania kodu na Google Code.

Jak już zaznaczyłem w poprzednim wpisie, wybrałem SVN, ponieważ wydawał mi się popularniejszy od alternatywy proponowanej mi przez Google - Mercuriala. Powinno to chyba skutkować kosmiczną wręcz ilością tutoriali dla każdej konfiguracji sprzętowej i programowej, a jako kompletny laik w sferze systemów kontroli wersji tego właśnie potrzebowałem.

Oczywiście, poradników było mnóstwo, jednak okazało się, że albo nie potrafię szukać albo nie ma takiego dla totalnych żółtodziobów, którzy chcą pisać pod Linuksem. Dla ludzi obeznanych w systemach kontroli wersji - całe mnóstwo. Dla chcących używać graficznego TortoiseSVNa pod Windowsem - drugie tyle. Dla osób takich jak ja - żadnego. Nie wykluczam, że to wina mojego kiepskiego doświadczenia w korzystaniu z Googli (człowiek uczy się całe życie, a ja jeszcze młody...), jednak w końcu jakiś tutorial "dla zielonych" powinien w sieci być.

Ostatecznie postanowiłem samemu pokombinować na podstawie tych bardziej zaawansowanych. Po długich próbach udał mi się initial import.

svn import -m "database" logtree https://logtree.googlecode.com/svn/

Potem doszedłem do wniosku, że Linux Mint pod VirtualBoksem strasznie się muli, więc zainstalowałem Debiana. Stąd pracę musiałem zacząć od zera, z tym że miałem już jakiś kod na serwerze, a to ułatwiało zadanie.

Zacząłem od dość oczywistego

su -c "aptitude install subversion"
po czym pobrałem najnowszą (w sumie to jedyną wtedy) wersję kodu używając
svn checkout https://logtree.googlecode.com/svn/
Wyglądało na to, że mogę wziąć się za dalsze pisanie.

Kiedy po niecałych trzydziestu minutach gotowy był kod odpowiedzialny za sortowanie wpisów po ID przodka, a w drugiej kolejności poprzednika (opowiem o tym szerzej przy okazji wpisu o bazie danych), postanowiłem wrzucić go na Google Code. Przy okazji zrobiłem trochę porządku w plikach, usunąłem zbędne binarki i dodałem plik readme. Jakież było moje zdziwienie, gdy po wydaniu polecenia

svn commit
wyłącznie modyfikacje plików zostały zapisane na serwerze, natomiast usuwanie i dodawanie nowych nie wpłynęło w żaden sposób na wygląd heada.

Po kilkunastu długich minutach żmudnych poszukiwań przyczyny znalazłem rozwiązanie: przed commitowaniem trzeba powiedzieć SVNowi o dokonanych działaniach na plikach przy pomocy

svn add *dodane pliki*
svn remove *usunięte pliki*
svn move *źródło* *cel*
svn copy *źródło* *cel*
Po zacommitowaniu wszystko wyglądało jak trzeba.

Okazało się, że podstawy korzystania z subversion, niezbędne minimum do prowadzenia tego projektu, ogranicza się do sześciu poleceń, których stosowanie już po kilku chwilach staje się oczywiste. A pomyśleć, że na początku była to dla mnie czarna magia i bariera nie do przejścia.

Podsumowując, mój cykl pracy przy użyciu subversion wygląda następująco:

svn checkout https://logtree.googlecode.com/svn/
*właściwe kodowanie*
svn add *dodane pliki*
svn remove *usunięte pliki*
svn commit
przy czym oczywiście pierwsze polecenie jest pomijane, jeżeli mam kopię projektu na dysku. Może to niezbyt zaawansowane i mało profesjonalne, jednak obecnie na moje potrzeby całkowicie wystarcza. Mimo wszystko mam nadzieję, że w czasie tworzenia LogTree przyswoję nieco więcej subversionowej wiedzy.

3 komentarze:

  1. Jak już poznasz SVN i zacznie cię on irytować - polecę zapoznanie się z HG i/lub Git. Ale od SVN fajnie zacząć, żeby potem w pełni docenić masakryczną świetność alternatyw:).

    OdpowiedzUsuń
  2. Jeśli potrzebujesz klienta linuksowego, to RapidSVN działa całkiem nieźle, jest też KDEsvn ale ma trochę problemów.
    Sprawdź też co robi polecenie svn status - gwarantuję, że ci się przyda :)
    SVN ponadto pozwala ci skracać polecenia svn checkout = svn co, svn commit - svn ci ... itp.
    Pamiętaj, że svn add cośtam działa na wszystkie pliki w katalogu który podałeś jak argument (jesli to ofc był katalog, nie plik)

    OdpowiedzUsuń
  3. Zdążyłem już to zauważyć, ale svn status będę musiał sprawdzić, dzięki za radę ;)

    OdpowiedzUsuń