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ć

Czy bym zauważył szybko ten niestyk, bez paczuj.bat lub uniksowego "make dead"? Pewnie nie. Zbliżenie 3m.
Czy bym zauważył szybko ten niestyk, bez paczuj.bat lub uniksowego "make dead"? Pewnie nie. Zbliżenie 3m.

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)

  1. Uaktualnia narzędzia i OBSZAR
  2. Tworzy jeden plik wszystko.patch
  3. 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.
  4. Aplikuje pliki diff (na tym etapie zmiany są już w UMP-OBSZAR\src)
  5. Montuje mapę dla mapedita i sprawdza błędy
  6. 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)
  7. 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.
    1. 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.
    2. Jeżeli nie ma zmian i nie ma konfliktów to cvs commit spowoduje zapisanie danych na serwerze.
    3. Jeżeli są zmiany, czyli są pliki diff to paczuj kończy pracę i musisz go ponownie uruchomić.
  8. 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.