Brevissimo Subversion tutorial

HO da poco caricato nel repository di wordpress.org la nuova versione aggiornata del mio plugin FlickrRSS RU ed essendo passato un po di tempo dall’ultima volta che l’ho fatto, ci ho impiegato qualche minuto per ricordarmi bene la procedura. Ecco quindi una brevissima guida per ricordami bene come si fa la prossima volta. In realtà questa guida va benissimo per qualsiasi progetto utilizzi subversion come software di controllo di versione.

Per prima cosa se non avete già una copia in locale sincronizzata (o non vi ricordate dove sia) bisogna scaricare il repository, spostatevi nella cartella dove lo volete scaricare e create una cartella in cui metterlo:

$ mkdir flickrrssRU

poi lanciate il comando per copiarlo tutto in locale

$ svn checkout http://svn.wp-plugins.org/flickrrss-ru flickrrssRU 

l’output sarà qualcosa di simile a questo:

A    flickrrssRU/trunk
A    flickrrssRU/trunk/flickrrssRU.php
A    flickrrssRU/trunk/screenshot-2.png
A    flickrrssRU/trunk/flickrrssRU-settingspage.php
A    flickrrssRU/trunk/readme.txt
A    flickrrssRU/trunk/screenshot-1.png
A    flickrrssRU/branches
A    flickrrssRU/tags

spostatevi nella cartella della copia locale, per esempio nel mio caso

$ cd /var/www/flickrrssRU 

e controllate che sia aggiornata all’ultima versione sul repository. Nel caso ci siano più persone che lavorano allo stesso plugin (più in generale allo stesso progetto) potrebbe essere che non lo sia, ovviamente qualcuno potrebbe aver modificato il progetto. Se invece l’avete appena scaricato sarà sicuramente aggiornato.

$ svn update

se state per rilasciare una nuova versione del progetto, e non dovete solo apportare delle modifiche minori, prima di tutto bisogna taggare la versione attuale in modo da renderla fissa nel tempo. Per esempio nel caso la nuova versione aggiunga delle nuove funzioni, a qualcuno potrebbero non interessare, o un altro caso molto più comune è per la compatibilità, se nella versione che state andando a rilasciare sono state fatte delle grosse modifiche potebbe non funzionare più con alcune applicazioni, pertanto qualcuno in questi casi vorrà comunque continuare ad utilizzare le vesioni precedenti.

Per fare questo copiamo il contenuto della cartella trunk (quindi l’attuale versione del progetto da taggare) in una sottocartella di tags nominata con la versione che stiamo andando ad “archiviare”

$ svn copy trunk tags/0.2 

ora possiamo aggiornare e modificare i file che si trovano nella cartella trunk con i file della nuova versione. Ricordatevi se state rilasciando una nuova versione di un plugin per WP di modificare i numeri di versione anche all’interno del file readme. Una volta che avete inserito nella cartella trunk i file aggiornati se avete aggiunto dei nuovi file che prima non c’erano dovete lanciare questo comando:

$ svn add trunk/nome_nuovo_file

oppure se dovete eliminare dei file:

$ svn delete trunk/nome_file_da_rimuovere

Ora per finire bisogna caricare tutte le modifiche effettuate ovvero effettuare il COMMIT. Con esso tutte le modifiche effettuate sui dati vengono memorizzate. Il -m serve per poter personalizzare il messaggio di log ovvero il testo messo tra virgolette, è un aiuto quando si va a vedere il log del repository per ricordarsi le modifiche che sono state effettuate ad ogni commit.

$ svn commit -m "tagging version 0.2"

Comandi Subversion

Vi lascio la lista dei principali comandi di subversion (rigorosamente da lanciare preceduti dal comando svn) con una brevissima descrizione, per vedere bene come funzionano basta lanciare il comando:

$ svn help nome-del-comando

i comandi scritti tra parentesi tonde sono gli equivalenti meno user-friendly ma più veloci

add Aggiunge file e directory al controllo di versione
blame (praise, annotate, ann) Restituisce il contenuto dei file specificato con varie informazioni
cat Restituisce il contenuto dei file specificato
checkout (co) Copia in locale una working copy
commit (ci) Trasmette le modifiche della copia locale al repository
copy (cp) Copia file o cartelle da un sorgente ad una destinazione
delete (del, remove, rm) Rimuove file o cartelle dal controllo di versione
diff (di) Mostra le differenze tra due revisioni
export Crea una copia senza metterla sotto controllo di versione
help (?, h) Descrive l’uso di un comando
import Esegue il commit di un percorso non sotto il controllo di versione
info Mostra varie informazioni
list (ls) Elenca il contenuto della directory nel repository
lock Blocca cartelle e file nel repository dalla modifica da parte di altri utenti
log Mostra i log di un file o dell’intero repository
merge unisce varie modifiche dello stesso file
mergeinfo mostra le info relative al merge
mkdir crea una cartella nel repository
move (mv, rename, ren) sposta o rinomina file e cartelle
status (stat, st) Mostra lo stato attuale tra la copia locale e il repository
unlock Sblocca i percorsi o i file bloccati con lock
update (up) Aggiorna la copia locale con quella del repository

Ed ecco un “cheat sheet” per subversion:

Foto random del tuo album di Flickr sul tuo Blog

ATTENZIONE: Ho creato un plugin per WordPress con queste funzioni, maggiori informazioni le trovate nella pagina ufficiale. Ormai tutti conoscerete Flickr il social network che da la possibilità di gestire un album con le proprie foto e condividerle con amici o con l’intera rete. Per implementare Flickr in WordPress ci sono vari Plugin a disposizione ma fra tanti ho scelto FlickrRss che consente facilmente di integrare le foto direttamente dal Feed Rss di Flickr, in questo articolo analizzeremo ogni passaggio dall’installazione all’implementazione e in fine, per chi volesse, con una piccola modifica del codice (non servono grandi conoscenze di php) andremo a rendere casuale l’ordine e le foto pubblicate dal nostro album così anche se non aggiorniamo spesso il nostro album i lettori non vedranno sempre le stesse ultime foto inserite.

Installazione

Inazitutto partiamo scaricando il plugin da questo sito, un volta scaricato il file zip, possiamo scompattarlo e caricarlo nella cartella wp-content/plugins tramite ftp oppure da pannello di controllo nel menu di sinistra andare su plugin/aggiungi nuovo e caricare il file compresso.

Una volta caricato il plugin entriamo nel pannello di controllo, dal menu di sinistra clicchiamo su Plugin e nella lista dei plugin non attivi vedremo anche quello che ci interessa “FlickrRss”, lo attiviamo cliccando su “attiva” alla destra della descrizione.

Implementazione

Ora per implementarlo nel blog abbiamo due possibilità,

  • se il nostro tema è widgest ready (ovvero supporta i Widget), basta andare dal menu su Aspetto -> Widget a cliccare su “aggiungi” affianco a flickRss.
  • Oppure (consigliato) andando a modificare il nostro tema inserendo questo tag dove vogliamo che venga inserito il nostro album:[php toolbar="false"]<?php get_flickrRSS();?>[/php]

Nel pannello di controllo dopo l’installazione comparirà sotto la voce “impostazioni” la voce flickrRss dal quale potremmo configurare varie cose come:

  • il numero di foto da visualizzare,
  • la tipologia di album, se volte le vostre foto personali selezionate “user”
  • i tag delle foto da visualizzare (se lasciate in bianco visualizzate da tutto l’album)
  • l’user ID, se non lo conoscete potete cliccare affianco su “find yout ID” per ricavarlo dal vostro user name
  • il codice html da mettere prima dell’album
  • come impostare il tag di visualizazzione dell’immagine e il suo link
  • il codice html da mettere dopo l’album

Sulla destra potete vedere i metatag da inserire nel Item Html per poter personalizzare il funzionamento, di default il link dell’immagine rimanda alla pagina di Flickr ma nel mio caso ho voluto implementare con lightbox l’ingrandimento dell’immagine.(farò una guida anche su questo)
Per migliorare l’aspetto delle anteprime potete racchiudere il vostro album all’interno di un div con un “id” specifico nel tema oppure appunto definendo il before list e l’after list e andare a specificare i CSS per quel determinato div.

Versione random

Una cosa che mi piaceva poco di questo plugin è che ogni volta che viene visualizzato il blog si vedono sempre se solite ultime foto in ordine di inserimento. Quindi ho cercato il modo di rendere random sia la visualizzazione delle foto sia la scelta di quali visualizzare purtroppo il feed RSS di flickr è limitato a 20 foto. Anche se il modo per ovviare a questa cosa esiste ma la vedremo in un altro articolo.Ora tornando al random per poterlo implementare bisogna modificare “flickrrss.php” potete farlo andando dal pannello di controllo in plugin ? editor, sulla destra selezionate flickrRSS
cercate “function printGallery” (è circa a metà intorno alla riga 131 ma potete comunque utilizzare lo strumento di ricerca per trovarlo). Il codice che vi si presenta dovrebbe essere questo

[php]function printGallery($settings = array()) {
if (!is_array($settings)) {
$settings = $this->fixArguments(func_get_args());
}

$settings = array_merge($this->getSettings(), $settings);
if (!($rss = $this->getRSS($settings))) return;
# specifies number of pictures
$items = array_slice($rss->items, 0, $settings['num_items']);
echo stripslashes($settings['before_list']);
# builds html from array
foreach ( $items as $item ) {
[/php]

ora lo selezionate e lo sostituite interamente (attenzione a non sbagliare neanche una riga) con questo

[php]function appartiene($random,$foto){
$dim = count($foto);
for($j=0;$j<$dim;$j++)
if($foto[$j]==$random)return 0;
return 1;
}

function printGallery($settings = array()) {
if (!is_array($settings)) {
$settings = $this->fixArguments(func_get_args());
}

$settings = array_merge($this->getSettings(), $settings);
if (!($rss = $this->getRSS($settings))) return;

$numero_foto = 20; //numero di foto tra cui andare a random
$items = array_slice($rss->items, 0, $numero_foto);
echo stripslashes($settings['before_list']);

$foto=array($numero_foto); //tiene conto delle foto già messe

for($ji=0;$ji<$settings['num_items'];$ji++){
$random = rand(0,$numero_foto-1);
while($this->appartiene($random,$foto)==0){
$random = rand(0,$numero_foto-1);
}//controlla che la foto non sia già stata messa
array_push($foto,$random);
$item = $items[$random];[/php]

Nel caso che il vostro album contenga meno di 20 foto per non avere dei buchi dovete modificare $numero_foto che trovate alla riga n.146 (del codice qua sopra intendo) con il numero di foto presenti nel vostro album

In questo modo ad ogni visualizzazione del vostro blog le immagini cambieranno rendendolo più dinamico.

ATTENZIONE: Ho creato un plugin per WordPress con queste funzioni, maggiori informazioni le trovate nella pagina ufficiale.