Barvna shema: Svetla
Trenutno dejavna stran: start » sl » Dokumentacija » Razširitve DokuWikija (WvdS) » ADO-Git » Koncepti

Koncepti

Kako deluje wkdoadogit: kaj je priklop, od česa je odvisna vidnost repozitorija in kje so meje paketa. Kaj želite narediti, piše na strani ADO-Git; kaj želite poiskati, v Tehnični referenci.

Namen

Paket v wiki vključi repozitorije git, ki gostujejo v Azure DevOps: brskanje po repozitorijih, prikaz izvorne kode, urejanje in commit ter git clone, pull in push prek posrednika – vse prek enega samega storitvenega računa ADO, zato bralci in uredniki ne potrebujejo lastne licence ADO. Mejo pooblastil določa ACL DokuWikija, ne licenca ADO.

Komu je namenjen: skrbnikom in urednikom, ki želijo kodo iz Azure DevOps narediti vidno ali urejljivo v wikiju.


Tri dejanja, ki jih vtičnik ne opravi sam

Repozitorij postane viden šele, ko so opravljena tri ločena dejanja. Nobeno od njih ne sproži naslednjega.

Dejanje Kje Kaj nastane
povezava do=wkdoado na strani projekta DWDO opis strežnika ADO s ključem in sklicem na skrivnost
priklop Skrbništvo > Priklopi repozitorijev vez med repozitorijem in imenskim prostorom ter ACL zanj
oznaka na strani poljubna stran znotraj projekta DWDO edini prikaz repozitorija; priklop sam ne ustvari nobene strani

Celoten potek s primerom opisuje Prvi prikaz repozitorija ADO v wikiju.


Priklopi repozitorijev

Priklop poveže repozitorij ADO z imenskim prostorom DokuWikija oblike code:{projekt}:{repo}, na primer code:dokuwiki-plugins:wkdoadogit. Šele registriran priklop naredi repozitorij dosegljiv; vsaka pot dostopa – brskalnik, prikaz izvorne kode, posrednik git in prenos arhiva ZIP – preveri ACL DokuWikija za ta imenski prostor.

Imenski prostor priklopa je navidezen: v njem ne nastane nobena stran wikija. Če predloga vsebuje nadomestno oznako {lang}, ostane priklop en sam zapis, pravila pa se zapišejo za vsak jezik iz nastavitve mount_languages (privzeto de,en,hr,it,sl).

Priklop naredi repozitorij dosegljiv, ne pa viden. Prikaže se samo tam, kjer avtor na stran znotraj projekta DWDO (tu pod {lang}:projects:) vstavi oznako {{wk:adogit>povezava:projekt:repozitorij}}. Če po registraciji priklopa ne vidite ničesar, vas čaka ta drugi korak – ne gre za napako.

Raven vidnosti in ACL DokuWikija

Raven vidnosti priklopa je edino mesto, kjer se upravlja vidnost. ACL se prebere ob vsaki zahtevi znova, zato sprememba ravni vidnosti učinkuje takoj. Pravila nastanejo za imenski prostor in za namespace:*; skrbniki imajo kot superuser vedno dostop.

Raven vidnosti @ALL (anonimni) @user (prijavljeni) @wvds (razvijalci) @wvdse (uredniki) skupine vlog projekta
private 0 – – 8 –
readonly 0 2 2 8 –
showcase 1 – – 8 –
library 1 2 – 8 –
public 2 – – 8 –
team 0 – – 8 readers 1, contributors 2, maintainers 8

Skupine vlog za raven team nosijo predpono roleprefix iz paketa wkdocore in ključ projekta, na primer @dwdo_dwplugins_maintainers.

Ravni showcase in library ločita pravici, ki ju public podeli skupaj: ogled v brskalniku in prenos kopije. Pri showcase sme vsakdo brati, klonirati pa nihče; pri library sme vsakdo brati, klonira pa lahko vsak prijavljen račun. Meja je prijava, ne občinstvo: kopijo si lahko vzame samo račun, ki ga je mogoče pozneje poimenovati.

Ena številka, dve branji

Zapisana stopnja ACL je hkrati pravica DokuWikija in zmožnost tega paketa.

Stopnja ACL V tem vtičniku V DokuWikiju
1 brskanje in prikaz v wikiju branje strani
2 clone, fetch in prenos arhiva ZIP urejanje obstoječe strani
4 push v refs/heads/users/<prijavno-ime>/ ustvarjanje strani
8 push brez omejitev ter urejanje in commit iz wikija nalaganje datotek

Stolpec V DokuWikiju pojasnjuje, zakaj priklop na imenski prostor s pravimi stranmi wikija ni neškodljiv: raven public tam anonimnim obiskovalcem odpre urejevalnik strani. Predogled v čarovniku zato prešteje strani, ki že obstajajo.

