Ito ang command patcher na maaaring patakbuhin sa OnWorks na libreng hosting provider gamit ang isa sa aming maramihang libreng online na workstation gaya ng Ubuntu Online, Fedora Online, Windows online emulator o MAC OS online emulator
PROGRAMA:
NAME
patcher - isang patch maintenance tool
SINOPSIS
tagapatpat [-n ] [ ]
I-edit bilang bahagi ng patch .
patcher -r I-refresh ang kasalukuyang patch.
patcher [-f] -b Ibalik ang isang patch sa nauna.
tagatagpi [-f] -b
Bumalik sa serye hanggang sa tayo ay nasa .
tagatagpi [-f] -b
Bumalik ka mga patch sa serye.
patcher -a Ilapat ang susunod na patch sa serye.
patcher -a Ilapat ang lahat ng mga patch mula sa serye hanggang sa umabot kami sa .
patcher -a Mag-apply sa susunod mga patch mula sa serye.
patcher -n [-p ] -i
Mag-import ng panlabas na diff file sa patch . Maghubad mga antas
mula sa mga pangalan ng direktoryo. Pakitandaan na pinapayagan ng patch ang '-p1', ngunit kami
'-p 1' lamang.
tagatagpi [-f] [-n ] [-p ] -i
Mag-import ng panlabas na diff file sa patch . Maghubad mga antas
mula sa mga pangalan ng direktoryo. Pakitandaan na pinapayagan ng patch ang '-p1', ngunit kami
'-p 1' lamang.
CONCEPT
Ang Patcher ay isang perl script na ginagamit ko para sa pamamahala ng mga patch. Ito ay medyo malakas, madaling gawin
gamitin, at mabilis.
Sinusubaybayan ni Patcher kung aling mga file ang babaguhin mo. Maaari itong makabuo ng mga patch mula sa iyong
mga pagbabago, hindi mo na kailangang pangasiwaan ang diff tool nang manu-mano.
Maaari kang magkaroon ng higit sa isang talaan ng mga pagbabago sa file, tinatawag namin itong isang patch. Ang isang patch ay
isang bagay na ang magtagpi(1) maaaring ilapat ang utos.
Ang mga patch ay maaaring isalansan sa serye, tinutukoy nila ang pagkakasunud-sunod na dapat nilang ilapat. Patcher
nagpapanatili ng impormasyon ng serye pati na rin ang impormasyon kung aling mga patch ang inilapat at kung alin
hindi.
DESCRIPTION
Mamaya magkakaroon tayo ng walkthrought, ngunit hayaan mo muna akong ipaliwanag ang mga pangunahing mode ng operasyon ng
patcher:
Pag-edit file
Kapag tinawagan mo ang patcher na may filename, gagawa ang patch ng backup ng file na ito (kung ang file
umiiral). Ngayon ay maaari kang lumikha o baguhin ang file. Mamaya maaari mong hilingin kay patcher na lumikha ng isang
pinag-isang pagkakaiba sa lahat ng iyong mga pagbabago.
Paglikha pinag-isa naiiba
Tawagan lang ang "patcher -r" at makakakuha ka ng pinag-isang diff ng lahat ng iyong mga karagdagan, pagbabago
at mga pagtanggal. Ang diff ay maiimbak sa .patches/ .patch. Ito ay nasa isang anyo na
nagbibigay-daan sa direktang aplikasyon sa pamamagitan ng magtagpi(1) o, siyempre, sa pamamagitan ng "patcher -i".
Sa tuwing gagawin mo ang "patcher -r" ang iyong .patches/ Na-refresh ang .patch file.
likod Palabas a magtagpi
Upang bawiin ang iyong mga pagbabago at pumunta sa nakaraang bersyon, ilagay lamang ang "patcher -b". Patcher
ay titiyakin na hindi mo mawawala ang iyong mga pagbabago sa pamamagitan ng paghiling sa iyong gumawa ng diff if
may nagbago mula noong huling pag-refresh. Maaari mong gamitin ang -f (o --force) patcher upang pumunta
bumalik pa rin.
Maaari kang mag-back out ng higit sa isang patch sa pamamagitan ng alinman sa pagtukoy ng isang numero ng pangalan ng patch pagkatapos -b.
Mag-apply muli a magtagpi
Gamit ang "patcher -n -a" ang isa ay maaaring maglapat ng umiiral nang pinamamahalaang patch. A
Ang pinamamahalaang patch ay isang patch na nakaimbak na sa direktoryo ng .patches at nabanggit
sa .patches/series file. Sinusuri ng Patcher kung ilalapat ang patch nang walang problema at
inilalapat ito. Kung tatanggihan ang patch, maaari mong gamitin ang -f (o --force) upang ilapat ang patch
pa rin.
Maaari kang maglapat ng higit sa isang patch sa pamamagitan ng alinman sa pagtukoy ng numero ng pangalan ng patch pagkatapos -a.
Ini-import ang panlabas patch
Minsan mayroon kang panlabas na patch. Iyan ang kabaligtaran ng isang pinamamahalaang patch, ang patch ay
hindi nakaimbak sa direktoryo ng .patches. Sa pamamagitan ng pag-import nito, ito ay magiging isang pinamamahalaang patch.
I-import ang patch gamit lamang ang -i . Maaari mong gamitin ang -p upang tukuyin ang direktoryo
antas, katulad ng -p opsyon ng magtagpi(1). Ngunit mangyaring tandaan na kailangan namin ng
puwang sa pagitan ng -p at ng numero.
Karaniwang malinis na mga patch lamang ang mai-import. Upang mag-import ng patch na lumilikha ng mga pagtanggi sa paggamit
-f (o --force). Makakakita ka ng isang listahan ng mga file kung saan ang patch ay hindi nailapat nang malinis, ayusin ang
mano-manong mga problema.
Mamaya maaari mong gamitin ang "patcher -r" upang lumikha ng malinis na patch.
INSTALL
Maglagay lamang ng patcher sa isang lugar sa iyong landas. Iyon lang.
Para sa bawat proyekto, ang Patcher ay nangangailangan ng isang espesyal na direktoryo na tinatawag na ".patches". Ito ay
hanapin ang direktoryo na ito. Kung wala ito, awtomatiko itong nilikha ng patcher.
MGA INTERNAL
Ang lahat ng trabaho ay nangyayari sa isang puno ng direktoryo. Ang lahat ng mga utos ay hinihingi sa loob ng ugat ng
ang punong iyon (TODO: maaari at dapat itong baguhin). Pinamamahalaan ni Patcher ang isang "stack" ng mga patch.
Ang bawat patch ay isang changeset laban sa base tree kasama ang mga naunang patch.
Ang lahat ng mga patch ay nakalista, sa pagkakasunud-sunod, sa file na ".patches/series". Nagdagdag si Patcher ng mga patch sa
ang file na ito, ngunit hindi kailanman nagtatanggal ng mga entry. Maaari mong i-edit ang file na ito gamit ang isang text editor, ngunit
mangyaring gawin lamang ito kung ang patch na tinanggal mo ay kasalukuyang hindi inilapat.
Ang anumang kasalukuyang inilapat na mga patch ay nakalista sa file na ".patches/applied". Pinamamahalaan ng patcher
ang file na ito, hindi mo na kailangang i-edit nang manu-mano ang file na ito.
Ang bawat patch ay nakakaapekto sa isang bilang ng mga file sa puno. Ang mga file na ito ay nakalista sa isang listahan ng file
pinangalanang ".patches/*.files". Si Patcher ang namamahala sa kanila. Kapag nag-back out ka ng isang patch, gagawin ng file na ito
tinanggal. O, sa madaling salita, ang file na ito ay umiiral lamang para sa mga inilapat na patch. Ito ay ginagamit lamang ng
"patcher -r".
Ang mga patch ay inilalagay sa ".patches/*.patch" na mga file. Palagi silang pinag-isang diff na may -p1
bilang patchlevel. Maaari mong kopyahin pagkatapos kahit saan, ang magtagpi(1) babasahin ng utility ang mga ito nang wala
problema.
Maaari kang maglagay ng mga paglalarawan para sa mga patch sa mga file na pinangalanang ".patches/*.txt".
Kaya para sa isang partikular na patch na "my-first-patch" ang mga sumusunod ay iiral:
- Isang entry na "my-first-patch.patch" sa ".patches/series".
- Isang entry na "my-first-patch" sa ".patches/applied" (kung ito ay kasalukuyang inilapat)
- Isang file na ".patches/my-first-patch.files" na naglalaman ng mga pangalan ng mga file na aking-
binago, idinaragdag o inaalis ng unang patch
- Isang file na ".patches/my-first-patch.patch", na kung saan ay ang context diff, karaniwang ang pangunahing
output ng patcher.
- Opsyonal ang isang file na ".patches/my-first-patch.txt" na naglalaman ng changelog ng patch,
paglalarawan o kung ano man ang ilagay mo doon.
WALKTHROUGH
Magsimula tayo.
Pumunta sa /usr/src/linux (o kahit saan).
Ngayon magsimula tayo sa pagbabago ng ilang source file:
patcher -n my-patch kernel/sched.c
OK, kinopya ng patcher ang kernel/sched.c sa kernel/sched.c~my-patch para sa iyo, ang program ay mayroon ding
gumawa ng ilang mahika sa direktoryo ng .patches, na hindi magiging interesado sa amin ngayon.
Ngayon ay i-edit ang kernel/sched.ca bit.
Ngayon handa na kaming idokumento ang patch:
Lumikha ng .patches/my-patch.txt
Bumuo ngayon ng isang patch:
patcher -r
Bubuo ito ng ".patches/my-patch.patch". Tingnan ang file na ito.
Ngayon ay inaalis namin ang aming pagbabago sa sched.c sa pamamagitan ng pagbabalik:
patcher -b
Tingnan kung nasaan tayo ngayon:
patcher -s
Ngayon, magdagdag tayo ng isa pang file sa aking-patch. Una naming inilapat muli ang patch:
patcher -a
Ngayon mag-edit ng pangalawang file:
patcher kernel/printk.c
Tandaan na dito nagbigay kami ng patcher ng isang argumento, nang walang mga pagpipilian sa command line. Ito
palaging sinasabi sa patcher na magdagdag ng isa pang file sa kasalukuyang patch.
I-edit ang kernel/printk.c
I-refresh ang aking-patch:
patcher -r
Ngayon magsimula ng pangalawang patch:
patcher -n my-second-patch kernel/sched.c
Dito mayroon kaming filename sa command line para sa patcher, kaya nag-edit kami ng file. Pero ngayon kami
tinukoy ang isang pangalan ng patch na may -n. Sinabi nito kay patcher na gumawa ng bagong patch. Ngayon patcher
namamahala ng dalawang patch, "my-patch" at "my-second-patch".
I-edit ang kernel/sched.c, para gumawa ng ilang pagbabago para sa my-second-patch
Bumuo ng aking pangalawang-patch:
patcher -r
Tingnan ang ".patches/my-second-patch.patch".
Tandaan din na ang "my-second-patch.patch" ay naidagdag sa series file. Sa tuwing ikaw
manu-manong simulan ang isang patch, awtomatiko itong ilalagay sa serye ng file.
Sa ganitong paraan, ang buong bagay ay stackable. Kung mayroon kang apat na patch na inilapat, sabihin
"patch-1", "patch-2", "patch-3" at "patch-4", at kung magkadikit ang patch-2 at patch-4
kernel/sched.c pagkatapos ay magkakaroon ka ng:
kernel/sched.c~patch-2 Orihinal na kopya, bago ang patch-2
kernel/sched.c~patch-4 Kopyahin bago patch-4. Naglalaman ng mga pagbabago mula sa patch-2
kernel/sched.c Kasalukuyang gumaganang kopya. Naglalaman ng mga pagbabago mula sa patch-4.
Nangangahulugan ito na ang iyong mga diff header ay naglalaman ng "~patch-name" sa mga ito, na maginhawa
dokumentasyon.
Upang tapusin ang aming paglilibot, inaalis namin ang parehong mga patch:
patcher -b
patcher -b
Iyon ay halos ito, talaga.
Gumamit ng patcher online gamit ang mga serbisyo ng onworks.net