[PHP] Subversion gebruik in PHP

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Darude1234
  • Registratie: Augustus 2003
  • Laatst online: 06-09 12:57
Een aantal dagen geleden ben ik mij eens gaan verdiepen in SVN repositories en het gebruik daarvan in PHP. Maar een aantal dingen zijn mij nog niet helemaal duidelijk.
Het maken van de repository zelf was op zich vrij eenvoudig (als ik het goed heb gedaan)

Bash:
1
2
3
4
5
6
7
8
9
10
11
12
13
svnadmin create svn
svn co \
> file:///var/www/svn \
> working

cd working
svn mkdir main
svn mkdir main/branches
svn mkdir main/tags
svn mkdir main/trunk

svn status
svn commit -m 'Creating initial structure'


Nu heb ik echter die repository. Ik had begrepen dat als je een update wilt doen van een bepaald bestand dat je dat in de working/main/trunk directory gooit en vervolgens met 'svn checkout' de boel update.

Maar nu stuit ik op een aantal vragen:
Ik wil met php een aantal bestanden laten zien, dat is het probleem nog niet.
Vervolgens wil ik dus een gewijzigd bestand updaten via svn. Hoe doe ik dit precies? Een bestand uploaden naar de trunk directory lukt waarschijnlijk nog wel maar

1) Stel ik gooi een gewijzigd bestand in de trunk directory, hoe weet die repository dan welk bestand hij moet updaten? Er kunnen immers wel meer bestanden zijn die 'testje.txt' (ik noem maar wat) heten.

2) Kun je dit ook via PHP regelen? Ik zag dat er een aantal PHP-functies waren voor SVN, maar dat zijn bijna allemaal niet gedocumenteerde functies in experimental-releases van PHP.
m.a.w. hoe lees ik een bestand uit een repository, voer vervolgens een wijziging uit via een text-veld o.i.d. en geef het gewijzigde bestand vervolgens weer door aan de repository? Hier kan ik dus bar weinig informatie over vinden op internet.

Wie heeft er voor mij wat opheldering? :)

Acties:
  • 0 Henk 'm!

  • gertvdijk
  • Registratie: November 2003
  • Laatst online: 09-09 10:57
Wat wil je gaan doen met PHP & SVN?

Mogelijk werk je in een compleet verkeerde oplossingsrichting voor wat je wil doen/maken. Version control via de webserver bestaat namelijk, maar dat is dan bijvoorbeeld in de vorm van WebDAV of een SVN-module voor je webserver (Apache mod_dav_svn bijvoorbeeld).

[ Voor 5% gewijzigd door gertvdijk op 04-02-2010 01:35 ]

Kia e-Niro 2021 64 kWh DynamicPlusLine. See my GitHub and my blog for articles on security and other stuff.


Acties:
  • 0 Henk 'm!

Verwijderd

Zoals gertvdijk al aangeeft: Wat wil je er mee doen?

Als het gewoon voor de fun is om eens te zien of je het voorelkaar krijgt dan wens ik je success ;). Als die methoden niet gedocumenteerd zijn zal dat een reden hebben. Waarschijnlijk zijn ze nog zwaar instabiel. Het gebruik van experimentele extensies wordt niet voor niets afgeraden.

Als je er toch werkelijk een doel mee hebt wens ik je nog meer success. Het schrijven van een SubVersion client is nou niet het makkelijkst.

Apache/WebDav is inderdaad een goede oplossing alhoewel je subversion ook in daemon modus kan draaien.

Acties:
  • 0 Henk 'm!

  • E-Vix
  • Registratie: Juni 2000
  • Laatst online: 16:45

E-Vix

Nu met sneeuw!

Voor de duidelijkheid, je plaatst niet alle bestanden in je trunk. Je trunk is zeg maar de root van je project. In je trunk maak je weer mappen / bestanden aan etc. en die commit / submit je.

Uit je omschrijving krijg ik bijna het gevoel dat je SVN als een CMS wilt gaan gebruiken. Daar is het alleen niet voor bedoeld, en ook niet voor geschikt. SVN (of SubVersion) is er om met meerdere mensen aan een project te kunnen werken, de aanpassingen van anderen te kunnen zien / reviewen, en om ook gemakkelijk terug te kunnen gaan naar een oudere versie van een bestand indien er iets niet goed mee is (een programmeur die bijvoorbeeld iets helemaal verkeerd begrepen heeft en iets volledig door elkaar gegooid heeft. 3x klikken, en je hebt zijn werk ongedaan gemaakt.)

Failed opening '/home/users/7942/signature.inc' for inclusion (include_path='.:') in /home/www/got/userstats.php on line 25


Acties:
  • 0 Henk 'm!

  • Darude1234
  • Registratie: Augustus 2003
  • Laatst online: 06-09 12:57
