Kvgo.us

Kvgo.us

Da svn scaricare

Posted on Author Mezijar Posted in Rete

  1. Introduzione
  2. Osservazioni
  3. Strumenti di sviluppo: Subversion (SVN)
  4. Traduzione di "SVN" in tedesco

Tale copia è una normale cartella del filesystem che contiene i file scaricati dal server; in aggiunta, però contiene una serie di informazioni che il. Dopo aver installato Tortoise (non è necessario un client SVN separato), creare una nuova cartella vuota per il progetto da qualche parte e fare clic con il. [Guida] Come scaricare progetti in formato SVN Ecco il comando da digitare: La guida è stata realizzata da Andrea Busi per BubiDevs. TortoiseSVN richiede all'utente l'indirizzo remoto del repository da scaricare (nel Dando il via alla procedura, Tortoise SVN riversa nella cartella scelta il.

Nome: da svn scaricare
Formato: Fichier D’archive
Sistemi operativi: MacOS. Android. iOS. Windows XP/7/10.
Licenza: Solo per uso personale
Dimensione del file: 45.68 MB

È possibile che alcuni server supportino più di un protocollo fra quelli sopra elencati. Per maggiori informazioni, si consulti l'amministratore del server. Creare un repository SVN La spiegazione che segue spiega come creare un repository locale sul proprio computer. Creazione gruppo e utenti Prima di tutto è necessario creare un nuovo gruppo utente nell'esempio sarà chiamato subversion che avrà accesso alla cartella dei sorgenti, dunque si dovrà assegnargli l'utente attuale e l'utente di apache chiamato www-data.

Aprire una finestra di terminale e digitare: sudo addgroup subversion sudo adduser nomeutente subversion sudo adduser www-data subversion Con la dicitura nomeutente si vuole indicare il nome dell'utente che si desidera aggiungere al gruppo subversion. Ripetere il passo per ogni utente al quale si desidera garantire l'accesso, sostituendo tale espressione con il suo nome utente.

Divertente 2 Il pezzo che stai leggendo è stato pubblicato oltre un anno fa. La trattazione seguente è piuttosto datata. Sebbene questo non implichi automaticamente che quanto descritto abbia perso di validità, non è da escludere che la situazione si sia evoluta nel frattempo.

Raccomandiamo quantomeno di proseguire la lettura contestualizzando il tutto nel periodo in cui è stato proposto. In questo caso dovremmo creare due rami separati, destinati a rimanere tali, trasportando dall'uno all'altro le modifiche che riguardano le parti comuni.

La creazione di un ambiente di sviluppo temporaneo, destinato prima o poi a essere fuso con il ramo principale. Si crea quindi un ramo secondario nel quale viene ospitata la versione di sviluppo. Quando questa versione sarà completa, i due rami saranno riuniti in uno solo. Specialmente nel secondo caso, è importante tenere sincronizzati spesso i due rami. Se infatti questo non avviene, i due binari si allontanano sempre di più e quando sarà il momento di unirli avremo un numero ingestibile di conflitti.

E oltre ai conflitti veri e propri intesi come sovrapposizioni delle modifiche è sempre possibile che ci siano altre modifiche, in punti diversi dei file, che in qualche modo ci coinvolgono e ci costringono ad adattare il nostro codice.

In questo caso, il dialogo tra gli sviluppatori è fondamentale. Creazione di un ramo Partiamo innanzitutto con una nota sulla denominazione delle cartelle del nostro progetto. Se prevediamo che il nostro repository possa avere più rami, è bene inserire al primo livello del repository due sottocartelle separate, una che contiene il ramo principale e una che contiene gli altri rami.

Per convenzione, la cartella del ramo principale viene chiamata trunk e la cartella dedicata ai rami viene tipicamente chiamata branches. Si tratta solo di convenzioni, dunque possiamo sostituire i nomi a nostro piacimento, ma rispettare degli standard di nomenclatura usati in tutto il mondo non è una cattiva idea. Per Subversion non esiste realmente il concetto di rami separati: se creiamo una copia di una cartella, per lui è semplicemente questo: la copia di una cartella.

Siamo noi che, potendo fare checkout, update e commit di singole cartelle del repository, lo consideriamo un ramo separato e lavoriamo solo su quello.

Ecco perchè è importante separare le cartelle e dargli una nomenclatura esplicativa: perchè ci serve per assegnare il concetto di "ramo" a quelle che per Subversion sono semplicemente cartelle diverse di uno stesso progetto, che — come tutti gli elementi copiati — condividono lo storico fino al momento della copia. Trattandosi sempre di uno stesso repository, inoltre, la numerazione delle revisioni rimane comune tra i rami: ad esempio se effettuiamo un commit sul ramo principale e generiamo la revisione 10, il commit successivo sul ramo secondario produrrà la revisione Spostare un repository già creato Se abbiamo già messo del contenuto nel repository e vogliamo spostarlo per creare la struttura adeguata ad ospitare rami separati, possiamo utilizzare il comando svn move: svn move URL1 URL2 Con TortoiseSVN, possiamo avviare il Repository Browser e utilizzare l'opzione Create folder per creare la struttura che ci interessa, e poi trascinare direttamente con il mouse i file già esistenti nella nuova locazione.

Questa operazione non richiede particolare attenzione per essere effettuata, ma è fondamentale che tutti gli utenti ne siano informati. Unire i cambiamenti Ci sono diversi momenti in cui risulta necessario unire i cambiamenti tra diversi rami.

Come abbiamo già detto, è bene mantenerli sincronizzati di tanto in tanto, per evitare di far crescere a dismisura il numero di conflitti.

Introduzione

Inoltre, se si tratta dell'implementazione di nuove caratteristiche, prima o poi dovranno essere fuse con il ramo principale. Il trasporto delle modifiche tra rami viene effettuato con il comando svn merge.

Nota: dalla versione 1. Merge basilare La situazione più frequente è quella in cui l'utente che sta lavorando sul ramo secondario vuole trasportare sulla propria copia di lavoro le modifiche effettuare sul ramo principale, per affrontare e risolvere per tempo non solo i conflitti — cioè le vere e proprie sovrapposizioni di modifiche — ma anche altri cambiamenti che potrebbero richiedere adattamenti del proprio codice.

Il comando merge è piuttosto potente. Tutto quello che dobbiamo fare noi è assicurarci, prima di eseguirlo, che tutti i cambiamenti locali sulla nostra copia di lavoro siano stati caricati con un commit sul ramo corrispondente cioè il ramo secondario e dopo l'esecuzione, esaminare con calma le modifiche apportate col comando svn diff. Merge successivi L'operazione di sincronizzazione sopra descritta non avviene una volta sola: se il lavoro sul ramo secondario dura molto, sarà utile ripeterla frequentemente.

Prima della versione 1. Nelle ultime versioni di SubVersion invece le informazioni di merge vengono salvate come proprietà dei rami, in particolare, viene mantenuta l'ultima revisione a cui ci si è sincronizzati. Ricordiamo che per Subversion i rami sono normali cartelle, quindi possono avere associate delle proprietà dette anche metadati.

Osservazioni

Il comando merge sfrutta questa possibilità per salvare una proprietà mergeinfo che verrà esaminata nei successivi merge, per evitare di riportare più volte gli stessi cambiamenti. Quindi invocando in seguito lo stesso comando usato per la prima sincronizzazione verranno uniti solo i cambiamenti successivi.

Fusione di due rami Uno dei due motivi principali — e probabilmente il più frequente — per creare rami separati è quello di avere un ambiente di sviluppo isolato temporaneo per realizzare una serie di importanti modifiche, come l'aggiunta di nuove funzionalità, che andranno poi unite al ramo principale. Supponiamo di aver fatto le cose per bene, e esserci tenuti frequentemente sincronizzati con il ramo principale per avere a disposizione le modifiche fatte da altri.

Quello che ci rimane da fare ora è l'opposto: riportare le nostre modifiche. Il primo consiglio è quello di chiedere a tutti i collaboratori di sospendere temporaneamente i commit sul repository.

Infatti, le prime volte che fonderemo diversi rami potremmo metterci un po', e per essere certi di fare tutto bene, è meglio evitare sovrapposizioni con altre modifiche su uno qualsiasi dei due rami. In ogni caso non rischiamo mai di perdere del lavoro. A Subversion non sfugge nulla. Tuttavia, se qualcuno carica una modifica durante il processo di fusione, e non ne siamo al corrente, potremmo trovare qualcosa che non torna e pensare di avere sbagliato qualcosa.

Con l'aquisizione di maggior confidenza con Subversione con la gestione dei branch, fare molte cose contemporaneamente non sarà più un problema. La procedura consigliata è la seguente.

Innanzitutto assicuriamoci di fare un'ultima sincronizzazione dal ramo principale verso il secondario, come spiegato nella lezione precedente. Riepiloghiamo i passaggi: commit della copia di lavoro verso il ramo secondario, merge del ramo principale sulla copia di lavoro, risoluzione di conflitti e altre anomalie, commit della copia di lavoro verso il ramo secondario.

A questo punto scarichiamo altrove una nuova copia di lavoro del ramo principale. Non è obbligatorio crearla da zero con un checkout; se abbiamo a disposizione una copia di lavoro del ramo principale, è sufficiente aggiornarla con un update.

A questo punto, è sufficiente effettuare un commit di questa copia di lavoro per avere sul ramo principale il risultato della fusione dei due rami. Di fatto, stiamo facendo in modo che i rami siano di nuovo uguali; ma con la la storia di tutte le modifiche salvata nelle varie revisioni e quindi facilmente recuperabile. Dopo un reintegrate, il ramo secondario è "secco". Dovete cancellarlo. Fortunatamente per Subversion il "ramo" altro non è che una cartella del progetto. Per cui: è possibile cancellarlo semplicemente rimuovendo la cartella corrispondente.

Le etichette tags Nelle prime lezioni abbiamo scelto di tradurre in "etichetta", il termine originale "tag". Questo termine risulta comunque talmente diffuso da essere diventato internazionale.

Certo, potremmo semplicemente annotare il numero della revisione, e — visto che in Subversion tale revisione rimane sempre disponibile — consultarla usando quel numero. Tuttavia si preferisce identificare in maniera più chiara e mnemonica la revisione, associando un nome autoesplicativo.

Strumenti di sviluppo: Subversion (SVN)

Come altri concetti, anche questo non è una caratteristica esclusiva di Subversion, ma si applica a tutti i sistemi di controllo di versione. Subversion risolve la questione dei tag in maniera molto semplice, allo stesso modo dei rami: con una copia. Comunque non c'è da preoccuparsi, se anche qualcuno dovesse accidentalmente o volontariamente modificare una revisione tag, possiamo annullare i cambiamenti e tornare alla revisione originale.

Altri utilizzi delle revisioni tag Il comando copy permette di duplicare non solo le cartelle del repository, ma anche la copia di lavoro locale. Questo è chiaramente diverso da un commit che unisce tutte le modifiche locali al repository o da un export un comando aggiuntivo che crea una copia di soli file, quindi priva di informazioni di versione : con tale comando caso vado a creare una copia esatta del contenuto della mia copia di lavoro, qualunque esso sia.

La copia di lavoro locale offre molta flessibilità, e gli utenti avanzati di Subversion la sfruttano. Sulla copia locale possono essere presenti file e modifiche provenienti da diverse revisioni e da diversi repository, nonché modifiche locali. Amministrazione del repository La struttura del repository Nelle prossime lezioni affrontiamo alcuni argomenti che possono interessare principalmente gli amministratori del server Subversion.

Gli utenti finali programmatori e autori che usano semplicemente il client per scaricare e caricare modifiche sui progetti non hanno infatti bisogno di acquisire tali competenze, se non per propria curiosità. La struttura interna Vista dall'esterno - ad esempio navigandolo con il browser - la struttura del repository sembra corrispondere a quella che noi abbiamo creato per i dati contenuti.

Possiamo pensare a questa struttura di cartelle come a un vero e proprio filesystem separato, con le proprie regole e il proprio modo di organizzare i contenuti, che si colloca a un livello superiore rispetto al filesystem di base.

Inoltre, il numero di revisione rimarrebbe comune tra diversi progetti, e questo potrebbe creare confusione. Il consiglio è senz'altro quello di creare repository diversi per progetti che non hanno nulla a che spartire.

Conviene invece mantenere nello stesso repository, magari usando rami diversi, quei progetti che sono in qualche modo correlati, in modo da facilitare l'eventuale scambio di modifiche.

Nelle lezioni precedenti abbiamo visto come sia consigliato creare le cartelle trunk, branches e tags nella cartella principale del progetto.

Gli script "hook" Per semplificare la gestione del repository e automatizzare alcune procedure, Subversion ci consente di creare degli script che vengano automaticamente invocati in corrispondenza di determinati eventi. In altre parole, ogni volta che viene effettuata una certa operazione sul repository, Subversion controlla se nella cartella hooks del repository sia presente un file eseguibile con un certo nome, e lo esegue.

Tipicamente uno script esegue operazioni di validazione o notifica. Un altro esempio è quello di bloccare i commit sulle revisioni tag. I nomi degli script che vengono cercati corrispondono abbastanza chiaramente agli eventi a cui sono associati.

Elenco degli eventi pre-commit pre-lock pre-revprop-change pre-unlock post-commit post-lock post-unlock post-revprop-change start-commit Una rapida spiegazione degli eventi elencati.

Traduzione di "SVN" in tedesco

Conosciamo già il commit; lock e unlock si riferiscono all'applicazione e rimozione di un lock su un file, che è possibile tramite l'omonimo comando; revprop-change si riferisce alla richiesta di modifica di una proprietà del repository.

Nella cartella hooks di qualunque repository appena installato sono presenti degli script shell di esempio nominati come sopra, ma con estensione. Questi script di esempio contengono — in forma di commento — le spiegazioni necessarie per l'utilizzo e i parametri che gli vengono passati, nonchè esempi delle operazioni più frequenti. È chiaro quindi che il modo più immediato per cominciare a usare gli hook è quello di modificare uno di questi script e rinominarlo rimuovendo l'estensione.

Per esempio, è possibile guardare il diff o lo stato su tutti gli externals o una parte di essi con semplici comandi. In ogni caso git externals --help è tuo amico. Limitazioni Sotto il cofano git-externals utilizza i symlinks per mappare la posizione reale di un external alla posizione desiderata nel repo principale.

Il problema nasce dal fatto che Windows permette di usarli solo agli utenti con Admin Privileges. Abbiamo deciso di convivere con questo, perché crediamo che non rappresenti un grande ostacolo per la maggior parte degli sviluppatori Windows. Ad esempio, se abbiamo un external che assume di trovare nella parent directory un file foo.


Articoli popolari: