Newsgroup: it.comp.lang.visual-basic
Titolo: Subversion

Buongiorno a tutti
Voi cosa usate come programma di subversion per VS2010.
Stavo cercando qualcosa di open possibilmente
da questa pagina ( 
http://subversion.apache.org/packages.html
 )ci sono
questi
CollabNet 
SlikSVN 
VisualSVN 
WANdisco 
Win32Svn  
 
Anche AnkhSVN viene suggerito come prodotto valido
 
insomma
mi sono persa......
 
help me
ciao
 
 

 CollabNet 
 
Noi usiamo CollabNet. E' gratuito e non ha alcuna limitazione.
E' giusto un pelino complicato da gestire la prima volta se non si ha esperienza.
In giro trovi molti tutorial e forum che ne spiegano l'utilizzo.
 
Se vuoi qualcosa di semplice vai su VisualSVN ma credo che ci siano limitazioni per cui va acquistata poi una versione a pagamento.
 
Nicola
 
 


Grazie della risposta.
Al limite ti scoccerò dopo....
 


comincio già...
 
ma posso installare solo il client
CollabNet Subversion Command-Line Client v1.7.2 (for Windows 32-bit)
 
o mi serve anche questo?
CollabNet Subversion Edge 2.2.0 (for Windows 32 bit)
 
 
grazie
 

 CollabNet Subversion Edge 2.2.0 (for Windows 32 bit)
 
Ti serve SubVersion Edge per il server e, consiglio, TortoiseSVN come client.
 
Se non hai grandi pretese (Single Signon, Amministrazione remota del server ecc...) ti consiglio VisualSVN.
Esiste una versione FREE leggermente limitata ma che, per uso "casalingo" va più che bene:
http://www.visualsvn.com/server/download/
 
 
Sicuramente eviti di dover buttare ore in configurazioni varie con Subversion Edge (che, ripeto, è veramente completo ma non so se ti serve un tir per andare a fare la spesa).
 
Nicola
 

>>
 DUBBIO ATROCE
ma questi prodotti funzionano sulle versione Express?
 
http://ankhsvn.open.collab.net/wiki/Faq#head-5cfda3c01b2ff5bab6b3742c33ced4abe1426eb2
 
qui dice di no


La versione "limitata" va benissimo
Al momento sono solo io a programmare
ma come dicevo nel post precedente sto usando la versione Express di
Visual Studio 2010
 
Simona

 ma questi prodotti funzionano sulle versione Express?
 
No, non funziona.
Tempo fa vi era una versione che funzionava con la versione 2008 Express ma fu ritirato in quanto violava una licenza MS.
Io comunque, pur sviluppando con una versione Professional, non mi sono mai trovato bene con ankhsvn, preferendogli di gran lunga TortoiseSVN.
 
Nicola


ok
allora mi appresto a usare VisualSVN-Server come server e TortoiseSVN
come client.
 
ti farò sapere
 
grazie
 

 ciao
 
Avendo un progetto php in via di conclusione...ed avendo avuto a che 
fare da zero con un server Centos e quindi avendone potuto "ammirare" 
pregi e difetti....
se hai un vecchio pc da recuperare (anche un notebook)....
http://www.megalab.it/7502/guida-predisporre-un-server-subversion-svn-su-centos
 
 
imho una considerazione:
avere un controllo di versione ed un repository rileva molto poco....se 
la macchina di sviluppo coincide con il server SVN...e se sviluppi da 
solo!
Miglior repository del tuo cervello non esiste!
Se i cervelli invece diventano >= DUE...o le macchine di sviluppo si 
moltiplicano ... allora è molto utile!
 
se siamo da soli e sviluppiamo "distribuiti": pc a casa...notebook e pc 
clienti..e l'unica costante è un adsl funzionante...(sviluppo web 
capita)...dropbox aiuta parecchio!
 
-- 
----- Italliaaaaa 3227! -----
Ti prego, ti prego, non ci uccidere. Ti prego baby, lo sai che ti amo. 
Non avrei mai voluto lasciarti, non è stata colpa mia. Davvero, sono 
sincero. Quel giorno finì la benzina. Si bucò un pneumatico. Non avevo 
i soldi per il taxi! Il mio smoking non era arrivato in tempo dalla 
tintoria! Era venuto a trovarmi da lontano un amico che non vedevo da 
anni! Qualcuno mi rubò la macchina! Ci fu un terremoto! Una tremenda 
inondazione! Un'invasione di cavallette!
John Belushi [da "Blues Brothers"]
 
 

 Miglior repository del tuo cervello non esiste!
 