Wat wil ik er mee doen: Ik wil een systeem op een (selfhosting)website hebben waarmee ik met meerdere mensen aan verschillende bestanden kan werken.
Eigenlijk precies zoals je E-vix zegt in zijn laatste regel.

Neem als voorbeeld een txt-bestand:
Persoon 1 die maakt een txt-bestand aan met de volgende tekst:
Tekstregel 1
Tekstregel 2
Tekstregel 3

Persoon 2 die maakt een txt-bestand aan met de volgende tekst:
Tekstregel 4
Tekstregel 5
Tekstregel 6

Persoon 3 die past vervolgens tekstregel 2 aan naar tekstregel 2.1 en het systeem maakt vervolgens automatisch een nieuwe versie van dat bestand.
Maar ondertussen bedenkt persoon 1 zich dat hij tekstregel 3 verkeerd heeft ingevoerd en veranderd hem en opnieuw wordt er een nieuwe versie van het bestand gemaakt.

Probleem van dit is hoe weet je wat persoon 1 en 2 gewijzigd hebben en hoe kun je dit automatisch samenvoegen tot een werkend geheel. Immers kan de aanpassing van persoon 1 een conflict veroorzaken met de wijzing van persoon 2. Hoe controleer je dit?

Ik heb het gevoel dat ik met SVN dan wel in de goede richting zit maar ik blijf dus met bovenstaande vraag zitten en de vraag hoe ik in PHP een SVN-commando kan uitvoeren.
Ik heb wel een aantal svn-functies gevonden voor PHP maar allemaal zitten ze in experimentele fase en zijn ze nog niet te gebruiken in PHP.

Acties:
  • 0 Henk 'm!

Verwijderd

Darude1234 schreef op donderdag 04 februari 2010 @ 19:54:

Probleem van dit is hoe weet je wat persoon 1 en 2 gewijzigd hebben en hoe kun je dit automatisch samenvoegen tot een werkend geheel. Immers kan de aanpassing van persoon 1 een conflict veroorzaken met de wijzing van persoon 2. Hoe controleer je dit?
HANDMATIG

Subversion is niet bedoeld om nitwits wat tekst te laten bewerken. Het is een tool voor softwareontwikkelaars die goed weten waar ze mee bezig zijn en die een conflict kunnen oplossen.

Acties:
  • 0 Henk 'm!

  • Kalentum
  • Registratie: Juni 2004
  • Laatst online: 20:34
Ben je niet gewoon bezig een wiki opnieuw uit te vinden? Een wiki is webbased, heeft versiebeheer en je kan zien wie wat heeft gewijzigd. En je wordt beschermd tegen het per ongeluk overschrijven van wijzigingen van iemand anders. En misschien is dit een leuk startpunt voor andere mogelijkheden.

Voor de rest, als je persé vanuit PHP met subversion wil werken, dan is die experimentele extension toch precies wat je nodig hebt? Enige gevaar is dat er misschien nog dingen veranderen in functie calls ofzo maar dat is met fatsoenlijke unit tests te signaleren. Alternatief is volgens mij alleen maar zelf een class bouwen die de svn-executable aanspreekt maar dat is voor webtoepassingen een no-go.

Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Het klinkt inderdaad erg als een wiki of misschien zelfs wel google wave. :P

{signature}


Acties:
  • 0 Henk 'm!

  • krvabo
  • Registratie: Januari 2003
  • Laatst online: 10-09 22:02

krvabo

MATERIALISE!

Darude1234 schreef op donderdag 04 februari 2010 @ 19:54:
Wat wil ik er mee doen: Ik wil een systeem op een (selfhosting)website hebben waarmee ik met meerdere mensen aan verschillende bestanden kan werken.
Ehm, als ik dit goed lees wil je gewoon met verschillende mensen aan één phpfile (of meerdere) kunnen werken?

Als dat zo is dan hoef je niets te programmeren in php. Dan installeer je een svnserver op een computer (server) en gebruik je bijvoorbeeld TurtoiseSVN (als ik het goed schrijf) om de files te committen.
Turtoise komt zelf met een venstertje als iets conflicteert en dan kunnen mensen aangeven wat ze uit welke file willen bewaren, en wat niet.
Om dit werkend te krijgen hoef je helemaal niets te programmeren..

Pong is probably the best designed shooter in the world.
It's the only one that is made so that if you camp, you die.


Acties:
  • 0 Henk 'm!

  • wasco
  • Registratie: April 2003
  • Laatst online: 05-09 08:34

wasco

brightest crayon in the box

Ja precies.

Dan gebruik je svn wel voor iets anders dan algemeen gebruikelijk, maar wie weet geeft het je een heleboel onverwachte mogelijkheden (markt overschrijdend innovatief) en dat voor een heeeele lage prijs, wat ook niet gebruikelijk is voor dit type desktop software. Goed staaltje uit het doosje denken! Was het een ongeluk of opzet?

wasco [the brightest crayon in the box]

Pagina: 1