Tracciamento versione con Subversion (SVN) per principianti
Hai mai desiderato lavorare su un progetto con la possibilità di tenere traccia delle tue modifiche e di ripristinarle? How-To Geek spiega come utilizzare il popolare sistema di tracciamento delle versioni, Subversion (a.k.a SVN).
Immagine chiaramente ambigua
Prelog
Questa guida mirerà a darti la possibilità di utilizzare il client subversion in generale e, se ne hai uno, sul tuo router * DD-WRT. Questa guida non è affatto una guida definitiva per Subversion e molte informazioni possono essere trovate sul Subversion Red Book. Questa guida ha lo scopo di darti la risposta in forma abbreviata alle domande più elementari.
Panoramica
Potrebbero esserci numerosi motivi per cui si vorrebbe poter "controllare" l'ultimo codice per un progetto software che utilizza un sistema di controllo delle versioni. In questo modo è possibile trarre vantaggio dalle ultime modifiche ancora non pubblicate, aiutare con i test e persino lo sviluppo. In questa guida, esamineremo la terminologia SVN di base, mostreremo come installare il client SVN su Linux, Windows e se avete un router DD-WRT abilitato OPKG. Abbiamo anche incluso un esempio di un progetto che puoi verificare e utilizzare per detto router.
Cos'è Subversion?
Subversion non è affatto l'unico sistema di controllo della versione esistente e le alternative includono Git (che è stato creato da Linus Torvalds il fondatore del kernel Linux), Mercurial e PerForce per citarne alcuni. Detto questo, è uno di quelli gratuiti, è maturo ed è ampiamente utilizzato in tutto il mondo.
Out of the Subversion "Red Book":
Subversion è una fonte libera / aperta sistema di controllo della versione (VCS). Cioè, Subversion gestisce file e directory e le modifiche apportate a loro, nel tempo. Ciò consente di recuperare versioni precedenti dei dati o esaminare la cronologia di come sono stati modificati i dati. A questo proposito, molte persone pensano a un sistema di controllo delle versioni come a una sorta di "macchina del tempo".
Nota: questo libro è l'ultima raccolta di conoscenze sulla sovversione e si consiglia di farvi riferimento su tutti gli argomenti relativi a Subversion.
Che cos'è il controllo delle versioni?
Il controllo delle versioni è un processo in cui viene salvato lo stato di un progetto in un momento specifico. Questo tipo di procedura viene spesso utilizzato per gestire lo sviluppo del software, in modo che il lavoro possa continuare a migliorare il progetto o aggiungere funzionalità, pur essendo in grado di tenere traccia di ciò che è cambiato dall'ultimo "punto di salvataggio" complessivo. Per elaborare questo tipo di procedura può essere utile per una singola persona, ma ancora di più per un gruppo di persone, tutte che lavorano sullo stesso progetto. Questo perché, di solito, quando si lavora a un progetto come gruppo, c'è una distribuzione delle responsabilità e persone diverse cambiano aspetti diversi del progetto. Senza un meccanismo di versioning, sarebbe molto difficile mantenere tutti in sincronia con gli ultimi cambiamenti di lavoro da tutti gli altri.
Terminologia
Il repository
Il repository è la posizione in cui vengono salvati tutti i dati da tutte le varie posizioni. Nel mondo di sovversione, dal punto di vista del cliente, è il server che detiene il database del progetto. Questo database contiene tutti i file che fanno parte del progetto con tutte le loro versioni precedenti.
Revisione
Quando viene creato un repository, viene assegnato il numero di revisione di zero (0). Questo numero viene incrementato di uno (1) ogni volta che viene eseguito un commit. Il numero di revisione è globale per il repository. Cioè, che non esiste un numero di revisione individuale per singoli file nel repository, anche se non è cambiato nulla in quel file per quel commit specifico.
La copia di lavoro
Una copia di lavoro è una copia locale (o "checkout") di una particolare versione. Di solito questa versione al check-out è quella "più recente" (detta anche "testa"), ma può essere richiesta una precedente. L'Utente può fare con la copia locale qualsiasi cosa lui / lei desideri, con la consapevolezza che, nel peggiore dei casi, potrebbero semplicemente ricontrollare il codice. Inoltre, questa copia è "privata". Questo perché finché non aggiorni o impegni la tua copia, non vedrai le modifiche di altre persone, né vedranno le tue.
Aggiornamento e risoluzione dei conflitti
Una copia di lavoro locale può essere aggiornata. Cioè, se hai "ritirato" una certa versione e mentre stavi lavorando, la versione sul repository è stata aggiornata, puoi aggiornare la tua copia di lavoro al più tardi. Infatti, il server ti impedirà di accettare le modifiche prima di aggiornare alla versione più recente in modo che corrisponda al repository. Questo viene fatto al fine di costringerti a risolvere i conflitti localmente, prima ancora di pensare di commettere modifiche al repository.
Fusione
L'unione fa riferimento al processo mediante il quale il codice modificato viene unito a una versione. Potrebbe anche comportare la risoluzione dei conflitti.
commit
L'impegno è il processo in cui le modifiche apportate alla copia locale verranno unite nel repository. Questa è la parte più pericolosa del processo, poiché è qui che le modifiche apportate potrebbero avere un impatto su altre persone che utilizzano lo stesso repository. Questo è il motivo per cui questo viene fatto solitamente dopo una certa considerazione, con il consenso della squadra e dopo aver risolto eventuali conflitti di fusione.
Il flusso di lavoro
Il flusso di lavoro più basilare dal punto di vista dell'utente quando si usa subversion è questo:
1. Controlla il codice esistente (di solito il "capo").
2. Apportare modifiche, aggiungere file e in genere sviluppare il codice.
3. Aggiornare alla versione più recente, per assicurarsi che la copia locale sia sincronizzata con gli aggiornamenti nel repository.
4. Localmente unire e risolvere i conflitti se necessario.
5. Conflicare le modifiche unite nel repository.
6. Vai a passaggio 2.
Lasciamo scoppiare
Installa il client
Per poter utilizzare subversion, è necessario installare il client sul proprio computer.
Su Linux
Devi solo installare il pacchetto. Su Ubuntu / Mint, questo sarebbe stato fatto con:
sudo aptitude install subversion
Su DD-WRT
Se hai seguito il "Come installare il software aggiuntivo sul tuo router di casa (DD-WRT)", puoi installare il client svn semplicemente emettendo:
aggiornamento opkg; opkg installa subversion-client
Su Windows
Mentre noi utenti appassionati di geek possiamo iniziare a dimenticare che la GUI esiste anche a volte, non tutti hanno. Se si desidera utilizzare un client Windows per connettersi a un repository SVN, di gran lunga il più popolare è "Tortoise". Per usarlo, basta scaricare il programma e installarlo nella modalità "next, next, finish".
Crea il "repository"
Mentre non entreremo in molti dettagli su come configurare un server di subversion in questa guida, l'alternativa di Google non è un brutto inizio per l'utente inesperto. Per creare un repository Google:
- Vai al sito web di hosting di Google Code e "crea" un nuovo progetto.
- Nella pagina successiva, compilare i campi richiesti e selezionare il tipo di "sistema di controllo versione" da sovvertire.
Nota. Puoi dare un'occhiata a quale è la differenza tra le offerte di Google delle licenze, prima di selezionarne una per il progetto. - Fai clic su "Crea progetto".
Una volta che il tuo progetto è stato creato, dovresti essere in grado di trovare le istruzioni su come accedervi nella scheda "Sorgente".
La cosa bella del codice di Google è che abiliterà una versione anonima di sola lettura per il tuo progetto. Se non vuoi affrontare il problema di creare il tuo progetto, puoi controllare in modo anonimo il repository di questo autore.
Una nota sul progetto hotfortech: Questo progetto è pensato per essere un wrapper per le funzionalità che sono state aggiunte a DD-WRT su How-To Geek (che io personalmente uso) più alcune modifiche personali. Mentre questo progetto è orientato a lavorare in congiunzione con gli articoli pubblicati qui su Howtogeek, è ancora il mio progetto privato. Cioè, è molto adatto al mio router Buffalo (architettura AR71xx), i miei capricci personali ed è incline al borkage occasionale.
Su Linux / DD-WRT
Crea la directory su cui lavorare, ad esempio su DD-WRT, che potrebbe essere:
mkdir -p / jffs / svn; cd / jffs / svn
Il comando completo su Linux è costituito dal comando SVN stesso, dalla direttiva "checkout", dall'indirizzo del repository e dalla directory da verificare. Crea una directory vuota ed esegui il comando seguente:
svn checkout http://hotfortech-dd-wrt.googlecode.com/svn/trunk/ hotfortech-dd-wrt-read-only
Si noti che nell'esempio sopra, la versione di sola lettura è in fase di estrazione. Se hai scelto di creare il tuo repository, dovrai utilizzare il link httpS.
Su Windows
Poiché la tartaruga è un'estensione della shell, per utilizzarla è necessario utilizzare il menu di scelta rapida di Windows Explorer (clic con il pulsante destro del mouse). Infatti, se provi a richiamarlo dal menu di avvio, otterrai:
- Crea una directory vuota.
- Fai clic con il pulsante destro del mouse per visualizzare il menu di scelta rapida.
- Seleziona "SVN Checkout":
- Copia e incolla il link per il progetto (se ne hai uno) nella casella di testo "URL":
- A seconda della dimensione del tuo progetto, questo potrebbe richiedere un po 'di tempo, ma quando il "Checkout" è stato completato dovresti vedere qualcosa del tipo:
- Potresti iniziare a sviluppare.
"Aggiorna" e "Unisci" la tua copia di lavoro
Se stai lavorando sul codice con i colleghi o stai aggiornando il codice da più postazioni (ad esempio laptop, desktop o persino router), dovrai aggiornare la tua copia di lavoro prima di commettere le ultime modifiche.
Su Linux / DD-WRT
Il comando per eseguire questa operazione su questi sistemi POSIX è semplicemente:
svn up
Su Windows
- Fare clic con il tasto destro del mouse sulla directory di lavoro e selezionare "SVN Update":
- Se incontri conflitti, prova a seguire le istruzioni sullo schermo e usa il tuo giudizio su cosa fare su di loro.
"Confida" le tue modifiche
Cioè, dovresti essere senza conflitti e pronto ad aggiornare il repository con le tue modifiche.
L'unico punto da notare qui è che è pratica comune aggiungere un messaggio di "log" al commit, in modo da poter facilmente ricordare il motivo per cui sono state apportate le modifiche. In effetti, il repository di Google rende questo un pre-requisito obbligatorio per l'impegno.
Su Linux / DD-WRT
Questo è un esempio del commit che ho fatto al progetto hotfortech che lo ha portato alla versione 19:
svn commit -m "aggiornato per riflettere il nuovo collegamento del pacchetto ant-ads"
Su Windows
- Fare clic con il tasto destro del mouse sulla directory di lavoro e selezionare "SVN Commit":
- Si dovrebbe essere accolti da una finestra che consente di annotare un messaggio di registro:
- Fai clic su OK e quando viene richiesta una password, fornisci la password generata da Google.
- Se il commit ha avuto successo, dovresti vedere qualcosa del tipo:
- Cioè, dovresti essere in grado di impegnarti come un BOSS.
Osservazioni finali
Questo dovrebbe essere sufficiente per iniziare. Si consiglia di leggere i manuali di riferimento SVN per ottenere una comprensione più profonda e migliore su tutti gli usi, le opzioni e le avvertenze di SVN. Inoltre, ti ricordiamo (ancora) che la sovversione NON è l'unico sistema di controllo della versione là fuori e GIT (che è stato creato da Linus Torvalds il fondatore del kernel Linux) sembra stia guadagnando popolarità negli ultimi anni.
Se sceglierai di eseguire "running-config.sh" dal progetto hotfortech sul tuo router, scoprirai che verrà installato per te: il pacchetto anti-ads, lo script geek-init di Opkg, così come cose come GNU "ls", "less", "BASH" e altro ancora.
/jffs/svn/hotfortech-dd-wrt/running-conf.sh
Altre funzionalità sono in sospeso e verranno aggiunte in futuro.
Gli amministratori di sistema cancelleranno la codifica.