Autore Topic: GitLab  (Letto 1815 volte)

Offline kicco

  • Senatore Gambero
  • ******
  • Post: 1.702
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
GitLab
« il: 26 Ottobre 2018, 16:11:18 »
Ripartendo da questo post:
http://www.gambas-it.org/smf/index.php?topic=6625.0
sul tema ho trovato:
https://www.youtube.com/watch?v=69YiP6XvzT8
di Julio Sanchez...
 :ciao: :ciao:
« Ultima modifica: 26 Ottobre 2018, 16:11:51 da kicco »
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline akrobaticone

  • Gran Maestro dei Gamberi
  • *****
  • Post: 983
    • Mostra profilo
Re:GitLab
« Risposta #1 il: 27 Ottobre 2018, 10:53:14 »
Proviamo a mettere qui un po di materiale per una wiki
premetto che sto imparando anche io, quindi è assolutamente gradito l'aiuto da chi ne capisce sicuramente più di me....
sto sperimentando git e trovo che sia comodo soprattutto per condividere un progetto
Git è uno strumento estremamente potente e variegato, riassumere il tutto in poche parole è impossibile,
In rete si trovano molte guide come quella pubblicata da Kicco
un'altra la trovate qui https://git-scm.com/book/it/v1/Per-Iniziare-Una-Breve-Storia-di-Git
cosa è Git
un sistema di versionamento che permette di gestire un progetto e di tenere traccia di tutte le modifiche che vengono fatte
(commit). On ogni momento si può tornare indietro  a qualsiasi commit antecedente a quello attuale .
Si possono inoltre creare piu rami di sviluppo (branch) che procedono in parallelo e possono essere di nuovo uniti inglobando le modifiche di uno sull'altro (merge). Pensate a più sviluppatori che lavorano su un progetto e ogniuno si occupa di una certa parte, una volta generate le modifiche necessarie aggiungono il loro lavoro al ramo principale.
Git viene gestito localmente nella cartella stessa del software che state sviluppando, ma esistono servizi come GITLAB e GITHUB che offrono uno spazio remoto dove archiviare e gestire i propri progetti
GITHUB non è opensource, GITLAB si.
Gambas è ospitato in quest'ultimo
https://gitlab.com/gambas/gambas
innanzi tutto bisogna installarlo
naturalmente si suppone che siamo tutti su linux, anche se si gestisce tranquillamente anche dall'altra "cosa"
esistono tool grafici, ma trovo divertente ed educativo gestire tutto da terminale
Codice: [Seleziona]
sudo apt install git
utile per visualizzare la situazione
Codice: [Seleziona]
sudo apt install gitk
una gui semplice
Codice: [Seleziona]
$ sudo apt install git-gui
Configuriamo git con i nostri dati
Codice: [Seleziona]
$ git config --global user.name "Pippo"
$ git config --global user.email Pippo@gmail.com
Questo sarà utile quando creiamo un repository remoto
Proviamo a usare git
dal terminale entriamo nella cartella del progetto Gambas ( per dirne uno)
Codice: [Seleziona]
$ cd mioprogetto
inizializziamo git
Codice: [Seleziona]
$ git init
verrà creata una cartella .git dove sono contenute tutte le informazioni necessarie a git e tutti i file del progetto di tutti i rami e commit

Quando si esegue un commit viene fatta una fotografia dello stato di tutti i file e viene memorizzato un punto di riferimento per potervi tornare.
tracciamo ora i file contenuti nella cartella di lavoro
Codice: [Seleziona]
$ git add --all
lo stato dei file viene immortalato con una istantanea e conservato in un area detta di stage, una sorta di limbo
Non è ancora stato creato il riferimento a questa immagine, andiamo ad effettuare il commit
Codice: [Seleziona]
$ git commit
appare ora l'editor ( nano di solito) dove nella prima riga si può inserire una descrizione di questo commit con le modifiche effettuate
si salva  e se ora provate a dare il comando
Codice: [Seleziona]
$ gitk -all
potete vedere graficamente lo stato del vostro progetto
In ogni momento si può vedere la situazione con il comando
Codice: [Seleziona]
$ git status

