Kako klonirati priklopljen repozitorij
Okoliščina
Repozitorij je viden v wikiju, delati pa je treba z njim lokalno – clone, pull in push iz običajnega odjemalca git, brez svoje licence za Azure DevOps.
Pregled rešitve
Vtičnik prinaša posrednik git na svojem naslovu, ločenem od doku.php. Odjemalec git se pogovarja z wikijem, wiki pa z Azure DevOpsom prek storitvenega računa. Prijava poteka po protokolu HTTP Basic z osebnim žetonom, nikoli z geslom wikija. O dostopu odloča ista raven priklopa kot v brskalniku.
| Dejanje | Potrebna raven | Opomba |
|---|---|---|
clone, fetch in pull | 2 | pri ravni public zadošča anonimen odjemalec; pri library in readonly le prijavljen; pri showcase nihče |
push | 4 | nikoli anonimno; pri ravni 4 do 7 samo v lastno predpono vej |
push v poljubno vejo | 8 | pri priloženih ravneh to doseže skupina @wvdse, pri ravni team pa skupina maintainers projekta |
| prenos arhiva ZIP | 2 | gumb na plošči Kako dobiti ta repozitorij |
showcase namenoma ne podeli pravice do prevzema: izvorna koda se bere v brskalniku, kopije ne vzame nihče. Kdor jo potrebuje, zaprosi za library ali višjo raven.
Izvedba
Naslov za clone
Naslov nastane iz imenskega prostora priklopa tako, da dvopičja postanejo poševnice:
https://www.wvds.it/wiki/lib/plugins/wkdoadogit/git.php/code/dokuwiki-plugins/wkdoadogit
Ta naslov naslavlja priklop code:dokuwiki-plugins:wkdoadogit. Ni ga treba sestavljati ročno, saj ga prikažeta dve mesti:
- Plošča Kako dobiti ta repozitorij nad drevesom na strani z brskalnikom. Vidi jo vsakdo z ravnjo vsaj 2. Poleg naslova ponuja prenos arhiva ZIP ter povezavi za odprtje v urejevalnikih Visual Studio Code in JetBrains.
- Seznam priklopov v skrbništvu, v meniju vrstice priklopa. Vidijo ga samo nadskrbniki.
Priklop, registriran z nadomestkom {lang}, ima en naslov na jezik. Vzorec sam ni naslov in bi ga strežnik zavrnil.
Osebni žeton
- Odprite
/doku.php?do=wkdoadogit_tokens. Do te strani vodijo tudi povezava na dnu plošče Kako dobiti ta repozitorij, meni vrstice priklopa in vnos Upravljajte dostopne žetone git v ukazni paleti. - Vnesite oznako, na primer
prenosnikaliCI, in izberite Ustvari. - Kopirajte prikazani žeton takoj. Prikaže se natanko enkrat, saj se shrani samo njegova zgoščena vrednost; pozneje ga ni mogoče priklicati niti skrbniku.
- Nepotrebne žetone odstranite z gumbom Prekliči v isti preglednici.
Vsak izdan žeton se začne s predpono wkg_, tako da ga pregledovalnik skrivnosti ali filter dnevnika prepozna na pogled.
Če je nameščen vtičnik wkidentity, je za izdajo žetona potrebna seja, dokazana vsaj z običajno prijavo; namestitev lahko zahtevo dvigne na drugi dejavnik. Že izdani žetoni ob poostritvi pravila ostanejo veljavni, zato jih po spremembi izdajte znova.
Klic odjemalca
git clone https://www.wvds.it/wiki/lib/plugins/wkdoadogit/git.php/code/dokuwiki-plugins/wkdoadogit
Ob vprašanju za prijavo vnesite svoje uporabniško ime v wikiju, kot geslo pa osebni žeton. Odjemalec sprejme tudi žeton kot uporabniško ime s praznim geslom.
Za trajno shranjevanje uporabite pomočnika za poverilnice svojega odjemalca. Žetona ne zapisujte v naslov v datoteki .git/config.
Push v lastno predpono
Kdor ima raven od 4 do 7, sme premikati samo veje pod svojo predpono refs/heads/users/<prijavno-ime>/.
git push origin HEAD:refs/heads/users/janez/popravek
Ukaz, ki bi se dotaknil česa zunaj te predpone, strežnik zavrne v celoti. Pri ravni 8 te omejitve ni.
Prenos arhiva ZIP
Gumb Prenesi kot ZIP na plošči Kako dobiti ta repozitorij prenese posnetek prikazane veje. Naslov je /doku.php?do=wkdoadogit_archive&ns=<imenski-prostor>&ref=<veja> in zahteva isto raven 2 kot clone.
Opombe
- Pri Azure DevOpsu nastopa storitveni račun. Vrednost pushedBy je zato storitveni račun, avtor commita pa ostane oseba, ki ga je naredila.
- Odvzem pravice velja od naslednje zahteve. Pravice se ne predpomnijo. Če dostop vztraja, iščite predpomnilnik strani ali podeljeno skupino, ne posrednika.
- Posrednik ne pozna dviga prijave. Deluje brez seje in se prijavlja pri vsaki zahtevi z žetonom, zato se drugi dejavnik zahteva ob izdaji žetona, ne ob vsaki zahtevi.
- Strežnik mora dovoliti
PATH_INFO. Na strežniku Apache to uredi priložena datoteka.htaccessz vrsticoAcceptPathInfo Onzagit.php. Priložena datotekaweb.configvelja samo za IIS. Brez tega strežnik vrne napako 404, še preden se PHP sploh zažene. - Stiskanje na poti pokvari packfile. Za pot posrednika ne vklapljajte stiskanja gzip.
Sorodne teme
- Kako urediti datoteko in narediti commit iz wikija – sprememba ene datoteke brez odjemalca git
- Tehnična referenca: raven vidnosti – katera raven prinese katero zmožnost
- Diagnostika – napake 401, 403 in 404 pri posredniku