Kakvo e tova pach
Pach(patch) idva ot angliiskata duma patch
- oznachavashta
krupka,
a kato glagol- skurpvam, izglazhdam. V kompyuturniia sviat
pachovete se svurzvat
s korektsii na dadena programa, obiknoveno s tsel da
raboti tia po-dobre
ili da i se dobaviat novi vuzmozhnosti. Pachovete sa i
edno mnogo efikasno
reshenie, predlozheno ot suzdatelia na Perl - Lari Uol, za
prenasiane samo
na neobhodimata chast nuzhna za korigiraneto na dadena
programa, vmesto tsialata
nova versiia na programata.
Kak da si napravite sami "krupka"
Nuzhno e edinstveno da imate programata "diff" za
Unix/Linux ili neina
adaptirana versiia za konkretnata operatsionna sistema, koiato
izpolzvate.
TSelta na programata "diff" e da pokazva razlichieto mezhdu
dva faila ili
dve
direktorii. Neka vidim kak raboti programata pri
sravnenieto na dva faila.
Za nashiiat primer shte izpolzvame failut old.pl sus
slednoto sudurzhanie
#!/usr/local/perl
print "Zdrasti Fenove";
i failut new.pl, koito izglezhda taka
#!/usr/local/perl
print "Zdrasti linux-bg Fenove";
Startiraneto na komandata
diff old.pl new.pl
shte izvede sledniiat rezultat ne ekrana
3c3
< print "Zdrasti Fenove";
\ No newline at end of file
---
> print "Zdrasti linux-bg Fenove";
\ No newline at end of file
Rezultatut ot operatsiiata mozhe da ima niakolko formata, ot
koito vazhni
sa context i unified. Zadavaneto na tova, koi
format da izpolzvate
stava posredstvom optsiiata -c za context i -u za unified.
Tezi optsii davat
informatsiia za failovete s koito boravim. Ne znam, koi ot
dvata formata
e za predpochitane, az lichno izpolzvam unified no tova edva
li e ot goliamo
znachenie.
Za da zapishete promenite e nuzhno da prenasochite izhoda
kum fail. Tova
stava po sledniia nachin
diff -u old.pl new.pl > test.patch
Kudeto failut test.patch predstavliava
krupkata, koiato
e neobhodima za da se "popravi" failut old.pl do
sustoianieto na
new.pl.
Po tozi nachin vie napravihte vashata purva "krupka".
Osven da se sravniavat failove mozhe da se sravniava i
sudurzhanieto na
failovete v dve direktorii, kakto i eventualno i tehnite
pod-direktorii.
Ako ima dve pod-direktorii na direktoriiata src, s
imena new.dir i
old.dir.
+--src/
+--new.dir/
+--old.dir/
Za da sravnim tiahnoto sudurzhanie e neobhodimo da se
napishe slednata
komanda(ot src direktoriiata)
diff -Naur news.dir old.dir
Zabelezhete, che pri zadavaneto na direktoriite ne se
pishat "/". Optsiiata
"r" instruktira komandata diff da sravni i sudurzhanieto na
pod-direktoriite
na dvete direktorii. S optsiiata "a" ukazvate, che failovete
koito sravniavate
shte se tretirat kato tekstovi failove, dori i da ne sa
takiva. "N" optsiiata
instruktira diff, kogato sravniava fail ot
ednata direktoriia
s fail, koito ne prisustva vuv vtorata direktoriia, da smiata
nesushtestvuvashiia
fail za sushtestvuvasht, samo che s nuleva dulzhina. V zavisimost
ot oblastta
na promenite sami reshavate dali da pravite pachove na tseli
direktorii ili
samo na daden fail.
CHesto se nalaga da izklyuchvate niakoi, ili niakolko faila
ot sravnenieto.
Tova stava s optsiiata -x. Ako iskate da izklyuchite ot
sravnenito failove
s razshirenie .txt e nuzhno da napishete
diff -x *.txt -Naur news.dir old.dir
Po niakoga failovete, koito sravniavate, mogat da
imat neznachitelni
razlichiia v broia na intervalite naprimer. Za da ne se
vzemat tezi
promeni v predvid izpolzvaite optsiiata --ignore-brackets.
Analogichno i za
ignorirane na razlichiia mezhdu malki i golemi bukvi se
izpolzva optsiiata --ignore-case.
Tezi naputstviia sa vi napulno dostatuchni za da pravite
"krupki". Ako
vse pak iskate na nauchite neshto poveche, prochetete
rukovostvoto na diff komandata.
Za novatsite -- stava s komadata komandata
man diff
Kak da prilozhite "krupkata"
Ne e dostatuchno da znaete samo kak da
napravite krupka.
Vazhno e da znete i kak da ia prilozhite. Tova stava s
komandata "patch".
Nai-chesto komandata se izpolzva po sledniia nachin
patch -p0 < test.patch
kudeto test.patch e imeto na veche suzdadenenata
krupka.
Edinstvenata optsiia, koiato izpolzvahme po-gore e
-p[nomer]. Za kakvo
sluzhi tia? CHesto kogato sravniavate failove te se zapisvat s
pulnite si imena.
Razgledaite edna krupka i shte vidite neshto podobno:
++ /usr/local/test/src/old.dir/file1.pl
-- /usr/local/test/src/new.dir/file1.pl
Ako iskate da se izpolva imeto na programata ot purvata
naklonena cherta
"/" do kraia izpolzvaite -p0. Ako iskate ot purvata
naklonena cherta do kraia
pishete -p1 rezultatut ot koeto e
local/test/src/old.dir/file1.pl. Ako iskate
samoto ime na faila, bez putia, pishete -p bez parametri. V
nashiia sluchai
rezultata e file1.pl.
Kogato prilagate krupkata, mozhe da kazhete na programata
da zapazva "zakurpenite"
failove. Tova s stava s optsiiata --backup ili -b. Mozhe sushto
taka da izbere
s kakvo razshirenie da se zapisvat kopiiata na tezi failove.
Stava s optsiiata
--suffix=.bak, ako primerno iskate razshirenieto da e
.bak.
Programata patch sama se opitva da razbere koi format
ste izpolzvali
za suzdavane na vashata krupka. Mozhete, ako iskate, izrichno
da posochite
formata: -c za context ili -u za unified.
Poveche informatsiia za patch, kakto i za dopulnitelni
optsii
man patch
Ako ste procheli vsichko do tuk vnimatelno ima goliama
veroiatnost da zapochnete
skoro da pravite i prilagate sobstveni krupki.
Uspeh!