Un progetto si  può clonare anche da un repo remoto
con falsa modestia e un po di presunzione un ottimo esempio è il mio "Gestione-Manifestazioni"
andiamo nella pagina principale del progetto e copiamo l'indirizzo nella casella HTTPS
poi apriamo il terminale  e digitiamo
Codice: [Seleziona]
$ git clone https://gitlab.com/akrobaticone/Gestione-manifestazioni.git

una copia del progetto verrà creata localmente nella cartella home
per curiosità entrate con il terminale nella cartella del progetto
Codice: [Seleziona]
$ cd Gestione-manifestazioni
$ gitk --all
Per tenere aggiornato il progetto con i cambiamenti che vengono inseriti nel repo remoto
Codice: [Seleziona]
$ git pull
Se sono presenti più rami (master next etc..) lo potete vedere con il comando
Codice: [Seleziona]
$ git branch
per passare al ramo che si desidera
Codice: [Seleziona]
$ git checkout  ramochesidesidera
così facendo nella cartella del progetto saranno visibili solo i file di quel ramo

creare un nuovo ramo partendo da quello attuale
Codice: [Seleziona]
$ git checkout -b nuovoramo

Ora provate ad aprire il progetto con gambas
inella barra dell'IDE appare la casella Git dove sono contenuti gli strumenti per gestire il repo
Non ho ancora ben capito l'uso di git da gambas, a volte ci sono cose che non funzionano come mi aspetterei
nelle prossime puntate cercherò di approfondire



 





"e il naufragar m'è dolce in questo mar"

Offline kicco

  • Senatore Gambero
  • ******
  • Post: 1.702
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Re:GitLab
« Risposta #2 il: 27 Ottobre 2018, 13:49:23 »
 :ciao:
Citazione
Proviamo a mettere qui un po di materiale per una wiki
mi sembra che tu sia partito molto bene!!!
Anch'io ho raccolto un po' di documentazione, c'è veramente molto, forse troppo.
Sto cercando di capire bene perché la questione è interessante ma complessina :rolleyes: e più vado avanti e mi chiarisco le idee e più mi sorgono altre domande. ???
Sì, lo so che è normale! :D
A breve le prime domande... :) :)
 :ciao:
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline akrobaticone

  • Gran Maestro dei Gamberi
  • *****
  • Post: 983
    • Mostra profilo
Re:GitLab
« Risposta #3 il: 28 Ottobre 2018, 09:44:52 »
se il progetto è su una cartella locale o di rete possiamo lavorare sul progetto e una volta fatte le modifiche le tracciamo con
Codice: [Seleziona]
$ git add
i file possono essere aggiunti singolarmente
Codice: [Seleziona]
$ git add miofile
oppure con l'opzione --all (tutti insieme)
Codice: [Seleziona]
$ git add --all oppure git add .
creiamo il commit con
Codice: [Seleziona]
$ git commit
le due operazioni precedenti possono essere fatte insieme con
Codice: [Seleziona]
$ git commit -a
se vogliamo annullare tutto il lavoro fatto dopo l'ultimo commit e riportare indietro lo stato del progetto
Codice: [Seleziona]
$ git reset --hard
se il progetto è su un repository remoto che abbiamo clonato
dobbiamo trasmettere le modifiche
dopo l'operazione di commit trasmetiamo il tutto con

Codice: [Seleziona]
$ git push origin ramodidestinazione

dove
origin rappresenta il repository remoto che git conosce già
ramodidestinazione è il nome del branch sul quale stiamo lavorando
verranno chieste nome utente e password che sono quelli chiesti in fase di registrazione a gitllab o github
se stiamo partecipando ad un progetto altrui sarà il manutentore del progetto ad assegnarvi i permessi per poter accedere
la cosa bella di questo modo di procedere è che da qualsiasi pc in qualsiasi luogo potete sviluppare il progetto aggiornando il repo remoto
Nell'IDE di Gambas sulla barra degli strumenti è presente la casella Git che compare se il progetto è gestito con quest'ultimo
sono presenti le seguenti opzioni
( per come le ho interpretate io)

