2008-10-10

SVN

wgranie pakietów
instalacja cvs2svn
make install
lub
apt-get install apache2
apt-get install subversion
apt-get install libapache2-svn
dodanie grupy svn
dodanie usera na którym jest apache do grupy svn
stworzenie repozytorium
zmiana grupy plików i katalogów repozytorium na grupę svn i uprawnienia 770

konfiguracja w pliku httpd.conf:
LoadModule dav_module /usr/lib/httpd/modules/mod_dav.so
LoadModule dav_svn_module /usr/lib/httpd/modules/mod_dav_svn.so
LoadModule authz_svn_module /usr/lib/httpd/modules/mod_authz_svn.so

<Location /svn>
SetOutputFilter DEFLATE
SetInputFilter DEFLATE
DAV svn
SVNParentPath /u02/svn_home
AuthType Basic
AuthName "Subversion repository"
AuthUserFile /u01/apache2/conf/[password_file]
Require valid-user
#SVNIndexXSLT "/svnindex.xsl"
AuthzSVNAccessFile /u01/apache2/conf/[role_file]
SVNPathAuthz off
<Location>


dopisywanie userów:
htpasswd -mb [password_file] user password

konfiguracja pliku z rolami [role_file]:
[groups]
grupa1 = user1,user2
grupa2 = user2,user3
[repozytorium:/[katalog]
@grupa1 = rw
@grupa2 = r
user3 = rw


migracja Z CVS DO SVN
cvs2svn --encoding cp1250 -s [sciezka_projekt_svn] [sciezka_projekt_cvs]
cvs2svn --encoding cp1250 --dumpfile [sciezka_plik_dump] [sciezka_projekt_cvs]

nowe REPOZYTORIUM
svnadmin create /[repository_path]

import z dumpa do REPOZYTORIUM
cat [dumpfile_path] | svnadmin load [sciezka_projekt_svn] --działa
svnadmin load [sciezka_projekt_svn] [dumpfile_path] --miałem problemy

zmienić prawa do repozytorium
w przypadku błędu:
m:human-readable errcode="13" Could not open the requested SVN filesystem /m:human readable
brak jest uprawnień do czytania przez apache



sprawdzenie LOCKS
svnadmin lslocks /[repository_path]

usunięcie LOCKS
svn unlock --force

nowy BRANCH/TAG z już istniejącego
svn copy -r [ver] http://[trunk_path] http://[new_trunk_path] -m "[komentarz]"

nowy KATALOG
svn mkdir http://[trunk_path]/[new_dir]

dodanie KATALOGU z kompa do TRUNKA
svn import [local_dir_path] http://[trunk_path]/[new_dir]

usuwanie KATALOGU (zawsze można odtworzyć)
svn delete http://[trunk_path]/[dir]

ściągnięcie określonego nr rewizji
svn checkout -r [rewizja] http://[repo_path]
svn checkout http://[trunk_path]@[rev]9814

sprawdzenie z jakiej rewizji został zbudowany TAG:
svn log -v --stop-on-copy http://[tag_path]

sprawdzenie wersji na serwerze
svn status -u

find . -perm +2000 -exec chmod 2775 {} \;



BACKUP
svnadmin hotcopy /[repository_path] /[backup_dir_path]

DUMP przepisuje repozytorium do jednego pliku z wszystkimi rewizjami
svnadmin dump /[repository_path] [-r LOWER[:UPPER]]> [dumpfile]
#rewizje od 100 do 200
svnadmin dump /[repository_path] -r 100:200 > [dumpfile]

wrzuca z dumpa tylko pliki określone w path
svndumpfilter include [dumpfile] [repository_path] > [dumpfile_after]

wrzuca z dumpa wszystkie pliki za wyj╣tkiem wykluczonych w path
svndumpfilter exclude [dumpfile] [repository_path] > [dumpfile_after]

wciągnięcie z utworzeniem nowego projektu
svnadmin create calc; svnadmin load calc




VIM

VIM

/usr/share/vim/vim63/colors color schema files
:color [col] #change color schema
shift + v #check block by row
ctrl + v #check block
y #copy block to buffer
d #cut block to buffer
p #paste block
> #move block right
< #move block left

Basic commands

a | i #edit mode
ESC #back to command mode

Command mode

:r [file] #open file
:w #write file
:q #quit
:wq lub zz #write and quit
:set mouse=a #use mouse
^u-------------- one page up
--------k------- one row up
0----h---l-----$ row begin,one char left,one char right,end row
--------j------- one row down
^d-------------- one down
1G #firs row of file
crt G #last row of file
nG #go to line nr n

Edit text

o #go to edit mode below
O #go to edit mode above
x #delete char below cursor
dw #delete from cursor to end of word
dd #delete row
D #delete from cursor to end of row
nx #delete n char from cursor to right
ndd #delete n rows
dG #delete from cursor to end of file
d1G #delete from cursor to begin of file
d$ #delete from cursor to end of row
dn$ #delete from cursor to n row
u #undo
U #undo from changes of current line
:e! #przywołanie stanu sprzed poprzedniego zapisu do pliku.
rc #zastępuje znak pod kursorem na znak c.
R #tryb edycji z nadpisywaniem.
:e ++enc=[encoding] #zmiana kodowania w trybie edycji
:w ++enc=latin2 [nowy_plik] #zmiana kodowania i zapis do pliku

Kopiowanie i przenoszenie tekstu

yy lub Y #kopiowanie linii do bufora.
nyy lub nY #kopiowanie n linii do bufora.
yw #kopiowanie słowa do bufora.
nyw #kopiowanie n słów do bufora.
y$ #kopiowanie do bufora od kursora do końca linii.
"ayy lub aY #kopiowanie linii do bufora o nazwie a.
"byw #kopiowanie słowa do bufora o nazwie b.
"bynw #kopiowanie n wyrazów do bufora o nazwie b.
:1,5w [buf] #kopiowanie lini od 1 do 5 do zbioru o nazwie buf
:e [buf] #załadowanie zbioru buf do bufora
p #wklejenie zawartości bufora (bez nazwy) na prawo od kursora.
np jak wyżej ale n razy.
P #wklejenie zawartości bufora (bez nazwy) na lewo od kursora.
"ap #wklejenie zawartości bufora o nazwie a po prawej stronie od kursora.
"bnP #n kopii po lewej stronie od kursora z bufora o nazwie b.

Szukanie w tekście i zastępowanie

fc #znajduje następny znak c i ustawia kursor po prawej.
Fc #znajduje następny znak c i ustawia kursor po lewej.
/str #szuka ciągu znaków str od kursora w prawo i do końca tekstu.
?str #jak wyżej ale w lewo i do początku tekstu.

Ustawienia:

:retab #zmiana tab na space
:set list|nolist #ukryte znaki
:set hlsearch|nohlsearch #wyłączenie podświetlania znalezionego ciągu
:set number|nonumber #numerowanie wierszy
:syntax on|off #podświetlanie składni
:set wrap #zawijanie wierszy
:set ic #wyszukiwanie ignore case
:set mouse=a #włączenie myszy
:set noet ts=[nr] sw=[nr] #rozmiar przesunięcia po wciścięciu ts-tabspace lub sw-shiftwidth,przesunięciu>
:set expandtab #zamiana tab na space
:set incsearch #wyszukiewanie już podczas wpisywania
:set showmode #pokazywanie trybu
:set showcmd #pokazywanie poleceń1G
:map #sprawdzenie mapowania klawiszy
ctrl+p #w trybie wprowadzanie dopełnianie składni
:set autoindent #tworzenie wcięcia przy nowej lini
:set smartindent #tworzenie inteligentnych wcięć
:set foldmethod=indent #chowanie tekstu na podstawie wcięć, zo-otwieranie,zc-zamykanie
:set paste #tryb do wklejania

Okna:

:split [file] #otwarcie file w nowym oknie
:vsp [file] #j.w
ctrl+w #przechodzenie między oknami
ctrl+w + #zwiększenie okna
ctrl+w - #zmniejszenie okna
ctrl+s #duplikat okna
ctrl+v #j.w.
ctrl+c #zamknięcie bieżącego okna
ctrl+o #zamknięcie pozostałych okien
ctrl+p #przejście do poprzedniego okna

Przykłady:

:map #2 :w - przypisuje klawiszowi F2 funkcję zapisywania
:1,5 s/word1/word2 #zmiana w liniach od 1 do 5 ciągu word1 na word2
:2,$norm i* #wstaw * na pocztku od lini 2 do ostatniej
:%norm A6 #wstaw 6 na końcu każdej lini
:$norm 6o #dodaj 6 pustych lini
:%norm Rwyraz #nadpisz pierwsze znaki każdej lini slowem wyraz
:% s/"//g #wywalenie cudzysłowia w całej lini - g, dla wszystkich wierszy - %
:g/^#/d #usuwanie wszystkich lini z komentarzem strona z przykładami