[svn] Modules en opslagformaat

Pagina: 1
Acties:

  • JeRa
  • Registratie: Juni 2003
  • Laatst online: 07-05 12:51
Ik ben overgestapt van CVS op Subversion (SVN) waarbij ik nu even tegen twee punten oploop;

1. In CVS had je modules en per-file revisions. In SVN heb je échte directories met revisions, maar het nadeel hiervan is dat alles in één repository dezelfde revision krijgt. Als ik in SVN een dergelijke structuur heb:

/project1/bestand.cpp
/project1/bestand.h
/project2/index.php
/project2/index.css

En ik update een bestand van project2, dan krijgen de bestanden van project1 een revision bump terwijl daar niets aan veranderd is. Nu weet ik wel dat dit de opzet van SVN is, en in één project vind ik het ook niet zo erg, maar als ik met meerdere projecten werk die los staan van elkaar is dit vrij vervelend.

Nu kan ik dit oplossen door aparte repositories te gaan gebruiken, maar voor zover ik weet is er geen manier om door de bestaande repositories op een SVN-server te 'browsen' zoals wel kon met de modules in CVS. Dit wil ik graag voor elkaar krijgen, zodat ik niet voor elk project afzonderlijk een URI moet doorgeven aan mensen maar ze gewoon de repository listing te zien krijgen.

2. Ik draai Subversion als 'svnserve' onder Debian Sarge, en voor zover ik weet is dit versie 1.1. Sinds versie 1.2 is het standaard bestandsformaat van de repositories van BerkeleyDB naar FSFS gegaan. Volgens het SVN-book heeft FSFS duidelijke voordelen maar ook enkele nadelen t.o.v. BerkeleyDB. Heeft iemand ervaring met de verschillen en kan diegene me dan vertellen wat de slimste keus is, ook kijkend naar de toekomst? :)

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 18-08 22:57

Gerco

Professional Newbie

Over die revisions:

Een repository heeft een revision, bestanden hebben dat niet. Bestanden hebben wel een "Last changed revision". Je kan dus gewoon opvragen in welke revision een bestand voor het laatst is gewijzigd.

Daarnaast heb je die revision nummers helemaal niet zo nodig, je versienummering hangt er niet van af, het is hooguit een manier om te zien of je de laatste versie van de repository hebt staan.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
gerco@gentoo ~/development/videotheek/Highscore $ svn info Highscore.vbg
Path: Highscore.vbg
Name: Highscore.vbg
URL: http://svn.gdries.com/---
Repository UUID: b2548bc7-5dad-d540-b0a8-7790815dc7d9
Revision: 120
Node Kind: file
Schedule: normal
Last Changed Author: gerco
Last Changed Rev: 115
Last Changed Date: 2005-05-14 18:04:32 +0200 (Sat, 14 May 2005)
Text Last Updated: 2005-06-19 22:27:57 +0200 (Sun, 19 Jun 2005)
Properties Last Updated: 2005-06-19 22:27:56 +0200 (Sun, 19 Jun 2005)
Checksum: ed325ebc3e03211c386e2a80114eb01c


Hier is de uitleg van subversion zelf: Why does the entire repository share the same revision number?

Het is overigens prima mogelijk om door repositories te browsen als je gebruik maakt van apache2 en de webdav server component. Je kan de SVNParentPath directive gebruiken om de root van je repositories aan te geven en browsen maar. Kijk maar hier: http://svn.gdries.com/public/ . Er zitten meerdere reposities achter die url (minus het /public deel natuurlijk) en die heb ik gewoon met SVNParentPath ingesteld. Als ik de Indexes optie van apache niet uit had staan, had je daar gewoon een repository kunnen kiezen, net als een directory.

offtopic:
Als je WebDAV gebruikt en Autoversioning aanzet, kun je zelfs met een Windows computer de repository als netwerk drive gebruiken. Windows merkt niets van de versioning, maar op de achtergrond gebeurt het automatisch. Heb je zomaar, gratis en voor niets, een versioned documents repository. Nooit meer een *oeps* moment.

Natuurlijk kan dat met elk zichzelf respecterend OS, maar dat het met Windows ook kan vond ik noemenswaardig.

[ Voor 48% gewijzigd door Gerco op 27-01-2006 12:23 ]

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • JeRa
  • Registratie: Juni 2003
  • Laatst online: 07-05 12:51
Ok, thanks Gerco :) de server waarop ik de repositories host heeft geen Apache2 dus zal svnserve blijven draaien, waardoor webdav out of the question is vrees ik.

[ Voor 80% gewijzigd door JeRa op 27-01-2006 12:23 ]


  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 18-08 22:57

Gerco

Professional Newbie

In dat geval kan WebSVN uitkomst bieden. Geschreven in PHP, maakt gebruik van de svnlook utility van subversion om repository browsing aan te bieden. Werkt op elke webserver die PHP begrijpt.

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • JeRa
  • Registratie: Juni 2003
  • Laatst online: 07-05 12:51
Gerco schreef op vrijdag 27 januari 2006 @ 12:25:
In dat geval kan WebSVN uitkomst bieden. Geschreven in PHP, maakt gebruik van de svnlook utility van subversion om repository browsing aan te bieden. Werkt op elke webserver die PHP begrijpt.
Die had ik inmiddels ook gevonden, ziet er goed uit in ieder geval. Bedankt!

  • JeRa
  • Registratie: Juni 2003
  • Laatst online: 07-05 12:51
Iemand die me nog iets kan vertellen over mijn tweede vraag of daar wellicht ervaringen mee heeft? :)

  • DJ Buzzz
  • Registratie: December 2000
  • Laatst online: 19-08 18:56
Nog even over het eerste puntje: Ik gebruik zelf meerdere repositories voor verschillende projecten, zo blijven ze mooi gescheiden en zitten mensen die maar 1 van die projecten werken ook niet met b.v. log meldingen van andere projecten (die ook de opmerking van Gerco over SVNParentPath).

Mijn ervaring zelf met het tweede punt is dat FSFS in ieder geval een stuk beter tegen upgrades van subversion e.d. kan. Ook heb ik weleens een corrupte BerkeleyDB gehad door crashes van het systeem en/of Apache. Wat dat betreft zou ik toch voor FSFS kiezen, zeker aangezien dit de nieuwe default is.
Pagina: 1