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 interesującego nas pliku.

Będąc w UMP-PL-Obszar/src wpisujemy w pasku cmd

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