[PHP/Alg] Versiecontrole systeem

Pagina: 1
Acties:
  • 131 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
Ik ben bezig met een cms waar losse plugins (OOP) het werk verrichten. Nu is er regelmatig een update in een of meer plugins. Hiervoor wil ik graag een versioning systeem opzetten als Subversion of CVS. Maar: hoe doe ik dat? Ik heb alleen een aantal gb's aan schijfruimte, php en mysql tot mijn beschikking. Wat rondzoeken op Google en phpclasses.org levert niet het gewenste resultaat op: vaak zijn het php libraries die een extension kunnen vormen van Subversion of CVS. Echter kan ik niet iets als Subversion gebruiken aangezien dat als software geïnstalleerd moet worden, en ik kan dat niet zomaar doen (heb hosting, geen eigen server).

Wat ik uiteindelijk wil bereiken is dat een client (het cms op een niet-eigen server) vraagt aan de "master" (mijn eigen cms op mijn eigen server) of er voor alle plugins die de client heeft geinstalleerd updates beschikbaar zijn.

Ik heb al een soort van .ini parser geschreven, dus ik dacht om een .ini file aan te maken waarin per plugin de versie van de plugin in staat. Voorbeeldje:
code:
1
2
3
4
5
6
7
[blog]
version=0.05
last-update=2007-01-23

[gallery]
version=0.01
last-update=2007-01-11


In deze ini staan alle plugins vermeld, en de client vergelijkt zijn eigen versie met de versie die de master heeft. Is er een nieuwe versie beschikbaar, dan wordt de php code en mysql geupdate door een zip te downloaden van de plugin en die te installeren.

Nu de hamvraag: gaat zoiets werken, zie ik wat belangrijks over het hoofd. En misschien: bestaat er al een dergelijk systeem. Als dat zo is, hoe werkt dat dan?
Omdat dit een vrij essentieel onderdeel gaat worden van het cms is een goede opzet van groot belang. Het zal uiteindelijk "maar" een plugin in het cms worden, en je kan natuurlijk altijd zelf (handmatig) de code updaten, desalniettemin vind ik het belangrijk genoeg om er even meer mensen naar te laten kijken. Alvast bedankt voor commentaar op mijn idee en andere suggesties!

Acties:
  • 0 Henk 'm!

  • Brakkie
  • Registratie: Maart 2001
  • Niet online

Brakkie

blaat

mithras schreef op dinsdag 23 januari 2007 @ 18:00:
Ik heb al een soort van .ini parser geschreven, dus ik dacht om een .ini file aan te maken waarin per plugin de versie van de plugin in staat. Voorbeeldje:
Heb je deze zelf geschreven? ;)

Systeem | Strava


Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
Nee, een klein loopje, waarin ik gewoon een variable binnen een segment ophaal. Zegmaar op deze manier:
PHP:
1
2
3
4
$location = "testfile.ini";
$ini = new ini_parser($location);
$version = $ini->get_variable("blog","version");
echo $version; //0.05

[ Voor 11% gewijzigd door mithras op 23-01-2007 20:04 ]


Acties:
  • 0 Henk 'm!

  • xces
  • Registratie: Juli 2001
  • Laatst online: 20-09 16:56

xces

To got or not to got..

Op zich lijkt me het een goed systeem, beter zou je kunnen werken met bijvoorbeeld XML, en nachtelijks een controle laten doen. Je zou het ook nog kunnen uitbreiden, door een changelog bij te houden, en tegelijkertijd ook bij te houden welke versie de gebruiker het laatst gebruikt heeft toen hij inlogde. D.w.z.; "Er is een nieuwe versie voor U beschikbaar van de module %s. Nieuw in deze module is.... etc.".

Acties:
  • 0 Henk 'm!

  • mithras
  • Registratie: Maart 2003
  • Niet online
xces schreef op woensdag 24 januari 2007 @ 08:08:
Op zich lijkt me het een goed systeem, beter zou je kunnen werken met bijvoorbeeld XML, en nachtelijks een controle laten doen. Je zou het ook nog kunnen uitbreiden, door een changelog bij te houden, en tegelijkertijd ook bij te houden welke versie de gebruiker het laatst gebruikt heeft toen hij inlogde. D.w.z.; "Er is een nieuwe versie voor U beschikbaar van de module %s. Nieuw in deze module is.... etc.".
Die changelog is wel nice. Verder is het kijken welke versie de huidige plugins allemaal zijn een eitje, dat is namelijk een variabele (integer) in het plugin object ;)

XML, dat is wel een mooi idee; een goede tip! Omdat ik echter _helemaal_ niet thuis ben in xml, zou ik op het eerste gezicht zo iets opzetten. Kan dit, of is dit XML technisch onzin (of maakt het allemaal niet zo heel veel uit) :p

XML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?xml version="1.0" encoding="ISO-8859-1"?>
<plugins name="mycms">
 <plugin name="blog">
  <description>Mogelijkheid om verhaaltjes te schrijven</description>
  <versions>
    <entry number="0.01">
      <changes>Blablabla</changes>
      <release-date>2007-01-02</release-date>
    </entry>
    <entry number="0.02">
      <changes>Weer wat andes</changes>
      <release-date>2007-01-14</release-date>
    </entry>
  </version>
 </plugin>
 <plugin name="gallery">
  <description>Mogelijkheid om foto's te tonen</description>
  <versions>
    <entry number="0.01">
      <changes>Hier een leuk verhaaltje</changes>
      <release-date>2007-01-22</release-date>
    </entry>
  </version>
 </plugin>
</plugins>


En ik denk dat ik het zo ga instellen dat met een cron er automatisch geupdate kan worden, of dat de gebruiker handmatig de updates automatisch kan checken (en uiteraard nog de mogelijkheid zelf de code via ftp te uploaden en wat sql uit te voeren).

[ Voor 32% gewijzigd door mithras op 24-01-2007 10:39 ]