CSharp:Source Control - Git
From Aino Wiki
Tra i migliori SCM (source control manager) svetta GIT che ora è integrato in Visual Studio
Contents
- 1 Panoramica su GIT
- 2 Come fare
- 2.1 Source control - Locale
- 2.2 Git remote Server
- 2.2.1 1. Installazione di GIT
- 2.2.2 2. Creare la cartella di Repository
- 2.2.3 3. Creare gli utenti locali al Server e che corrisponderanno ai client remoti
- 2.2.4 4. Configurazione utente locale al Server
- 2.2.5 5. Impostazione del Git repository
- 2.2.6 6. Creazione Website su IIS
- 2.2.7 7. Server Role
- 2.2.8 8. Configurazione IIS, nuovo Script Map
- 2.2.9 9. Configurazione IIS, impostazione Basic Authentication
- 2.2.10 10. Accesso lato Client, test
- 2.2.11 11. Configurazione canale HTTPS
- 2.2.12 Fonti
- 3 Mappa e Link
Panoramica su GIT
Due piattaforme GIT per il repository del codice sorgente in remoto sono GitHub e BitBucket.
Protocolli
- Sito ufficiale: git-scm.com
- Guida: git-scm.com
- Client Tortoise: tortoisegit.org
Come fare
Con Git ci sono 2 possibilità su come conservare il proprio codice sorgente:
- in remoto (sul Cloud GitHub o proprio server), vedere sotto "Git remote server";
- oppure in Locale.
Prima di continuare è necessario che la solution e sottostanti progetti siano organizzati gerarichicamente in cartelle in modo che i progetti siano contenuti nella cartella dove si trova il file della solution.
Source control - Locale
Si può scegliere se riporlo sul cloud per la condivisione con un Team di sviluppo o in Locale in quest'ultima ipotesi:Problemi e soluzioni
Può capitare che l'opzione "Local only" (del popup "Create a Git Repository") non sia attivata e questo può esser dovuto al fatto che il file della solution, *.sln, non è nella cartella superiore ovvero sopra alle cartelle in cui sono i progetti ed i files *.csproj. In questa ipotesi spostare il file *.sln ed editarlo con un editor di test cambiando opportunamente il percorso di riferimento dei files di progetto.
Git remote Server
Si descrive come configurare un Windows Git server centralizzato verso cui far convergere gli sviluppatori che collaborano su diversi progetti (Git on the Server).
NOTA Git non è nato per avere una gestione centralizzata ma distribuita ma in una azienda in cui i dipendenti possono essere dislocati non in unico posto fisico può essere necessario che ci sia un server che faccia da repository condiviso e gestito\protetto centralmente.
In questa soluzione si userà IIS ed il protocollo HTTP come tramite per intercettare le richieste dai client sull'archivio Git gestito centralmente sul server. (Ci sono altre solizioni alternative a IS e basate su altri protocolli come Local FS, Secure Shell (SSH) e Git)
1. Installazione di GIT
Git (Attualmente ver 2.44.0) per Windows scaricabile qui: git-scm.com. Doc: Book Al termine saranno disponibili le seguenti app.
Qui si fa riferimento all'uso di Git CMD.
2. Creare la cartella di Repository
Si crea la cartella sul FileSystem, ad es., D:\Git_Repository
Ogni progetto sarà una cartella che Git provvedera a collocare all'interno della cartella di prima chiamandola "Bare Repository".
Se si configurerà IIS, al punto 6., per interfacciarsi con Git usando una "Applicazione Web", la root repository fisica dei progetti ospitati su Git sarà una sottocartella ovvero D:\Git_Repository\Git_IIS
dove "Git_IIS" è il nome della Applicazione Web che installeremo al punto 6.
3. Creare gli utenti locali al Server e che corrisponderanno ai client remoti
Si crea uno "Standard User" di test, ad es. GitUser1
da utilizzare da un client remoto per testare il server. Disabilitargli l'uso del Remote Desktop (andare su Remote Desktop Services Profile e checcare "Deny this user permissions to log on to Remote Desktop Session Host").
A questi utenti si aggiungerà un utente locale particolare IIS_IUSERS
, necessario se al passo dell'installazione dell'applicazione web su IIS si sceglie di NON installarla nella cartella di default C:\inetpub\wwwroot
.
Per una questione di sicurezza sarebbe opportuno disabilitare l'utente dalla possibilità di utilizzare il Remote Desktop.
4. Configurazione utente locale al Server
Si assegna all'utente "GitUser1" il permesso full Control alla cartella del repository di Git creata allo Step 2 D:\Git_Repository
5. Impostazione del Git repository
Ci sono due tipologie di repository:
- Repository "Standard", destinati ad accoglere singoli progetti Include una Working directory oltre che la cartella di controllo ".git".
- "Bare Repository", che è destinato ad accogliere repository di repository.
Vedi qui stackoverflow
Repository standard
E' la situazione più frequente in cui si include oltre alla cartella nascosta di controllo, .git
anche la working directory ovvero i files a cartelle che si vogliono conseervare e gestire. Se il progetto da controllare si chiama "ProgettoTest01", il comando da lanciare mediante "Git CMD" è:
git init ProgettoTest01.git
Bare repository
Crea uno spazio "vuoto" ovvero predisposto a contenere progetti quindi senza la "Working directory", si noterà solo la cartella nascosta di gestione .git
.
Come usre un bare repository stackoverflow.
Se lo spazio da controllare con Git si chiama "ProgettoTest01", il comando da lanciare mediante "Git CMD" è:
git init --bare ProgettoTest01.git
Ovviamente il passo successivo è "riempirla" con i files del progetto da custodire e gestire, questo ottiene con appositi comandi Git, supponiamo da qui in poi che abbiamo già compiuto questi passi.
Nota, per convenzione il nome del progetto, quindi della cartella, deve finire per .git
Al termine avremo:
ATTENZIONE la cartella "ProgettoTest01.git" non è detto che abbia come cartella padre la "D:\Git_Repository" perchè dipende dalla scelta che si farà al punto 6, in questo esempio, la cartella padre sarà "Git_IIS" perchè su IIS usiamo una WebApplication e non un WebSite (percorso completo: D:\Git_Repository\Git_IIS\ProgettoTest01.git).
6. Creazione Website su IIS
IIS fungerà da intermediario attraverso il quale le richieste operative (Clone, Push, Commit) dai client remoti giungeranno al motore di Git presente sul Server.
Ciascun client sarà rappresentato da una utenza di Sistema Operativo del server che si associerà alla cartella creata al punto 2.
IIS riceverà le richieste perché in ascolto su una porta, la 80 per l'HTTP o la 443 in caso si usi il protocollo HTTPS. Le richieste saranno indirizzate ad una applicazione di Git, git-http-backend.exe
questo avverrà grazie ad una configurazione del'"Handler Mapping" associato al sito che creeremo su IIS.
L'intermediazione di IIS la si può ottenere in due modi: creando un nuovo "WebSite" o aggiungendo una nuova "Applicazione Web" a quella di default (LinkInterno). La seconda strada è la più complicata ma è quella che seguiremo in questa guida.
Seguire i passi come nel seguente screenshot:
Prendere nota del nome dell'Application Pool associato alla WebApplication, che se non viene cambiato si chiama "Git_IIS", questa configurazione necessita della seguente modifiche da eseguire andando direttamente sul file di configurazione del Web Server. Aprire con un editor di testo il file:
C:\Windows\System32\inetsrv\Config\applicationHost.config
Cercare la sezione il cui TAG è <applicationPools>
> e l'elemnto con ID uguale all'Application Pool dell'applicazione creata, "Git_IIS" e modificarlo (fare prima una copia per backup):
...etc <applicationPools> <add name="DefaultAppPool" /> ...etc <add name="Default Web Site" enable32BitAppOnWin64="false" /> <add name="Git_IIS" managedRuntimeVersion=""> <environmentVariables> <add name="GIT_PROJECT_ROOT" value="D:\Git_Repository" /> <add name="GIT_HTTP_EXPORT_ALL" value="1" /> </environmentVariables> </add> </applicationPools> ...etc
Lo scopo è rendere evidenti due variabili destinate all'ambiente Git ovvero GIT_PROJECT_ROOT e GIT_HTTP_EXPORT_ALL.
Quindi la configurazione dell'Application Pool risulterà così:
7. Server Role
E' necessario che IIS abbia le funzionalità di Basic Authentication (per l'autenticazione degli utenti con credenziali già impostate alla creazopme) e CGI per l'interazione con Git usando il protocollo HTTP.
Queste due funzionalità si installano\verificano sul server usando "server Manager" se il sistema Operativo è di tipo Server o se è un Windows Professional si andrà al pannello di controllo.
Su un sistema operativo di tipo Server:
Su un sistema operativo Windows Professional:
Pannello di controllo
e
8. Configurazione IIS, nuovo Script Map
In IIS Manager aggiungere un nuovo "Script Map", serve a collegare i comandi che giungeranno via HTTP all'applicazione (git-http-backend.exe
) di Git che provvederà ad interpretarli ed eseguirli.
Fare doppio click su "Handler Mappings":
Si configura come segue, impostando l' "Executable" al seguente eseguibile:
C:\Program Files\Git\mingw64\libexec\git-core\git-http-backend.exe
questo avrà la funzione di collegare le richieste HTTTP a Git.
9. Configurazione IIS, impostazione Basic Authentication
Gli utenti creati al punto 3. si autenticheranno usando la "Basic Authentication" cioè quando faranno ogni operazione verso il server Git dovranno inserire, in realtà, solo la password come illustarto in seguito.
Selezionata l'applicazione Web "Git_IIS" fare doppio click sull'icona "Authentication":
Quindi disabilitare l'autenticazione anonima ed abilitare quella basic:
10. Accesso lato Client, test
A questo punto sarà possibile accedere da remoto a tutti i repository conservati sul server.
In base all'esempio in questa guida lanciare Git CMD col seguente comando:
git clone http://GitUser1@git.myserver.com/Git_IIS/ProgettoTest01.git
All'apertura del popup di richiesta password dell'utente GitUser1 digitare quella prevista sul Windows server.
La clonazione creerà una cartella nascosta .git
quindi si avrà:
Nota.
La password verrà chiesta solo una volta perché verrà memorizzata sul Server.
11. Configurazione canale HTTPS
ToDo...
Fonti
"how setup a Windows git remote serve"
- How to run a Git server on Windows with IIS: smalltech.com.au
- How to Install and Configure Git on a Windows Server: opensourceforu.com
Mappa e Link
IIS | Visual Studio | Visual Studio code | MS SQL | Dizionario
Parole chiave: