Ti trovi qui: start » it » Documentazione interna » Lavorare con i progetti » Clonare un repository

Clonare un repository

Situazione

Volete clonare un repository con un normale client Git e lavorarci in locale, e non sapete quale indirizzo e quali credenziali valgano.

Via di soluzione

Il wiki mette a disposizione i repository attraverso un endpoint Git proprio. Un client Git gli parla come a qualsiasi server HTTP: clone, fetch, pull e push funzionano immutati. L'autenticazione avviene via HTTP Basic con un token di accesso personale, non con la password del wiki.

L'indirizzo completo è sulla schermata del repository sotto Dieses Repository beziehen. Lì viene stampato e non composto a mano — dipende dall'indirizzo di questo wiki e dal namespace su cui il repository è montato. Un indirizzo finito ha questo aspetto:

https://www.wvds.it/wiki/lib/plugins/wkdoadogit/git.php/code/dokuwiki-plugins/wkdoadogit

Questo è l'indirizzo di questo repository su questa installazione. Per ogni altro repository leggetelo dalla sua schermata.

Esecuzione

  1. Create un token di accesso, se non ne avete ancora uno: Token di accesso. La guida completa è sotto Creare un token di accesso.
  2. Aprire Repository e scegliere il repository.
  3. Espandere Dieses Repository beziehen e prendere l'indirizzo con Kopieren. Senza JavaScript attivo il pulsante non compare; basta allora un clic nel campo dell'indirizzo, che lo seleziona per intero.
  4. Clonare con il client Git che preferite. Da riga di comando:
git clone https://www.wvds.it/wiki/lib/plugins/wkdoadogit/git.php/code/dokuwiki-plugins/wkdoadogit
  1. Git chiede nome utente e password. Inserire:
Campo Valore
Nome utente qualsiasi — l'endpoint non lo verifica
Password il vostro token di accesso personale
  1. Perché Git non chieda di nuovo a ogni chiamata, depositate il token una volta nell'archivio delle credenziali. Git per Windows ne porta uno:
git config --global credential.helper manager

In alternativa i pulsanti In VS Code öffnen e In JetBrains öffnen consegnano lo stesso indirizzo a un ambiente di sviluppo installato. VS Code apre la sua finestra di clonazione con l'indirizzo precompilato; con JetBrains la Toolbox prende in carico la chiamata e crea il progetto nell'IDE usato per ultimo. Se il programma non è installato non succede nulla — il browser non ha allora a chi consegnare il protocollo.

Osservazioni

Il nome utente è davvero indifferente. L'endpoint legge la password Basic e ricorre al nome utente solo in sostituzione; il token da solo determina l'identità. Chi cerca il nome utente «giusto» cerca qualcosa che non ha parte. L'unica eccezione: non lasciate vuoto il campo della password, altrimenti il nome utente viene letto come token e l'autenticazione fallisce.

Quattro livelli, e il livello per clonare non basta per restituire. Ciò che l'endpoint accetta dipende dal permesso sul namespace su cui il repository è montato:

Il vostro livello clone / fetch / pull push
vedere rifiutato rifiutato
ottenere funziona rifiutato
proporre funziona solo sotto il proprio prefisso di branch
scrivere funziona senza restrizioni

Quale livello abbiate lo assegna il mount del repository. I quattro modelli per questo assegnano vedere, ottenere e scrivere; il livello proporre nasce solo da una regola scritta apposta ed è perciò il caso raro. Se nella sezione Dieses Repository beziehen c'è l'avviso di accesso in sola lettura, avete ottenere: un push viene rifiutato e la via passa per Richiedere l'accesso.

Solo al livello proporre decide inoltre il nome del branch. Vengono allora accettati soltanto i branch sotto il vostro prefisso — refs/heads/users/<vostro nome utente wiki>/<tema> — e un push su main viene respinto con push refused: outside_own_prefix prima che un byte raggiunga il sistema sorgente. Al livello scrivere questa barriera non vale. Dove vale, lavorate subito su un branch dal nome adatto; per il nome utente mmuster:

git switch -c users/mmuster/interruzione-tabelle
git commit -am "Le tabelle vanno a capo su schermi stretti"
git push -u origin users/mmuster/interruzione-tabelle

Se avete già fatto commit su un branch dal nome diverso, indicate esplicitamente la destinazione nel push invece di rinominare il branch:

git push origin HEAD:refs/heads/users/mmuster/interruzione-tabelle

Che cosa accada poi al branch è sotto Inviare una modifica.

Un repository pubblico si può clonare senza token. L'endpoint consente un clone anonimo dove il mount lo permette esplicitamente. Un token vi serve solo quando il repository non è pubblico o volete restituire qualcosa; in forma anonima un push non viene accettato in nessun caso.

Più indirizzi con un mount multilingue. Se un repository è montato in più namespace linguistici, la sezione elenca un indirizzo per namespace. Per un clone ne basta uno; portano allo stesso repository ma sottostanno ciascuno alle regole del proprio namespace. I due pulsanti per l'IDE consegnano sempre il primo — quale lingua abbia una copia di lavoro, per un clone non ha importanza.

Quando l'autenticazione viene richiesta ripetutamente. L'endpoint risponde 401 finché non arriva un token valido, e Git chiede di nuovo. Un token revocato o incollato male ha lo stesso aspetto di nessun token. Verificate il token sotto Token di accesso e nel dubbio createne uno nuovo.

Argomenti correlati

it/wiki/projects/clone-repository.txt · Ultima modifica: da 0.0.0.0