Paczuj
Z UMP
W ramach usprawnienia codziennej pracy z diffami z FlySpray powstał mały pomocnik: paczuj.bat
Uwaga!
Narzędzie jest dla tych, co mają prawa zapisu i mogą wysłać poprawki bezpośrednio na serwer.
Spis treści |
Czego potrzebuje
- Działające środowisko UMP (Windows)
- Prawa zapisu do CSV
- Pliki diff.txt umieszczone w katalogu UMP-OBSZAR (nie w UMP-OBSZAR\src)
- Połączenie z siecią (aktualizacja)
Jak wykorzystać
Wgraj pliki diff i _nowosci do katalogu UMP-Obszar (jeżeli używałeś mont-demont.bat już masz te pliki w odpowiednim miejscu). Uruchom paczuj.bat w tym katalogu.
Napisy w oknie podpowiedzą co dalej. Twoje działania to czytanie komunikatów i naciskanie np: spacji lub zamknięcie tego okna [x] w przypadku jakiegoś błędu.
ME zostanie uruchomiony z kolorowym podświetleniem (znaczenie niżej) i flagami błędów.
Znaczenie kolorów
- czerwony - rzeczy usunięte (plik old.plt),
- zielony - dodane (plik new.plt),
- niebieski - i takie, którym nie zmienił się przebieg, a tylko opis (plik chg.plt),
- żółty - dane z pliku mp, najczęściej _nowosci.txt.
Co robi (po kolei)
- Uaktualnia narzędzia i OBSZAR
- Tworzy jeden plik wszystko.patch
- Próbuje zaaplikować łaty bez modyfikacji i wypisuje co by robił: poprawnie to patching i fuzzy, jeżeli jest coś źle, zamknij okno lub wciśnij <CTRL+C>, opisz na FS, że diffy są za stare.
- Aplikuje pliki diff (na tym etapie zmiany są już w UMP-OBSZAR\src)
- Montuje mapę dla mapedita i sprawdza błędy
- Uruchamia mapedita z mapą, na której widać zmiany i dodane są flagi z błędami (w tym momencie nie aktualizuj źródeł, bo doprowadzisz do nadpisania)
- Po zamknięciu Mapedita sprawdza czy są jakieś zmiany i jeżeli nie ma uruchamia cvs commit, jeżeli są zmiany trzeba paczuj uruchomić ponownie.
- Jeżeli nie ma zmian i uruchamia się cvs commit to będzie on nieudany gdy w źródłach są konflikty - wtedy trzeba wyedytować pliki źródłowe i usunąć problem.
- Jeżeli nie ma zmian i nie ma konfliktów to cvs commit spowoduje zapisanie danych na serwerze.
- Jeżeli są zmiany, czyli są pliki diff to paczuj kończy pracę i musisz go ponownie uruchomić.
- Koniec
Stare diffy
Po wykryciu ze diffy są za stare (punkt 3), powinieneś przerwać pracę paczuja. Masz już wygenerowane podświetlenie. Możesz zobaczyć co autor diffa miał na myśli, montując źródła w standardowy sposób i dodając pliki old.plt, new.plt, chg.plt, nowosc.plt (niekoniecznie wszystkie one istnieją). Często przy małych zmianach można samemu ręcznie wprowadzić poprawki na podstawie podświetlenia.
paczuj-granice.bat
Na podobnej zasadzie co paczuj.bat, działa inny ułatwiacz do wprowadzania granic paczuj-granice.bat. Wymaga przeniesienia pliku granice-wspolne.diff.txt do katalogu narzedzia/ i uruchomienia, dalej czytanie komunikatów i naciskanie spacji (tym razem nie uruchamia się ME) i wpisanie opisu dla zmian w cvs
paczuj.bat w UMP-radary
wymaga przekopiowania odpowiednich diffów do katalogu UMP-radary/ następnie należy uruchomić paczuja.
Niestety cvs commit trzeba wywołać samemu.
Przykładowa sesja
Przkładowa sesja paczuj - gdy kilka diffów zostało podrzuconych przez osobę bez uprawnień. Wykonana aktualizacja źródeł, wyrzucone śmiecie, tylko diffy i źródła.
Pobieranie aktualizacji, prosze czekac... cvs update: Updating narzedzia cvs update: Updating narzedzia/android cvs update: Updating narzedzia/ikonki cvs update: Updating narzedzia/ikonki/punkty cvs update: Updating narzedzia/install cvs update: Updating narzedzia/lua cvs update: Updating narzedzia/misc cvs update: Updating narzedzia/netgen.src cvs update: Updating narzedzia/opisy cvs update: Updating narzedzia/ump-www cvs update: Updating narzedzia/ump-www/html cvs update: Updating narzedzia/ump-www/html/css cvs update: Updating narzedzia/ump-www/html/js cvs update: Updating narzedzia/ump-www/mapnik_style cvs update: Updating narzedzia/ump-www/mapnik_style/settings cvs update: Updating narzedzia/ump-www/mapnik_style/symbols cvs update: Updating narzedzia/ump-www/mapnik_style/symbols_me cvs update: Updating narzedzia/ump-www/mapnik_style/symbols_ump cvs update: Updating narzedzia/ump-www/mapnik_style/world_boundaries cvs update: Updating narzedzia/ump-www/ump2osm cvs update: Updating narzedzia/ump-www/ump2osm/polygon_cleaner cvs update: Updating narzedzia/ump-www/ump2osm/src cvs update: Updating narzedzia/ump-www/ump2osm/wojek cvs update: Updating narzedzia/widzimisie cvs update: dying gasps from cvs.ump.waw.pl unexpected cvs update: Updating UMP-radary cvs update: Updating UMP-radary/bmp cvs update: Updating UMP-radary/bmp/Kontrole Drogowe cvs update: Updating UMP-radary/bmp/Niebezpieczne Miejsca cvs update: Updating UMP-radary/bmp/Przejazdy Kolejowe cvs update: Updating UMP-radary/bmp/Slupki cvs update: Updating UMP-radary/mp3-Agatka cvs update: Updating UMP-radary/mp3-Agatka/Kontrole Drogowe cvs update: Updating UMP-radary/mp3-Agatka/Niebezpieczne Miejsca cvs update: Updating UMP-radary/mp3-Agatka/Przejazdy Kolejowe cvs update: Updating UMP-radary/mp3-Agatka/Slupki cvs update: Updating UMP-radary/mp3-Jacek cvs update: Updating UMP-radary/mp3-Jacek/Kontrole Drogowe cvs update: Updating UMP-radary/mp3-Jacek/Niebezpieczne Miejsca cvs update: Updating UMP-radary/mp3-Jacek/Przejazdy Kolejowe cvs update: Updating UMP-radary/mp3-Jacek/Slupki cvs update: Updating UMP-radary/src cvs update: Updating UMP-radary/wav-Agatka cvs update: Updating UMP-radary/wav-Agatka/Kontrole Drogowe cvs update: Updating UMP-radary/wav-Agatka/Niebezpieczne Miejsca cvs update: Updating UMP-radary/wav-Agatka/Przejazdy Kolejowe cvs update: Updating UMP-radary/wav-Jacek cvs update: Updating UMP-radary/wav-Jacek/Kontrole Drogowe cvs update: Updating UMP-radary/wav-Jacek/Niebezpieczne Miejsca cvs update: Updating UMP-radary/wav-Jacek/Przejazdy Kolejowe cvs update: Updating UMP-radary/wav-Jacek/Slupki cvs update: dying gasps from cvs.ump.waw.pl unexpected patching file `WARSZAWA.dzielnice.topo.txt' patching file `WARSZAWA.granice.txt' patching file `WARSZAWA.kolej.txt' patching file `WARSZAWA.obszary.txt' patching file `WARSZAWA.topo.txt' patching file `WARSZAWA.zielone.txt' patching file `WARSZAWA_REMBERTOW.budynki.txt' patching file `WARSZAWA_REMBERTOW.ulice.txt' patching file `WOLOMIN.drogi.txt' patching file `ZIELONKA.ulice.txt' patching file `POI-Warszawa.debug.pnt' patching file `POI-Warszawa.szkoly.pnt' To suchy przebieg (bez zmian) Jak cos sie nie powiodlo - wcisnij CTRL+C lub zamknij to okno Press any key to continue . . . patching file `WARSZAWA.dzielnice.topo.txt' patching file `WARSZAWA.granice.txt' patching file `WARSZAWA.kolej.txt' patching file `WARSZAWA.obszary.txt' patching file `WARSZAWA.topo.txt' patching file `WARSZAWA.zielone.txt' patching file `WARSZAWA_REMBERTOW.budynki.txt' patching file `WARSZAWA_REMBERTOW.ulice.txt' patching file `WOLOMIN.drogi.txt' patching file `ZIELONKA.ulice.txt' patching file `POI-Warszawa.debug.pnt' patching file `POI-Warszawa.szkoly.pnt' Zmiany zostaly wprowadzone Press any key to continue . . . Skladanie mapy. wersja przenosna - obowiazuje od 16.6.2013 Wybrano: MONTAZ Granice: tylko jednego obszaru (Warszawa). Montuje ulice i obszary... Montuje punkty z pnt... Dolaczam punkty radarow Gotowy do edycji! Uruchamianie "netgen2.bat" Warszawa Do zrobienia: - analiza podstawowa plik do analizy: Warszawa-wynik.mp === Analiza podstawowa --- analiza pliku .mp --- analiza siatki drog Statystyka dziury_w_routingu 163 slepe 3 za_bliskie 4 zle_postawione_bojki 9 bledy_routingu 1 przeciecia 1 Sprawdzam punkty adresowe Summary: Mix/Par/End: 0, Node: 0, eNode: 0, NoLabel: 0, Other: 0 Gotowe! wersja przenosna - obowiazuje od 16.6.2013 Wybrano: EDYCJA
Teraz następuje edycja - do czasu zamknięcia MapEdit okno się nie zmieni.
Po zamknięciu MapEdit następuje rozłożenie obszaru
Rozkladam wszystko... Zamieniam punkty... Sprawdzam zmiany w plikach... Przejrzyj WARSZAWA_REMBERTOW.budynki.txt.diff.txt Przejrzyj WARSZAWA_REMBERTOW.ulice.txt.diff.txt Przejrzyj WARSZAWA_WAWER.ulice.txt.diff.txt Plik GATSO_FP.pnt do obejrzenia (zmieniony albo nie ma zawartosci) Plik GATSO_FS.pnt do obejrzenia (zmieniony albo nie ma zawartosci) Plik GATSO_SU.pnt do obejrzenia (zmieniony albo nie ma zawartosci) Przejrzyj POI-Warszawa.debug.pnt.diff.pnt Plik safety_NM.pnt do obejrzenia (zmieniony albo nie ma zawartosci) Plik safety_PK.pnt do obejrzenia (zmieniony albo nie ma zawartosci) Plik safety_slupki.pnt do obejrzenia (zmieniony albo nie ma zawartosci) ############################################################################# Wykryto nowe diffy po przebiegu!!! Uruchom paczuj jeszcze raz
Efekt rozłożenia:
- 4 diffy WARSZAWA_REMBERTOW.budynki.txt.diff.txt, WARSZAWA_REMBERTOW.ulice.txt.diff.txt, WARSZAWA_WAWER.ulice.txt.diff.txt, POI-Warszawa.debug.pnt.diff.pnt
- 4 pliki źródłowe - WARSZAWA_REMBERTOW.budynki.txt, WARSZAWA_REMBERTOW.ulice.txt, WARSZAWA_WAWER.ulice.txt, POI-Warszawa.debug.pnt
Komunikaty o plikach słupków/radarów są tylko informacją o czymś, co nie uległo zmianie. Na koniec wyraźna sugestia, by uruchomić ponownie paczuj, bo są diffy po zamknięciu MapEdit (poprawki błędów, uproszczenia budynków wykonane przez MapEdit). Ponowne uruchomienie - aplikacja powstałych diffów - przejrzenie w MapEdit, zamknięcie MapEdit już bez zmian (bo jest ok) i wynik działania paczuj, gdy nic się nie zmienia:
Rozkladam wszystko... Zamieniam punkty... Sprawdzam zmiany w plikach... Plik GATSO_FP.pnt do obejrzenia (zmieniony albo nie ma zawartosci) Plik GATSO_FS.pnt do obejrzenia (zmieniony albo nie ma zawartosci) Plik GATSO_SU.pnt do obejrzenia (zmieniony albo nie ma zawartosci) Plik safety_NM.pnt do obejrzenia (zmieniony albo nie ma zawartosci) Plik safety_PK.pnt do obejrzenia (zmieniony albo nie ma zawartosci) Plik safety_slupki.pnt do obejrzenia (zmieniony albo nie ma zawartosci) ############################################################################# Nie wykryto dodatkowych zmian po przebiegu Zostanie uruchominy cvs commit, zamknij to okno je┐eli tego NIE chcesz Press any key to continue . . . cvs commit: Examining src
W wersji tekstowej cvs następuje otwarcie okna edytora, wpisujemy komentarz do sesji, zamykamy okno zapisując komentarz i dane lecą na serwer o ile nie ma konfliktu.
Błędy i ostrzeżenia podczas używania paczuj.bat
Przykład błędów podczas użycia paczuj:
patching file `WARSZAWA.kolej.txt' patching file `WARSZAWA.obszary.txt' patching file `WARSZAWA.szlaki.topo.txt' Hunk #1 FAILED at 2329. 1 out of 1 hunk FAILED -- saving rejects to WARSZAWA.szlaki.topo.txt.rej patching file `WARSZAWA.zakazy.txt' patching file `WARSZAWA.zielone.txt' Hunk #2 succeeded at 5371 (offset -11 lines). Hunk #3 succeeded at 12029 (offset 14 lines). patching file `WARSZAWA_REMBERTOW.ulice.txt' patching file `WOLOMIN.drogi.txt' patching file `POI-Warszawa.bankomaty.pnt' patching file `POI-Warszawa.debug.pnt' patching file `POI-Warszawa.zabytki.pnt'
Błędy podczas paczuj.bat mogą pojawić się w następujących sytuacjach:
- ktoś w tym samym momencie rysuje w tym samym obszarze i edytuje te same obiekty
- wrzucając czyjeś diffy ktoś dokonał zmian w tym samym obszarze już po wygenerowaniu diffów
- diffy mają błędny format - ktoś ręcznie coś poprawiał dodając linię
Błędy/ostrzeżenia z którymi się spotkasz to:
Hunk #<liczba1> succeeded at <liczba2> (offset <liczba3> lines)
Diff został dodany, jednak obiekt liczba1 z pewnym przesunięciem liczba3 wynikającym z wcześniejszych zmian innych edytorów wylądował od linii liczba2. Czyli nie został dopisany w linii N, ale N+Y (lub -Y).
W większości przypadków takie przesuniecie jest poprawne, jednak może się zdarzyć że będzie błędne. W szczególności kiedy diffy zwierają zmianę typu dróg bez zmiany jej przebiegu.
Hunk #<liczba1> FAILED at <liczba2>. 1 out of 1 hunk FAILED -- saving rejects to WARSZAWA.szlaki.topo.txt.rej
Diff nie został dodany - CVS stwierdził, że zmiana ma już miejsce lub nie może być zaaplikowana, bo nie może odnaleźć obiektu i miejsca, gdzie trzeba ją zaaplikować - odrzucone zmiany są zapisywane w plikach rej w katalogu źródeł. Do takiego błędu dochodzi najczęściej w poniższych przypadkach:
- mógłby być konflikt, bo zmiana dotyczy zmienianego przez inną osobę obiektu
- obiekt nie może zostać dopisany na końcu pliku, bo koniec pliku się zmienił i narzędzia nie mogą podjąć decyzji, gdzie zaaplikować zmianę
- nastąpiła automatyczna zmiana wykonana przez narzędzia u dwóch różnych osób - taki konflikt, ale automatyczny, np. dwie osoby edytują obszar, gdzie ktoś trzeci dorzucał wcześniej ręcznie coś do POI-OBSZAR-bankomaty.pnt na koniec pliku, ale nie dał znaku końca linii po ostatniej linii; u obu "obecnych" edytorów mapa po zmontowaniu i zdemontowaniu wyda z siebie zmianę w POI-OBSZAR.bankomaty.pnt w postaci nowej linii - u jednego z edytorów zmiana się powiedzie, u drugiego nie - odnotuje ten właśnie błąd.
Jeżeli ktoś inny wykonał zmianę i paczuj odnotuje nieaktualność źródeł - otrzymamy komunikat jak poniżej (ostatnia faza):
cvs commit: Examining src cvs commit: Up-to-date check failed for `src/WARSZAWA.zakazy.txt' cvs [commit aborted]: correct above errors first! cvs commit: dying gasps from cvs.ump.waw.pl unexpected
Należy wykonać aktualizację źródeł, rozwiązać ewentualne konflikty i zapisać zmiany na serwerze.