Pravila so v upravljanem bloku datoteke conf/acl.auth.php, med vrsticama # BEGIN wkdoadogit-managed in # END wkdoadogit-managed. Tega bloka ne urejajte ročno – namesto tega nastavite raven vidnosti priklopa. Zapisovalnik zamenja izključno ta blok (atomarno, z začasno datoteko, preimenovanjem in zaklepom) in pusti vsa druga pravila nedotaknjena, tudi tista, ki jih urejate ročno ali prek jedrnega skrbniškega modula acl. Odstranjen priklop izgubi svoja pravila; za imenski prostor tedaj spet veljajo privzeta pravila spletnega mesta.

Drugi dejavnik: dve kategoriji, dve stopnji

Če je nameščen paket Identity, most do=wkdoadogit_stepup zahteva dokaz drugega dejavnika.

Kategorija Zahteva Velja za
mount-admin MFA_ANY ustvarjanje, spreminjanje in odstranjevanje priklopov
token-issue AUTHENTICATED, namestitev jo lahko zaostri izdajo osebnega žetona

Stopnji se razlikujeta, ker se razlikujeta dejanji: priklop odloča, kdo vidi kateri repozitorij, osebni žeton pa zadeva le lastni račun in ga v vsakdanjem delu potrebujete večkrat.

Preverjanje velja dodatno k ACL DokuWikija, nikoli namesto nje. Brez paketa wkidentity se paket obnaša nespremenjeno. Za posrednika git preverjanje ne velja: deluje brez seje in uporabnika ne more interaktivno vprašati, zato je zahteva vezana na izdajo žetona, ne na vsako poznejšo zahtevo, ki jo žeton nosi.


Meje in opozorila

  • Registracija priklopov in zapisovanje ACL sta pridržana skrbnikom; osebne žetone si uporabniki izdajo sami.
  • Natančnejših pravil ACL za posamezne podmape ni – raven vidnosti velja za celoten priklop.
  • Ustvarjanje je mogoče, nalaganje ne. Delovni prostor ustvari novo besedilno datoteko (gumb Nova datoteka, za uporabnike s pravico pisanja); izbirnega okna za datoteke namenoma ni. Vmesnik za push sicer sprejme vsebino, kodirano v base64, a oddaja slike prek besedilnega polja bi bila obljuba, ki je ta površina ne more izpolniti. Binarne datoteke gredo prek odjemalca git. Glej Kako ustvariti novo datoteko v brskalniku.
  • Ustvarjanje nikoli ne prepiše. Če na poti že obstaja datoteka, strežnik odgovori s conflict in ne zapiše ničesar – enako pravilo kot pri že zasedenem imenu veje. Pot prek plugin_wkdoadogit_commit s prazno osnovno oznako bi datoteko tiho zamenjala; zato ima ustvarjanje svoj klic in ne le dodatnega polja.
  • Zavihek Commiti prikaže zadnje commite, ne celotne zgodovine. Navede najnovejše commite prikazanega stanja (commits_shown, privzeto 30) in nima listanja; za celotno zgodovino je pravo orodje odjemalec Git. Izvorni sistem, ki zgodovine ne zna vrniti, zavihka sploh ne dobi – zavihek, ki obljublja nekaj, česar ni, bi bil ista napaka kot nekoč zatemnjeni zavihki. Glejte Tehnična referenca: Commiti.
  • Preklapljanje med vejami in oznakami je izvedeno; nekdanja navedba, da sta zavihka nedejavna, ne velja več – glej Tehnična referenca: veje in oznake.
  • Odhodne povezave HTTPS potrebujejo sveženj overiteljev CA v php.ini (curl.cainfo). Če ga ni, se vsak klic izvornega sistema ustavi pri rokovanju TLS, in ker se vsi klici REST tiho iztečejo brez rezultata, je rezultat videti natanko kot projekt brez repozitorijev.
  • Oznaka {{wk:adogit>…}} ne deluje zunaj korena projekta, ker se povezava razreši prek projekta DWDO strani. {{source>ado:…}} ima dodatno še pot prek imenskega prostora priklopa.
  • Vsaka vgradnja je omrežni klic, omejen s časovnimi mejami in zgornjo mejo bajtov v paketu wkdoado.
  • Posrednik git se pri ADO vedno prijavi z enim storitvenim žetonom PAT; pushedBy je tam storitveni račun, avtor commita pa ostane uporabnik wikija.
  • max_execution_time je v server/php/php.ini nastavljen na 30 sekund: za preverjene velikosti repozitorijev to ni težava, pri zelo velikih repozitorijih pa je to naslednja meja.
  • Zavrnitev je namenoma skopa: nepriklopljenega repozitorija, neznane povezave in manjkajoče pravice od zunaj skoraj ni mogoče razlikovati.
  • Zavezujoč vir preslikave stopenj ACL je Domain/MountAclWriter::TIERS. Ob spremembah posodobite tudi to stran in datoteko README vtičnika.

Sorodne teme

sl/wiki/dwe/wkdoadogit/concepts.txt · Zadnja sprememba: uporabnika 0.0.0.0