INOLTRA  equivale a Git commit
SYNCRONiZE equivale a Git pull, aggiorna localmente dal repo remoto
UNDO ALL CHANGES equivale a Git reset --hard
ADD EVERYTHINGS TO REPOSITORY equivale a Git add .
BRANCH visualizza e seleziona i branch del brogetto ed equivale nell'ordine a Git branch (visualizza) e git checkout ( passa a branch)

Un comportamento strano che ho rilevato è che i branch vengono visualizzati solo se prima li cambio da terminale

se nella cartella locale eseguo dei cambiamenti e provo a fare un git pull mi da errore poichè i cambiamenti locali non sono stati committati
ci sono due possibilità
fare il commit oppure fare un reset con git reset --hard per cancellarli

in una situazione del genere ho provato a dare UNDO ALL CHANGES e poi SYNCRONIZE ma di da sempre errore
devo farlo da terminale

un passo alla volta, prossimi argomenti sono il merge (due rami si fossono fondere tra di loro) e i vari metodi di aggiornamento  e sincronizzazione dei rami

 

 








« Ultima modifica: 30 Ottobre 2018, 22:49:19 da Akrobaticone »
"e il naufragar m'è dolce in questo mar"

Offline kicco

  • Senatore Gambero
  • ******
  • Post: 1.702
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Re:GitLab
« Risposta #4 il: 29 Ottobre 2018, 15:35:15 »
 :ciao:
Dopo un po' di prove ho iniziato a famigliarizzare con Git.
Il compito più grande, per me, è fidarmi, ma è veramente potente!
Non ho invece ancora capito come operare coi comandi Git di Gambas -> Progetto-> Version controll (Git).
Dovrebbero rimpiazzare l'uso di un terminale esterno a Gambas per dare i comandi a Git, credo! :-\
 :ciao: :ciao: :ciao:
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline akrobaticone

  • Gran Maestro dei Gamberi
  • *****
  • Post: 983
    • Mostra profilo
Re:GitLab
« Risposta #5 il: 29 Ottobre 2018, 17:32:26 »
I comandi di version control servono proprio a rimpiazzare i comandi da terminale come ho descritto sopra
in alcuni casi però sembra che non si comportino allo stesso modo, ma devo ancora provare bene
Se apri un progetto gambas gia gestito da git e nella sua cartella è presente la a cartella .git l'icona sulla barra degli strumenti appare automaticamente
questo accade se crei il progetto localmente oppure lo cloni da remoto

"e il naufragar m'è dolce in questo mar"

Offline kicco

  • Senatore Gambero
  • ******
  • Post: 1.702
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Re:GitLab
« Risposta #6 il: 29 Ottobre 2018, 20:38:47 »
 :ciao:
Citazione
Se apri un progetto gambas gia gestito da git e nella sua cartella è presente la a cartella .git l'icona sulla barra degli strumenti appare automaticamente
Hai ragione!  :ok:
Ho visto che INOLTRA di fatto attua il Commit e nella pagina Journal si può scrivere il commento al commit.
Con ADD EVERITHING TO REPOSITORY di fatto equivale a Git add ..
Sul resto sto indagando... ;D
 :coder:
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline kicco

  • Senatore Gambero
  • ******
  • Post: 1.702
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Re:GitLab
« Risposta #7 il: 30 Ottobre 2018, 14:27:08 »
Documentazione in rete:
https://git-scm.com/book/en/v2     il tomo di oltre 500 pagine.
https://git-scm.com/     il sito ufficiale di Git con la documentazione
http://www.bebox.it/introduzione.html     tra tanti testi di esempio, questo l'ho trovato molto chiaro, esiste anche una versione PDF.
Poi c'è veramente molto! :P

« Ultima modifica: 30 Ottobre 2018, 14:30:06 da kicco »
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline akrobaticone

  • Gran Maestro dei Gamberi
  • *****
  • Post: 983
    • Mostra profilo
