Passa ai contenuti principali

GitHub versionamento "Social"





GitHub è uno strumento di lavoro collaborativo distribuito Open Source che ha introdotto il concetto di "Social Code": il social network dei programmatori.

Definizione
GitHub è servizio web che offre un sistema di versionamento basato su Git: il sistema di versionamento creato da Linus Torvalds dieci anni fa.
Offre tutte le funzioni necessarie a gestire le versioni di documenti di testo che possono contenere, chiaramente, sia testo in linguaggio naturale o artificiale, come è il codice sorgente.

Ad oggi oltre 25 milioni di progetti sono ospitati da GitHub.

Si ha la possibilità di creare, oltre a degli account, delle "organizzazioni" che raccolgono più "committers" e vari "repository" che contengono i nostri progetti o quelli dell'organizzazione.

I repository possono essere liberamente accessibili, quindi pubblici, oppure privati. In quest'ultimo caso sarà necessario sottoscrivere un servizio a pagamento e potremo definire chi ha accesso e in che modo ai nostri progetti.

Se ci fosse l'esigenza di gestire progetti privati Git, come ogni prodotto open source, è facilmente implementabile su un server proprio sul quale si possono impostare anche progetti riservati senza dover sottoscrivere nessun tipo di abbonamento.

Git è il sistema di versionamento preferito da Google, Facebook, Apple, Linux ...

Qui non tratterò l'installazione perché guide passo-passo per i vari sistemi operativi si trovano in rete abbondanti e aggiornate.

Caratteristiche
Il sistema Git è un sistema distribuito: il server centrale conserva le copie delle varie versioni dei file dei vari progetti ma anche ogni membro del progetto fa da "backup" detenendone una copia locale. Questo gli conferisce un grado di sicurezza elevatissimo perché non è solo demandato al server.


Funzionalità
Le funzioni di versionamento sono completate da altre che strizzano l'occhio ai social network.

Cruscotto
Ogni utente di GitHub ha il suo cruscotto con informazioni di sintesi sulla sua attività diretta e su quella fatta all'interno di una "organizzazione":





Una volta creato "repository" sarà possibile creare delle sottodirectory inserendo semplicemente in nome della directory seguita da un "/":




Per creare un nuovo file basterà cliccare sul simbolo "+":




Una volta caricato il file è possibile inserire un messaggio che caratterizzi il "commit":




E' possibile creare una Wiki per la documentazione del nostro progetto:


Su ogni singolo file è possibile:
- Scaricarlo
- Modificarlo
- Cancellarlo
- Guardarne la storia delle varie versioni ("History")

I file sottoposti a Git possono avere tre "stati":
- Modified : un file del progetto che ho scaricato viene da me modificato in locale.
- Staged : il file modificato lo contrassegno perché Git lo committi con il prossimo "commit".
- Committed : inviato al server affinché lo tratti come una nuova versione da distribuire.

Su ogni progetto è possibile
- Osservarlo ("Watch") per avere le notifiche quando viene modificato
- Crearne una "diramazione" ("branch" vedi sotto)
- Crearne una "derivazione" ("fork") che altro non è che una copia associata al nostro account GitHub del progetto derivato.
- Gestire delle "richieste" ("issue") come to-do list, elenco di bug, requisiti ecc.


Branch e Merge
Il concetto e la gestione dei "branch" è da approfondire accuratamente. Con branch si intende una "diramazione" dal progetto principale di uno sviluppo parallelo di una parte o di tutto il progetto. 
Il branch può vivere di vita propria per sempre oppure può essere, ad un certo punto, raccordato con il progetto principale mediante l'operazione di "merge".




Eclipse Plugin
Per gli utilizzatori di Eclipse esiste un comodo plugin che si chiama EGit. Basta cercarlo nel Marketlace:




E dopo aver selezionata l'apposita perspective sarà possibile impostare la connessione al nostro progetto su GitHub da clonare in locale:



E finalmente potremo lavorare con la copia locale del progetto Git avendo a disposizione tutte le funzioni fornite da GitHub:





Licenza Creative Commons
Quest'opera è distribuita con Licenza Creative Commons Attribuzione - Condividi allo stesso modo 4.0 Internazionale.

Commenti

Post popolari in questo blog

SQL Pivot e Unpivot

PIVOT e UNPIVOT SQL




(Le tabelle ed il codice è preso da un articolo di HTML.it)

Spesso serve avere delle tabelle o viste costruite dinamicamente: le colonne che si vogliono rappresentate sono definite mediante i valori di una specifica tabella.

Con SQL Server 2005 e con Oracle 11g si hanno a disposizione questi due nuovi operatori: PIVOT e UNPIVOT.

Una tabella utile al nostro scopo potrebbe essere:




Qui il codice per crearla:


CREATE TABLE Vendite( ID INT NOT NULL, Anno INT NOT NULL, Venditore VARCHAR(50) NOT NULL, Ammontare FLOAT NOT NULL ) ALTER TABLE Vendite ADD ( CONSTRAINT dept_pk PRIMARY KEY (ID)); CREATE SEQUENCE dept_seq START WITH 1; CREATE OR REPLACE TRIGGER dept_bir BEFORE INSERT ON Vendite FOR EACH ROW BEGIN SELECT dept_seq.NEXTVAL INTO :new.id FROM dual; END;


Si ipotizzi di avere questi dati racconti in tabella:
IDAnnoVenditoreAmmontare12009Marco143,322009Andrea12932009Carlo90,5

Eclipse Che

Eclipse Che

Questo è un IDE lato server e in cloud scritto in Java basato sul concetto di workspace. Per chi è abituato all'uso di Eclipse IDE su desktop troverà molte similitudini. La differenza sostanziale è che Che lo si lancia dal browser !!!



Il browser scarica dal server il "client" rappresentato dall'interfaccia IDE, simile a quella del classico Eclipse desktop, per lavorare sul workspace.




L'interazione del client, nel browser dell'utente, e il workspace avviene mediante API e servizi REST messi a disposizione del server.
Su ogni workspace si possono creare progetti ed installare plugin necessari allo sviluppo e test dell'applicazione.
In ogni workspace si può creare un "ambiente" che può contenere a sua volta una "macchina" sulla quale installare il software.
Che offre, mediante un wizard, la possibilità di scegliere una vasta gamma di stack tecnologici da installare sulla propria macchina (lato server).

Ogni workspace può contenere i …

SEO - Concetti base

Hai creato una app, un sito web, un blog e vuoi che il mondo lo sappia ? Ok devi studiare cosa si intende per SEO.
Definizione SEO sta per "Search Engine Optimization" e sono tutte le tecniche necesarie a fare in modo che i motori di ricerca (Google il più diffuso) indicizzi le pagine web che descrivono il tuo prodotto e le proponga quando qualcuno inserisce parole chiavi che possono ricondurre al settore di appartenenza del tuo prodotto.
Esigenza Chiaramente risulta di interesse che il link alle pagine web del nostro prodotto compaiano quanto più in cima possibile alla lista dei risultati che i motori di ricerca restituiscono. L'obiettivo è quello di essere il primo link restituito.
Tecnologia L'indicizzazione di una pagina o di un sito in un motore di ricerca avviene quando il robot, di quel motore di ricerca, punta l'url e ne registra i contenuti. Quindi abbiamo bisogno di due cose 1) che i robot che indicizzano il web, sono detti "crawler" o "spider&qu…