Io invece trovo molto utile SVN anche per lo sviluppo di applicazioni mie personali.
Spesso mi viene utile trovare codice vecchio, ormai dismesso da un programma ma che può tornarmi utile in altri programmi.
Inoltre se voglio ricompilare il programma ad una data versione non ho che prendere una working copy da quello specifico branch e utilizzarlo.
 
Nicola

 Miglior repository del tuo cervello non esiste!
 
Non sono d'accordo, uso svn anche da solo (ma il repo è su un server 
remoto) e sono molto più tranquillo quando devo fare modifiche anche 
pesanti al codice sapendo che se canno qualcosa mi basta ripescare una o 
n versioni indietro.
 
ciao
Mauro


Certo che in più di uno il subversion è indispensabile.
Ma non ti sei mai trovato in quelle situazioni da dire: ma quella
modifica che ho fatto l'altro mese qual'era?....


On Mon, 30 Jan 2012 08:03:54 +0100, Simona <sim...@hotmail.xx> wrote:
 
 Allora
stamattina ho fatto un po' di prove smanettando con TortoiseSVN
Penso di aver capito il macro funzionamento
Creazione del repository
Creazione di una directory di lavoro nuova vuota dove importare il
contenuto della directory del progetto di lavoro
A questo punto il gioco dovrebbe essere finito.
Ho fatto diverse prove e riesco a vedere le modifiche e restorare
l'applicazione da un punto x.
 
c'è una cosa che non mi garba molto.
è che devo ogni volta che salvo fare il svn commit del progetto.
Non c'è un modo per istruire TortoiseSVN per farlo automaticamente una
volta che salvo un qualsiasi file del progetto di lavoro?
 
un'altra cosa:
tutte queste prove le ho fatte installando SOLAMENTE TortoiseSVN
(client TortoiseSVN-1.7.4.22459)
SENZA installare VisualSVN-Server
E allora la domanda è: a che serve VisualSVN-Server ?
 
 

 E allora la domanda è: a che serve VisualSVN-Server ?
 
Mi verrebbe da dire "impossibile". A meno che non stia utilizzando un server SVN piazzato da qualche altra parte (es i vari SNV gratuiti online).
Giusto per capirci, se selezioni la working copy (cioè la cartella su in cui c'è il tuo progetto, che è identificata da un pallino verde o rosso) e poi fai tasto dx -> Tortoise SVN -> Repo Browser, cosa ti appare? 
Se ti appare una sorta di file manager, che indirizzo vedi nella textbox  "URL:" in alto?
 
Nicola
 
 

Nicola
 
sulla directory di lavoro non ho nessun pallino
 
ti incollo l'immagine 
 
http://i40.tinypic.com/10prsc1.jpg
 
 
 
 
 

 ti incollo l'immagine 
 
Mi è tutto più chiaro.
Stai utilizzando un repository creato con la funzione "Create repopsitory here" di Tortoise SVN.
In questo modo hai un repository in locale, utilizzabile solo dal tuo pc.
 
Il discorso che facevamo noi (es VisualSVN, Collabnet ecc...) era legato alla possibilità di creare un server SVN accessibile anche da altre macchine (es, hai il tuo portatile con la Working Copy (per te dovrebbe essere Widget1 o Widget1-Dev, in alto nell'immagine che mi hai inviato, cioè dove hai il il progetto che apri con visual studio) e poi il repository è messo su un pc fisso che funge da server accessibile da remoto, sul quale puoi fare i tuoi commit.
 
Anche l'approccio che hai scelto è corretto, però il repository non è accessibile da altri pc.
Se non ne hai necessità, tanto meglio.
 
Una sola cosa mi risulta strana: Io mi aspetterei che sulle cartelle della working copy, e sui relativi file interni vi sia un pallino colorato che ne indica lo stato.
Ad esempio:
 
http://www.thewebsqueeze.com/wp-content/uploads/intro-to-subversion/thumb-14.jpg
 
 
oppure:
 
http://www.west-wind.com/presentations/subversion/UptoDate.png
 
 
 
Nicola


per le icone ho sistemato
c'era da flaggare un'opzione in Settings [Icon Overlays]
c'è una cosa che ancora non mi torna e vorrei il tuo aiuto
Ipotizziamo che la directory del progetto sia X:\Solution000
 
il programmatore A sviluppa dalla sua postazione in
d:\svn_repos\Solution000
 
il programmatore B sviluppa dalla sua postazione in
c:\blabal\aaaa\Solution000
 
quando i due programmatori fanno il commit aggiornano la propria
workink copy, giusto?
 
come devono fare per pubblicare/esportare/merge[are] le loro modifiche
sulla soluzione di partenza?
con il comando EXPORT?
 
grazie
 

 con il comando EXPORT?
No, con il comando commit come ti ho scritto sopra.
 
Il comando export serve per recuperare dal server una copia dei sorgenti 
senza le cartelle di appoggio di svn.
 
ciao
Mauro


ok
piano piano ci arrivo....
ho capito la differenza tra update e commit
Ma come faccio ad aggiornare la Soluzione000 originale con le
modifiche presenti nel repositoy?
faccio un breve ripasso
Ho la soluzione D\Solution000
con il comando IMPORT importo il progetto nel repository
con il comando CHECKOUT aggiorno le working copy
dalle working copy con il comando COMMIT aggiorno il repository
e poi?
come faccio dal repository ad aggiornare la Soluzione000  da cui sono
partito?
http://i44.tinypic.com/9gaqaf.jpg
 
 
Simona
 
 
 
 

 e poi?
 
E poi si fa "UPDATE" sulla working copy. Questo serve a prendere le modifiche che altri utenti hanno "committato" (che brutto termine, ma serve a renderti l'idea).
 
NOTA: (mi è venuto in mente vedendo il tuo disegno):
Se Utente1 fa Commit e, subito dopo, Utente2 vuole fare commit, Utente2 non potrà farlo (riceverà un avviso di "Conflitto") se si sta lavorando sugli stessi file (es. se tutti e due hanno modificato pippo.txt).
Ciò non è sempre vero (SVN ha un buon algoritmo che gestisce queste situazioni in automatico quasi sempre) però quando capita bisogna essere preparati a gestire la cosa (ho colleghi che da 2 anni ancora non l'hanno capito nonostante gliel'ho spiegato più di una volta). ;)
 
CONSIGLIO: Se siete più utenti a lavorare su un progetto è buona cosa fare sempre "UPDATE" della working copy prima di effettuare modifiche ai file. Questo per lavorare sempre sui file più aggiornati e minimizzare il problemma del conflitto di cui ti parlavo nella nota precedente.
 
Nicola

 Il 01/02/2012 10.35, Simona ha scritto:
non ho esperienza di progetti " a molte più mani "
...che senso ha che io e te si stia lavorando SUI SOLITI files?
Io aggiorno i messaggi di errore e tu l'interfaccia?
Io aggiungo una listbox e tu un combobox nella solita posizione?
...spiegami!
Grazie!
 
 
/////////
Wodkino under the snow!...& tonight WodkaOnIce...!
 
-- 
----- Italliaaaaa 3227! -----
Come ti senti oggi???
 
Giano Geminus Bifrons Bepop Flowers
http://youtu.be/Wk_gyLo0i-c
 
minuto 3:14
 
(Un uomo un mito: Luciano Lupoletti)
 
 


quando dico poi intendo questo:
alla fine delle varie modifiche ho sul repository la versione pronta
per essere pubblicata/compilata ecc ecc
cosa devo fare per fare questo?
 
es 1
ho progetto VB6 e devo fare la procedura di generazione del pacchetto
di installazione
come faccio partendo dalla versione presente sul repository ?
 
es 2
ho un progetto 
asp.net
 e devo fare la procedura di compilazione e
pubbicazione dell'app sul sito di produzione
come faccio partendo dalla versione presente sul repository ?
 
ecc ecc
 
Simona

 come faccio partendo dalla versione presente sul repository ?
 
Non c'entra nulla con il repository. Tu lavori sempre sulla working copy. Il repository contiene è come un album di "fotografie" delle varie revisioni del progetto.
Per compilare\pubblicare un eseguibile fai esattamente come facevi quando non avevi SVN.
 
Consiglio: leggi un pò di manuali su SVN in modo da capire meglio se è davvero ciò che fa per te... non vorrei tu avessi scelto una forchetta per bere un brodino. :)
 
Nicola
 

 Grazie!
 
Si, capita spesso se si lavora con dei servizi (es WebService, WCF Service ecc...).
 
Ad esempio qui abbiamo un progetto (Silverlight + WCF Service) in sviluppo da alcuni mesi. Il fulcro è il servizio WCF. Io aggiungo una chiamata da Silverlight verso il WCF per prendere dei dati (e quindi diciamo una nuova funzione) e, nel frattempo, un collega fa lo stesso con un'altra funzione per prendere altri dati.
Quindi, pur lavorando su 2 maschere\classi silverlight distinte, avremo che entrambi abbiamo modificato qualcosa sul servizio.
 
A volte l'algoritmo di SVN è abbastanza intelligente da fare un merge automatico. A volte anche lui si blocca e, giustamente, chiede aiuto all'utente in carne ed ossa.
 
Nicola


*Tutto* chiaro.
mi hai dato una conferma a quello che pensavo.
una volta che tutto è aggiornato basta prendere una workin copy
qualsiasi e da lì procedere
ancora grazie
 
Simona
 

> Nicola Ottomano ha pensato forte :
Nei progetti a più mani immagino ci sia una rigidissima gerarchia da 
rispettare e specifiche rigorosissime!
 
Perchè che accade se ad esempio.
La tabella provincie del form PincoPallino
IO la mostro in una lista
e TU nel combobox ?
Il sistema si blocca nell'aggiornamento ed aspetta il senior o il 
project qualcosa che dirime il conflitto?...o tenta di risolvere da se?
....son curioso!
 
-- 
----- Italliaaaaa 3227! -----
Verace o finta, è da temersi sempre  pietà di plebe.
(Vittorio Alfieri)
 
 

 ....son curioso!
 
 
Facciamo un esempio pratico.
 
Nicola sta modificando un progetto silverlight. Deve creare una maschera che calcola il rating finanziario di un cliente. La maschera funziona così:
 
MskRating <--> WCF Service (clsAnagraficaCliente.vb) <--> Database
 
Wodka invece, sempre sullo stesso progetto silverlight deve creare una maschera di inserimento dei bilanci.
 
MskBilanci <--> WCF Service (clsAnagraficaCliente.vb) <--> Database
 
Guarda caso sia i bilanci che i rating si trovano nella stessa classe clsAnagraficaCliente sul WCF Service.
 
A questo punto Nicola fa il commit di MskRating e clsAnagraficaCliente.
Ora Wodka fa il commit di MskBilanci e clsAnagraficaCliente. ATTENZIONE! Conflitto!
 
Cosa fa SVN? 
 
1 - Se le modifiche apportate non riguardano le stesse righe (e qui ci viene in aiuto l'ottimo algoritmo Hunt–McIlroy) allora procede con un merge automatico del tuo commit con il mio.
2- Se le modifiche riguardano le stesse righe lui si blocca e ti chiede di risolvere a mano il conflitto. Il che significa mettersi seduti con TortoiseDiff e modificare a mano riga per riga per ottenere un clsAnagraficaCliente coerente con quanto richiesto. Chi fa questo è a discrezione dell'azienda. Nel nostro caso di solito me ne occupo io.
 
Nicola
 

Nicola Ottomano ha usato la sua tastiera per scrivere :
cut
ARGH!
 
TIZIO
1 dim a as string
2 dim b as new PincoPallino
3 dim c as new pallinoPinco
4 c.importo=b.calcolo
5 non ci arriva non tocca nulla
CAIO
1 dim a as string
2 dim b as new pallinoPinco
3 dim c as new Pincopallino
4 a="qualcosa"
5 b.importo = c.calcolo
 
SEMPRONIO
1 suona
2 suona
3 suona
4 suona
5 lo inserisce a diritto senza allertare nulla e sempronio quindi non 
se ne occupa?
 
Ho capito bene????
OHIOHIOHIioi....non ti invidio punto caro il mio Nicola Sempronio!
 
-- 
----- Italliaaaaa 3227! -----
Pasquà...Pasquale Zagaria...u'fighh'Riccard
[Vieni avanti cretino (1982)
c'ho pure il video! 
http://www.martek.it/public/dblog/banfi1.swf
 ]
 
 

Nell'esempio fatto da te abbiamo un possibile conflitto fra TIZIO e CAIO ma, in questo caso, è risolto senza problemi da SVN.
 
Quando entra SEMPRONIO si verifica un conflitto (che SVN ti segnala) ma è risolvibile a mano ad esempio spostando il codice di Sempronio a partire da riga 6 in poi.
 
non è detto che sia sempre così semplice ma, mediamente, i conflitti sono molto pochi e abbastanza semplicemente risolvibili. Ad oggi, su oltre 3000 commit in SVN, ricordo solo un paio di casi particolarmente ostici. 
Da quelle volte in poi se due o più persone lavorano sullo stesso file nello stesso giorno, prima si mettono d'accordo su cosa modificare e dove, onde evitare accavallamenti sul codice.
 
Nicola


ecco....perfetto....thanks
 
-- 
----- Italliaaaaa 3227! -----
Ci sono cattivi esploratori che pensano che non ci siano terre dove 
approdare solo perché non riescono a vedere altro che mare attorno a 
sé.
(Francesco Bacone)
 
 

 ecco....perfetto....thanks
 
inoltre ci sono delle regole di buon comportamente che ha molto senso 
seguire quando si lavora con un sistema di source control, regole che 
servono proprio per evitare di scornarsi a morte con le merge.
 
La cosa più interessante è che in alcuni casi si fanno scelte 
architetturali a livello applicativo proprio perché hai a che fare con 
un team distribuito che deve lavorare insieme sullo stesso progetto e 
devi ridurre all'osso i momenti di condivisione dedicati alle merge.
 
.m
 
-- 
blog @ //
milestone.topics.it