Kako klonirati montirani repozitorij
Okolnost
Repozitorij je vidljiv u wikiju, ali s njim treba raditi lokalno — clone, pull i push iz uobičajenog git klijenta, bez vlastite licencije za Azure DevOps.
Pregled rješenja
Dodatak donosi git posrednik na vlastitoj adresi, odvojenoj od doku.php. Git klijent razgovara s wikijem, a wiki preko servisnog računa s Azure DevOpsom. Prijava teče protokolom HTTP Basic s osobnim tokenom, nikad lozinkom wikija. O pristupu odlučuje ista razina montiranja kao i u pregledniku.
| Radnja | Potrebna razina | Napomena |
|---|---|---|
clone, fetch i pull | 2 | kod razine public dovoljan je anoniman klijent; kod library i readonly samo prijavljen; kod showcase nitko |
push | 4 | nikad anonimno; kod razina od 4 do 7 samo u vlastiti prefiks grana |
push u bilo koju granu | 8 | među priloženim razinama to doseže grupa @wvdse, a kod razine team grupa maintainers projekta |
| preuzimanje arhive ZIP | 2 | gumb na ploči Kako doći do ovog repozitorija |
showcase namjerno ne daje pravo preuzimanja: izvorni kod čita se u pregledniku, kopiju ne uzima nitko. Tko je treba, traži library ili višu razinu.
Izvedba
Adresa za clone
Adresa nastaje iz imenskog prostora montiranja tako da dvotočke postanu kose crte:
https://www.wvds.it/wiki/lib/plugins/wkdoadogit/git.php/code/dokuwiki-plugins/wkdoadogit
Ta adresa naslovljuje montiranje code:dokuwiki-plugins:wkdoadogit. Ne morate je sastavljati ručno jer je pokazuju dva mjesta:
- Ploča Kako doći do ovog repozitorija iznad stabla na stranici s preglednikom. Vidi je svatko s razinom 2 ili više. Uz adresu nudi preuzimanje arhive ZIP te poveznice za otvaranje u uređivačima Visual Studio Code i JetBrains.
- Popis montiranja u administraciji, u izborniku retka montiranja. Vide ga samo administratori.
Montiranje registrirano s rezerviranom riječi {lang} ima jednu adresu po jeziku. Sam uzorak nije adresa i poslužitelj bi ga odbio.
Osobni token
- Otvorite
/doku.php?do=wkdoadogit_tokens. Onamo vode i poveznica na dnu ploče Kako doći do ovog repozitorija, izbornik retka montiranja te unos Upravljajte git pristupnim tokenima u naredbenoj paleti. - Unesite oznaku, primjerice
prijenosnikiliCI, pa odaberite Stvori. - Prikazani token kopirajte odmah. Pojavljuje se točno jednom jer se sprema samo njegova raspršena vrijednost; poslije ga nije moguće dozvati ni administratoru.
- Tokene koji vam više ne trebaju uklonite gumbom Opozovi u istoj tablici.
Svaki izdani token počinje prefiksom wkg_, pa ga skener tajni ili filtar dnevnika prepoznaje na prvi pogled.
Kad je instaliran dodatak wkidentity, za izdavanje tokena potrebna je sjednica dokazana barem uobičajenom prijavom; instalacija zahtjev može podići na drugi faktor. Već izdani tokeni pri pooštravanju pravila ostaju valjani, pa ih nakon promjene izdajte ponovno.
Poziv klijenta
git clone https://www.wvds.it/wiki/lib/plugins/wkdoadogit/git.php/code/dokuwiki-plugins/wkdoadogit
Na upit za prijavu unesite svoje korisničko ime u wikiju, a kao lozinku osobni token. Klijent prihvaća i token kao korisničko ime s praznom lozinkom.
Za trajnu pohranu poslužite se pomoćnikom za vjerodajnice svog klijenta. Token nemojte upisivati u adresu u datoteci .git/config.
Push u vlastiti prefiks
Tko ima razinu od 4 do 7, smije pomicati samo grane ispod vlastitog prefiksa refs/heads/users/<prijava>/.
git push origin HEAD:refs/heads/users/ihorvat/ispravak
Naredbu koja bi dotaknula išta izvan tog prefiksa poslužitelj odbija u cijelosti. Kod razine 8 tog ograničenja nema.
Preuzimanje arhive ZIP
Gumb Preuzmi kao ZIP na ploči Kako doći do ovog repozitorija preuzima snimku prikazane grane. Adresa glasi /doku.php?do=wkdoadogit_archive&ns=<imenski-prostor>&ref=<grana> i traži istu razinu 2 kao i clone.
Napomene
- Prema Azure DevOpsu nastupa servisni račun. Vrijednost pushedBy ondje je zato servisni račun, a autor commita ostaje osoba koja ga je napravila.
- Oduzimanje prava vrijedi od sljedećeg zahtjeva. Prava se ne spremaju u predmemoriju. Ustraje li pristup, tražite predmemoriju stranica ili dodijeljenu grupu, a ne posrednika.
- Posrednik ne poznaje podizanje prijave. Radi bez sjednice i prijavljuje se pri svakom zahtjevu tokenom, pa se drugi faktor traži pri izdavanju tokena, a ne pri svakom zahtjevu.
- Poslužitelj mora dopustiti
PATH_INFO. Na poslužitelju Apache to uređuje priložena datoteka.htaccesss retkomAcceptPathInfo Onzagit.php. Priložena datotekaweb.configvrijedi samo za IIS. Bez toga poslužitelj vraća pogrešku 404 prije nego što se PHP uopće pokrene. - Sažimanje na putu kvari packfile. Za put posrednika nemojte uključivati sažimanje gzip.
Povezane teme
- Kako urediti datoteku i napraviti commit iz wikija – promjena jedne datoteke bez git klijenta
- Tehnička referenca: razina vidljivosti – koja razina donosi koju mogućnost
- Dijagnostika – pogreške 401, 403 i 404 kod posrednika