Re:GitLab
« Risposta #8 il: 30 Ottobre 2018, 23:27:10 »
aggiornamento
Il comando INOLTRA esegue il commit, se il progetto è clonato da un repo remoto viene eseguito anche il push
viene cioè trasmesso con tutte le modifiche al repository remoto (GITLAB o GITHUB per esempio)
appare una finestra che chiede ID e password per salvare in remoto
(sono i dati con i quali ci siamo registrati su Gitlab per esempio)
al momento su xubuntu mi da errore, devo capire perchè
Quando si crea un progetto nuovo nel menu Progetto appare la voce PUT UNDER VERSION CONTROL
con questa opzione si inizializza GIT , equivale cioè a
Codice: [Seleziona]
$ git init
Immaginiamo ora di lavorare sul nostro progetto
siamo nel ramo master che rappresenta la versione stabile (si potrebbe chiamare anche in un altro modo, per esempio "stabile")
vogliamo aggiungere una nuova funzionalità, ma senza alterare la stabile
creiamo un nuovo ramo
Codice: [Seleziona]
$ git checkout -b nuova
che equivale a
Codice: [Seleziona]
$ git branch nuova
$ git checkout nuova
lavoriamo e committiamo le modifiche
una volta che siamo sicuri che il tutto funziona possiamo integrare le modifiche nel ramo master (o stabile)
torniamo nella master
Codice: [Seleziona]
$ git checkout master
fondiamo i due rami
Codice: [Seleziona]
$ git merge nuova
eliminiamo il ramo nuova
Codice: [Seleziona]
$ git branch -d nuova

Il ramo di lavoro cambia istantaneamente quando selezioniamo nella IDE dalla casetta GIT-> Branch e il porogetto viene ricaricato dal ramo selezionato

ciò che non capisco è che la prima volta che accedo al progetto mi mostra solo il ramo sui cui sono posizionato
se da terminale cambio il ramo nella stessa casella appaiono ora i due rami
se ne apro un terzo appare anche quello e così via
devo fare un po di prove

« Ultima modifica: 05 Novembre 2018, 09:08:55 da Akrobaticone »
"e il naufragar m'è dolce in questo mar"

Offline kicco

  • Senatore Gambero
  • ******
  • Post: 1.702
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Re:GitLab
« Risposta #9 il: 03 Novembre 2018, 19:03:16 »
Citazione
Se apri un progetto gambas gia gestito da git e nella sua cartella è presente la a cartella .git l'icona sulla barra degli strumenti appare automaticamente
questo accade se crei il progetto localmente oppure lo cloni da remoto
Ho scoperto che anche in Progetto -> Proprietà, appare la voce Version Control con i dettagli dei Commit.
 :ciao:
Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)

Offline kicco

  • Senatore Gambero
  • ******
  • Post: 1.702
  • So dove andare, seguitemi, ci perderemo insieme!
    • Mostra profilo
Re:GitLab
« Risposta #10 il: 23 Aprile 2019, 16:30:01 »
 :ciao:
Riprendo questo post che abbiamo lasciato in sospeso e riparto da qua:

Citazione
INOLTRA  equivale a Git commit
SYNCRONiZE equivale a Git pull, aggiorna localmente dal repo remoto
UNDO ALL CHANGES equivale a Git reset --hard
ADD EVERYTHINGS TO REPOSITORY equivale a Git add .
BRANCH visualizza e seleziona i branch del brogetto ed equivale nell'ordine a Git branch (visualizza) e git checkout ( passa a branch)....
+ altre considerazioni sempre di Akrobaticone che potete leggere nei post precedenti.

Ho fatto delle prove usando gli strumenti Git di Gambas e non ne sono venuto a capo.
Ho spulciato il codice di gambas3 nei sorgenti e da quel che ho potuto capire le funzioni che si selezionano come Inoltra o sincronizza o che dir si voglia eseguano funzioni differenti a seconda dello stato del repositorio locale.
Inoltra, per esempio, esegue il commit (in locale) se ci sono state delle modifiche al file system (locale) altrimenti, esegue il push, o almeno credo. Pensavo, onestamente, che leggendo il codice sorgente avrei potuto capire chiaramente le funzioni attuate ma... Il mistero si infittisce!
Dovrei cantare la solita canzone sulla mancanza di documentazione, ma sono ormai senza voce!!!  ;D
 :ciao:




Chi ha paura muore ogni giorno, chi non ha paura muore una volta sola. (Paolo Borsellino)