Login Login
MORE

WIDGETS

Widgets

Recent changes
Wanted articles
Who is online?
Article tools

Difference between revisions of "CSharp:Source Control - Git"

From Aino Wiki

Jump to: navigation, search
(7. Server Role)
(7. Server Role)
 
Line 85: Line 85:
 
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.<br />
 
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.<br />
 
Su un sistema operativo di tipo Server:
 
Su un sistema operativo di tipo Server:
[[File:Git_ServerManager_BA_CGI.png|none|600x371px]]
+
[[File:Git_ServerManager_BA_CGI.png|none|700x471px]]
 
Su un sistema operativo Windows Professional:<br />
 
Su un sistema operativo Windows Professional:<br />
 
Pannello di controllo<br />
 
Pannello di controllo<br />
 
[[File:Git_cfg_Windows_01.png|none|199x140px]]
 
[[File:Git_cfg_Windows_01.png|none|199x140px]]
e<br />
+
e
 
[[File:Git_cfg_Windows_02.png|none|200x600px]]
 
[[File:Git_cfg_Windows_02.png|none|200x600px]]
  

Latest revision as of 11:15, 15 April 2024

Tra i migliori SCM (source control manager) svetta GIT che ora è integrato in Visual Studio

Panoramica su GIT

Due piattaforme GIT per il repository del codice sorgente in remoto sono GitHub e BitBucket.

Protocolli

Come fare

Con Git ci sono 2 possibilità conservare il proprio codice in remoto sul Cloud GitHub 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 Git Architettura soluzione 01.png

Source control - Locale

Source Control Git how 01.png
Si può scegliere se riporlo sul cloud per la condivisione con un Team di sviluppo o in Locale in quest'ultima ipotesi:
Source Control Git how 02.png

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.

Git Installazione 01.png

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.

Git permessi utente IIS al FS 02.png

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

Git permessi utente al FS 01.png

5. Impostazione del "Bare repository"

E' la cartella che conterrà il progetto che si vuole mettere sotto controllo di Git. Se il progetto da controllare con Git si chiama "ProgettoTest01", il comando da lanciare mediante "Git CMD" è:

git init --bare ProgettoTest01.git
Git bare repository 01.png

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:

Git bare repository 02.png

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:

Git IIS 04.png

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ì:

Git IIS 05 ApplicationPool.png

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:

Git ServerManager BA CGI.png

Su un sistema operativo Windows Professional:
Pannello di controllo

Git cfg Windows 01.png

e

Git cfg Windows 02.png

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":

Git IIS 06 Handler Script Manager.png

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.

Git IIS 07 Handler Script Manager.png

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":

Git IIS 09 Authentication.png

Quindi disabilitare l'autenticazione anonima ed abilitare quella basic:

Git IIS 10 Authentication.png

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.

Git Clone from remote 00.png

La clonazione creerà una cartella nascosta .git quindi si avrà:

Git Clone from remote 02.png

Nota.
La password verrà chiesta solo una volta perché verrà memorizzata sul Server.

Git Clone from remote 01.png

11. Configurazione canale HTTPS

ToDo...

Fonti

"how setup a Windows git remote serve"

Mappa e Link


C# | Source Control


IIS | Visual Studio | Visual Studio code | MS SQL | Dizionario


Parole chiave: