You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: res/fLessons/15-12-15.tex
+99Lines changed: 99 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -34,7 +34,106 @@ \section{Lezione del 15-12-15}
34
34
35
35
\item cc:attributionName
36
36
\item cc:attributionUrl $\to$ permette di citare direttamente la licenza di tutto il documento, semplificando il suo ritrovamento
37
+
\item dc:source
38
+
\item cc:morePermission $\to$ permette dare un link per permettere di acquistare una licenza pi\`u permissiva
37
39
38
40
\end{itemize}
39
41
40
42
Le altre voci vengono riprese da altri vocabolari, come ad esempio Double Core o xhtml.
43
+
44
+
\textbf{Dc:type} permette di specificare il tipo di oggetto. Alcuni possibili valori possono essere:
45
+
\begin{itemize}
46
+
47
+
\item dcmitype:Text
48
+
\item dcmitype:Sound
49
+
\item dcmitype:StillImage
50
+
\item dcmitype:MovingImage
51
+
52
+
\end{itemize}
53
+
54
+
Un esempio \`e lo schema creato dal ``choose license'' di Creative Commons
55
+
56
+
\begin{figure}[h]
57
+
\centering
58
+
\includegraphics[scale=0.4]{15-12-15-02}
59
+
\end{figure}
60
+
61
+
\subsection{Subversion}
62
+
63
+
Altre risorse esterne: \textit{Version Control with Subversion} - Rilasciato sotto licenza CC all'indirizzo \url{http://svnbook.red-bean.com}
64
+
65
+
Subversion presenta un approccio completamente diverso rispetto ad altri sistemi di versionamento come Git o Mercurial: \`e presente un server centrale, e i client possono accedere, leggere o pushare delle modifiche. Ogni modifica del repository viene creata una nuova revisione. Subversion permette di avere non solamente uno snapshot del sistema in quel momento ma anche una shadow copy del lavoro: ovvero \`e possibile avere una visione ``ibrida'' tra due revisioni. \`E possibile avere pi\`u rami, ed \`e possibile eseguire il merge dei rami.
66
+
Subversion non si occupa di eseguire alcun tipo di analisi semantica, ma lavora dal punto di vista puramente testuale.
67
+
Termini importanti:
68
+
\begin{itemize}
69
+
70
+
\item Checkout e working copy
71
+
\item Export $\to$\`e possibile eseguire una copia del file senza i file di subversion
72
+
\item Commit $\to$ la modifica viene inviata sul server e si ottiene una nuova revisione
73
+
\item Update $\to$ vengono presi gli ultimi aggiornamenti dal repository
74
+
\item Revisioni $\to$ memorizza l'ultima modifica del file nel repository, e permette di mantenere le versioni. Funzionamento delle revisioni:
75
+
\begin{itemize}
76
+
77
+
\item Per repository
78
+
\item Collegate al singolo file
79
+
\item Tag e branches $\to$ i tag permettono di dare un nome alla ultima revisione. I rami (branch) sono delle revisioni multiple che hanno una vita propria, e possono essere di sviluppo, di prova o anche stabili. Nei rami \`e possibile continuare a lavorare, mentre nei tag no.
80
+
81
+
\end{itemize}
82
+
83
+
\end{itemize}
84
+
85
+
In Subversion nulla vieta di avere pi\`u progetti in un unico repository. All'interno di ogni cartella si \`e liberi avere la propria gerarchia di cartelle. \`E impotante notare che un repository non contiene una copia diretta dei progetti ospitati. Il repository \`e possibile accederci via molteplici interfacce: http, https, svn, svn+ssh, file.
86
+
87
+
\subsubsection{Problema dell'Locking}Il problema del Locking si verifica quando due utenti eseguono le modifiche al server contemporaneamente. Si vuole evitare che il lavoro di un utente non venga sovrascritto dal lavoro di un altro. Esistono due approcci principali:
88
+
\begin{itemize}
89
+
90
+
\item Alla apertura di un file il repository blocca l'accesso a quel file, impedendo gli altri utenti di editare quello specifico file. Questo sistema porta ad una serie di problemi: il lock pu\`o essere lungo in modo arbitrario, viene creata una serializzazione non necessaria e si ha una falsa sicurezza.
91
+
\item Locking ottimistico: permette a pi\`u utenti di effettuare le modifiche allo stesso file contemporaneamente. Quando accadono i conflitti devono essere risolti dai programmatori, e poi le modifiche devono essere caricate sul server, mantenendo una versione consistente (merge manuale).
92
+
93
+
\end{itemize}
94
+
95
+
\subsubsection{Revisioni e file}
96
+
Subersion memorizza per ogni file: la revisioni del repository su cui \`e basato, un timestamp di quando \`e stato aggiornato da repository l'ultima volta, e i file originali prelevati dal repository.
97
+
98
+
Durante il lavoro un file pu\`o essere in uno stato di:
99
+
\begin{itemize}
100
+
101
+
\item Inalterato localmente e aggiornato
102
+
\item Alterato localmente e aggiornato
103
+
\item Inalterato localmente e non aggiornato
104
+
\item Alterato localmente e non aggiornato $\to$ si ottiene l'erroe ``out of date'' ed \`e necessario eseguire un merge manuale
105
+
106
+
\end{itemize}
107
+
108
+
\paragraph*{Esempio pratico}Per creare un repository:
109
+
\begin{verbatim}
110
+
svnadmin create repo #repo e' il nome del repository
111
+
\end{verbatim}
112
+
Dopo la creazione di un repo, per inserire i dati basta semplicemente creare i file all'esterno della cartella di svn. Per inserirli nel repository \`e necessario creare una certa struttura standard. Per importari i dati si usa la keyword \underline{import}, in cui bisogna specificare la cartella e il repository in cui bisogna aggiungere questi file. \`E necessario specificare lo schema (protocollo), l'indirizzo e il path.
113
+
\begin{verbatim}
114
+
svn import proj/ file:///home/cesco/tmp/repo
115
+
\end{verbatim}
116
+
A questo punto si otterr\`a un errore, in quanto \`e necessario specificare un editor per committare i messaggi. Con l'opzione ``-m''\`e possibile inserire direttamente un messaggio
Per visualizzare i file all'interno del repo \`e possibile dare:
121
+
\begin{verbatim}
122
+
svn ls file:///home/cesco/tmp/repo
123
+
\end{verbatim}
124
+
\`E importante notare che non comparr\`a la cartella, in quanto vengono aggiunti solamente i file all'interno della cartella ``proj'' specificata prima.
125
+
126
+
Per importare un repository si esegue un \textit{checkout}, ovvero:
127
+
\begin{verbatim}
128
+
svn co file:///home/cesco/tmp/repo proj #proj e' la cartella dove verranno inseriti i file
129
+
\end{verbatim}
130
+
A questo punto viene prelevato dal repository i file e vengono inseriti in una cartella con lo stesso nome.
131
+
132
+
Per controllare eventuali file modificati \`e necessario scrivere:
133
+
\begin{verbatim}
134
+
svn status #oppure svn st
135
+
\end{verbatim}
136
+
137
+
\subsubsection{Strutture e configurazioni}
138
+
139
+
\`E presente un file di configurazione (svnserve.conf) che permette di gestire le varie configurazioni, come per le password (passwd) e il login (authz). db \`e la cartella del repository, e hooks \`e la cartella dove possono essere inseriti degli script agganciabili agli eventi. \`E presente un README e un file format.
0 commit comments