CVS
Z UMP
Spis treści |
Pobieranie i uaktualnianie źródeł z CVS
Początki edycji UMP-a można zacząć z konta guest - pobierając źródła, nanosząc zmiany, a następnie wysyłając diff-y, czyli pliki różnicowe na FlySpray. CVS zapisuje sobie informacje o nazwie użytkownika i jego hasło w pliku CVS/Root przy pierwszym użyciu danego archiwum. Wystarczy więc podać tylko cvs login, a CVS pokaże nam:
Logging in to :pserver:guest@cvs.ump.waw.pl:2401/home/cvsroot
a następnie cvs get lub cvs update dla ściągnięcia/uaktualnienia całości lub poszczególnych katalogów.
Aby po jakimś czasie zmienić dostęp typu guest na własne konto z uprawnieniami do zapisu wykonaj:
cvs -d :pserver:USERNAME@cvs.ump.waw.pl:/home/cvsroot/ login
zastępując oczywiście USERNAME własną nazwą użytkownika. Jeśli nie pomoże, trzeba 1) ręcznie poprawić wpisy we wszystkich plikach Root, albo 2) użyć gotowego skryptu, który to zrobi we wszystkich plikach, albo 3) wykasować poszczególne katalogi i ściągnąć je na nowo. Więcej na ten temat na stronie Edycja
CVS - przydatne komendy
Podstawy
Sprawdzenie kto ostatnio działał
cvs history -cap UMP-Siedlce
Kto co dłubał w pliku
cvs log plik | more
Co się zmieniło w pliku w ciągu ostatnich dwóch godzin
cvs diff -D "-2 hours" plik
Co sie zmieniło w pliku od ostatniego release, cofnij poprawki zrobione miesiąc temu
cvs diff -r release [-r release-poprzedni] plik > zmiany patch plik zmiany
Jak przywrócić plik do stanu z wczoraj?
cvs update -p -r 1.wersjaOK PLIK.zepsuty.txt > akuku.txt
Denerwuje mnie w windows ten wyskakujący notatnik (albo inny edytor w uniksie)
cvs commit -m "Dodalem troche uliczek na Ochocie"
Dodanie nowego pliku
Jak dodać: stwórz pusty plik (o nazwie zgodnej z konwencją), wydaj polecenia cvs add nazwapliku; cvs commit nazwapliku (plik binarny: dodaj -kb). Wrzucaj zawartość, commituj.
Jak usunąć: skasuj plik z dysku, wydaj polecenia cvs remove nazwapliku; cvs commit. Użytkownik nie może kasować katalogów.
Zmiana nazwy: żeby nie stracić historii zmian w pliku, poproś na liście ump-devel@
Znalezienie konkretnej zmiany
- Żeby znaleźć kto coś konkretnego zmienił, na przykład w Zielonej było Lilli Wenedy, a zostało Wenedy:
cvs annotate UMP-GorzowWlkp/src/ZIELONA_GORA.ulice.txt | grep Wenedy
albo:
cvs annotate UMP-GorzowWlkp/src/ZIELONA_GORA.ulice.txt | less
i oglądamy:
1.5 (UserX 03-Jan-08): [POLYLINE] 1.5 (UserX 03-Jan-08): Type=0x6 1.58 (UserX 05-Nov-09): Label=Wenedy 1.5 (UserX 03-Jan-08): EndLevel=1 1.5 (UserX 03-Jan-08): DirIndicator=1 1.60 (UserX 06-Nov-09): Data0=(51.92639,15.51941),(51.92633,15.5...
więc wiadomo dzięki temu, które wersje sobie dokładniej obejrzeć.
ALE.... na przykład annotate WROCLAW.ulice.txt pokazuje tylko zmiany od 1.302 do 1.610, a wcześniejszych już nie. Nie wiem czy to błąd konfiguracji CVS-a, czy taki ficzer. Można obejrzeć starsze robiąc na przykład:
cvs annotate -D "1 year ago" WROCLAW.ulice.txt | less
wtedy można np. złapać 1.1-1.186
- Istnieje też polecenie pozwalające wygenerować plik .txt zawierający pełną informację o datach i autorach aktualnego stanu pliku.
Będąc w UMP-PL-Obszar/src wpisujemy w pasku cmd.exe
W oknie piszemy:
cvs.exe annotate nazwapliku > annotate.txt
Nowo utworzony plik annotate.txt znajdziemy w podfolderze /src danego obszaru.
Wyciągnięcie źródeł z konkretnej daty
cvs checkout -D "data"
wyciągnie źródła z zadanej daty. Najlepiej zrobić to w jakimś osobnym katalogu, czyli:
mkdir /tmp/aaa cd /tmp/aaa cvs checkout -D "7 Dec 2009" UMP-JeleniaGora
analogicznie -D w innych przypadkach:
cvs diff -D yesterday PLIK
znajdzie poprawki licząc od wczoraj, żeby nie szukać konkretnych numerów wersji.
Odkręcenie:
cvs up -A
Historia zmian
Komenda 'cvs history':
cvs history -l - historia ostatnich swoich zmian cvs history -l -a - wszystkich userów
Przy czym na umpowym CVSie coś dziwnie to działa (np. pokazuje rzeczy z 2007/2008, ale także jakieś pojedyncze z 10.2009) - być może historia nie jest w pełni zbierana...
Wylistowanie zawartości katalogu, także z "martwymi" plikami
Komendy 'cvs ls', a także 'rls' i 'dir'
Najlepiej być we właściwym katalogu, bo "'ls'" listuje wg lokalnie trzymanego CVS/Entries.
cvs ls -l -d UMP-JeleniaGora/src ---- 2009-12-04 14:12:18 +0100 1.14 BOLESLAWIEC.ulice.txt ---- 2009-07-21 20:10:25 +0200 1.22 CHOJNOW.ulice.txt ---- 2009-12-08 13:27:51 +0100 1.9 CIEPLICE.ulice.txt ---- 2009-12-08 13:27:51 +0100 1.79 GLOGOW.drogi.txt ---- 2008-07-04 13:52:20 +0200 1.11 GLOGOW.granice.txt ---- 2009-12-09 21:24:50 +0100 1.5 dead GLOGOW.inne.txt ---- 2009-12-09 21:24:50 +0100 1.4 dead GLOGOW.kolej.txt ---- 2008-04-27 18:27:28 +0200 1.3 GLOGOW.miasta.txt
czyli także "martwe" wersje (pliki skasowane) oraz numerki bieżących
Skasowane pliki można również wylistować w taki sposób:
cvs -q rlog -sdead -SNR UMP-PL-OBSZAR/src/Attic
Przywrócenie poprzedniej wersji
(dla zaawansowanych)
Z każdej maszyny klienckiej:
cvs up -j wersja_aktualna -j wersja_poprzednia inne.drogi.txt
przywraca wersję poprzednią, którą można (poprawić i) wysłać - ale to zostawia wpis w historii w stylu: wersja A dodaje 35 linii, wersja A+n kasuje te same 35 linii.
Z poziomu serwera:
cvs -d /home/cvsroot admin -o1.2:1.3 PLIK.zczymś.txt
zostaną bez śladów usunięte wersje 2 i 3, nawet jeśli 3 jest ostatnią. Jeśli 1.2 była popsuta, w 1.3 były jakieś inne zmiany, i 1.4 to odkręcenie 1.2, to zapis wersji powinien być
-o1.2::1.4