[SVN] Enkel gewijzigde bestanden exporteren

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Tjoekbezoer
  • Registratie: Maart 2003
  • Laatst online: 18-11-2024
Ik ontwikkel mijn webapplicaties op een mac, en maak gebruik van SVN voor versiecontrole. Na een aantal dagen heb ik weer een aantal aanpassingen gedaan die stabiel genoeg zijn om naar de live server te uploaden. Het project is aardig groot, en ik merk dat ik meer tijd kwijt ben dan ik wil aan het enkel uploaden van de gewijzigde bestanden.

Wat ik dus graag wil is uit mijn repository enkel de bestanden exporten die binnen een bepaalde revisierange vallen. Dan heb ik dus de gewijzigde bestanden in de correcte mappenstructuur op m'n mac staan, die ik dan vervolgens kan uploaden naar de server.

Ik heb aardig lopen zoeken in Cornerstone (de svn client die ik gebruik), en een trial van Versions, maar ik vind hier geen mogelijkheid voor. Is dit überhaupt mogelijk?

Nu heb ik even gekeken op google, en zag ik dat er voor windows wat eenvoudige oplossingen zijn. Voor de mac vond ik een python script, maar dat kreeg ik niet aan de praat. Ik wil hier geen uren onderzoek in stoppen, dus hopelijk is er iemand die dit al geprobeerd heeft, en een oplossing voor de mac klaar heeft liggen?

Bedankt!

Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Maak je wel gebruik van tags, om er maar een term tegenaan te gooien?

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


Acties:
  • 0 Henk 'm!

  • Kanarie
  • Registratie: Oktober 2000
  • Laatst online: 20:06

Kanarie

תֹ֙הוּ֙ וָבֹ֔הוּ

Capistrano met remote_cache optie? Maar dan ga je wel uit van een server waartoe je SSH access hebt.

Sowieso wel een fijne deployment tool.

[ Voor 9% gewijzigd door Kanarie op 16-04-2009 01:08 ]

We're trapped in the belly of this horrible machine. And the machine is bleeding to death.


Acties:
  • 0 Henk 'm!

  • Tjoekbezoer
  • Registratie: Maart 2003
  • Laatst online: 18-11-2024
CodeCaster schreef op donderdag 16 april 2009 @ 01:06:
Maak je wel gebruik van tags, om er maar een term tegenaan te gooien?
Aangezien ik op dit moment alleen werk aan dit project is voor mij het voordeel van tags gebruiken vrij beperkt; ik voorzie mijn commits nogal uitgebreid van commentaar waardoor ik precies weet welke revisions veilig zijn en welke niet. Als ik overigens tags zou gebruiken zou ik nog niet dichter bij een oplossing geweest zijn volgens mij, aangezien een tag gewoon een 'symlink' naar een bepaalde revision is? Dan blijf ik met hetzelfde probleem zitten.
Kanarie schreef op donderdag 16 april 2009 @ 01:08:
Capistrano met remote_cache optie? Maar dan ga je wel uit van een server waartoe je SSH access hebt.
Van deployment heb ik nog weinig kaas gegeten; dat ziet er uit als interessant voer voor later :) Voor nu zoek ik echter een oplossing die wat dichter bij huis ligt. Ik heb even windows aangezwengeld om daar met TortoiseSVN dat te doen wat ik wilde, maar uiteindelijk zou ik dit het liefste doen op m'n mac.

Blijf dus benieuwd naar hoe andere mensen dat doen.

Acties:
  • 0 Henk 'm!

  • eek
  • Registratie: Februari 2001
  • Laatst online: 06-04-2020

eek

@MagickNET

Je zou een export van je huidige 'versie/tag' kunnen doen en deze vergelijken met je vorige 'versie/tag' en de gewijzigde bestanden kunnen kopiëren naar een directory.

Skill is when luck becomes a habit.


Acties:
  • 0 Henk 'm!

  • fleppuhstein
  • Registratie: Januari 2002
  • Laatst online: 07-09 13:37
eek schreef op donderdag 16 april 2009 @ 07:18:
Je zou een export van je huidige 'versie/tag' kunnen doen en deze vergelijken met je vorige 'versie/tag' en de gewijzigde bestanden kunnen kopiëren naar een directory.
Als je twee versie gaat vergelijken, doe dan gewoon gelijk een SVN DIFF WC1 WC2 > patch.diff zodat je van 1 versie naar een nieuwe versie kan patchen, en ook terug kan zetten. En natuurlijk niet te vergeten kunt dry runnen

Acties:
  • 0 Henk 'm!

  • Remus
  • Registratie: Juli 2000
  • Laatst online: 15-08-2021
Tjoekbezoer schreef op donderdag 16 april 2009 @ 01:48:
Aangezien ik op dit moment alleen werk aan dit project is voor mij het voordeel van tags gebruiken vrij beperkt; ik voorzie mijn commits nogal uitgebreid van commentaar waardoor ik precies weet welke revisions veilig zijn en welke niet. Als ik overigens tags zou gebruiken zou ik nog niet dichter bij een oplossing geweest zijn volgens mij, aangezien een tag gewoon een 'symlink' naar een bepaalde revision is? Dan blijf ik met hetzelfde probleem zitten.
Het taggen maakt het wel makkelijker om releases terug te vinden en daar dan een diff op te doen, het is iig een stuk minder werk dan door je commit logs heen te spitten op zoek naar de juiste eerdere versie.

Overigens kan ik je gezien je werkwijze aanraden om te gaan werken met branches en je aanpassingen dan terug te mergen naar de trunk (of: andersom), aangezien je zo te zien selectief aanpassingen vanuit een ontwikkelbranch in productie op wilt nemen.

Acties:
  • 0 Henk 'm!

  • user109731
  • Registratie: Maart 2004
  • Niet online
Hoeveel controle heb je over de server? Het makkelijkste is om op de server een checkout te doen, maar dat is vast niet mogelijk. rsync kan ook maar dat is omslachtiger.

[ Voor 48% gewijzigd door user109731 op 16-04-2009 09:25 ]


Acties:
  • 0 Henk 'm!

  • Soultaker
  • Registratie: September 2000
  • Laatst online: 19:11
Ik zie drie opties:
  1. Doe geen export op de server, maar een checkout, zodat je later makkelijker kunt updaten. (Pas wel op dat je inloggegevens en andere gevoelige informatie in de repository beschermd is). Dit is natuurlijk het scenario waarvoor Subversion gemaakt is.
  2. Negeer Subversion en gebruik rsync o.i.d. om de source trees synchroon te houden (waarbij je de .svn-directories moet weglaten natuurlijk). Simpel en redelijk efficient.
  3. Gebruik Subversion om patches te genereren die je vervolgens toepast op de server. Hier kun je waarschijnlijk ook wel een scriptje voor schrijven, waardoor je feitelijk hetzelfde effect krijgt als rsync, behalve dat je niet expliciet hoeft te vergelijken welke bestanden er veranderd zijn omdat de Subversion repository dat gewoon "weet".

[ Voor 5% gewijzigd door Soultaker op 16-04-2009 13:37 ]


Acties:
  • 0 Henk 'm!

  • Tjoekbezoer
  • Registratie: Maart 2003
  • Laatst online: 18-11-2024
eek schreef op donderdag 16 april 2009 @ 07:18:
Je zou een export van je huidige 'versie/tag' kunnen doen en deze vergelijken met je vorige 'versie/tag' en de gewijzigde bestanden kunnen kopiëren naar een directory.
Remus schreef op donderdag 16 april 2009 @ 09:04:
Het taggen maakt het wel makkelijker om releases terug te vinden en daar dan een diff op te doen, het is iig een stuk minder werk dan door je commit logs heen te spitten op zoek naar de juiste eerdere versie.
Daar heb je inderdaad een punt. Scheelt toch weer een paar minuten. Overtuigd!
Remus schreef op donderdag 16 april 2009 @ 09:04:
Overigens kan ik je gezien je werkwijze aanraden om te gaan werken met branches en je aanpassingen dan terug te mergen naar de trunk (of: andersom), aangezien je zo te zien selectief aanpassingen vanuit een ontwikkelbranch in productie op wilt nemen.
Branches lijkt me niet nodig, misschien heb ik mijn situatie niet helemaal helder gemaakt. Het is niet zo dat ik commits over sla. Als de applicatie bijv. bij commit 102 stabiel is, dan wordt alles t/m die commit naar de server geüpload.
fleppuhstein schreef op donderdag 16 april 2009 @ 08:16:
Als je twee versie gaat vergelijken, doe dan gewoon gelijk een SVN DIFF WC1 WC2 > patch.diff zodat je van 1 versie naar een nieuwe versie kan patchen, en ook terug kan zetten. En natuurlijk niet te vergeten kunt dry runnen
Ik ga vandaag eens kijken naar deze optie. Aangezien ik Cornerstone gebruik (GUI) voor mijn svn acties ben ik niet bekend met de command line functionaliteit. Na wat lezen gisteren ben ik er wel achter dat mijn svn client aardig wat functionaliteit niet ondersteund (net als Versions overigens).

Nu heb ik dus drie opties:
- GUI client ToroiseSVN gebruiken onder windows (ja, of parallels)
- Tags maken, en bij nieuwe 'build' huidige tag met nieuwe tag vergelijken na export, en de verschillen uploaden
- svn diff

Hier moet iets werkbaars bijzitten natuurlijk, maar de meeste ideale oplossing voor mij zou toch een GUI client zijn die hier ondersteuning voor biedt. Ik ben echter bang dat dat simpelweg nog niet bestaat voor de Mac. Misschien nog ideeën?

Wel al bedankt voor het meedenken allemaal.

Acties:
  • 0 Henk 'm!

  • Kalentum
  • Registratie: Juni 2004
  • Laatst online: 21:16
Soultaker schreef op donderdag 16 april 2009 @ 13:37:
Ik zie drie opties:
  1. Doe geen export op de server, maar een checkout, zodat je later makkelijker kunt updaten. (Pas wel op dat je inloggegevens en andere gevoelige informatie in de repository beschermd is). Dit is natuurlijk het scenario waarvoor Subversion gemaakt is.
  2. Negeer Subversion en gebruik rsync o.i.d. om de source trees synchroon te houden (waarbij je de .svn-directories moet weglaten natuurlijk). Simpel en redelijk efficient.
  3. Gebruik Subversion om patches te genereren die je vervolgens toepast op de server. Hier kun je waarschijnlijk ook wel een scriptje voor schrijven, waardoor je feitelijk hetzelfde effect krijgt als rsync, behalve dat je niet expliciet hoeft te vergelijken welke bestanden er veranderd zijn omdat de Subversion repository dat gewoon "weet".
of 4: gebruik svn diff (de command line client die waarschijnlijk gewoon aanwezig is) om een lijstje van gewijzigde bestanden te krijgen en upload die per ftp. Dit lijkt mij alleen een optie als je geen shell toegang tot je productieserver hebt, want dan zijn alle andere opties te prefereren. iets als:
svn diff -r 1840:HEAD | grep '^Index' | sed 's/^Index: //g'


geeft mooi een lijstje van de veranderde bestanden tussen versie 1840 en de HEAD.

Acties:
  • 0 Henk 'm!

  • thalyric
  • Registratie: Februari 2002
  • Laatst online: 14-08 11:10

thalyric

God

hmm ik probeer ook zoiets. zit op een Vista bak met svn server VisualSVN

1) mijn repos fysiek:

c:\repos\projectx


2) mijn subversion link:

http://localhost:8080/svn/projectx


3) mijn export map

c:\export\projectx


Nu wil ik een hook maken die een commit de gecommitte bestanden export.

wat ik probeerde:

code:
1
svn export --revision COMMITTED http://localhost:8080/svn/projectx/ C:\export\projectx\ --force --username myusername --password mypass


maar dan krijg ik

code:
1
can't check path 'http://localhost:8080/svn/projectx/' : De syntaxis van de bestandsnaam, mapnaam of volumenaam is onjuist



Ok .. misschien de fysieke repos proberen

code:
1
svn export --revision COMMITTED c:\repos\projectx c:\export\projectx\ --force --username myusername --password mypass


resultaat

code:
1
svn: 'c:\repos\projectx' is not a working copy



en misschien dan maar met de file protocol:

code:
1
svn export --revision COMMITTED file:///C:\repos\projectx c:\export\projectx\ --force --username myusername --password mypass


resultaat:

code:
1
2
3
svn: Unable to open an ra_local session to URL
svn: Unable to open repository 'file:///C:%5Crepos%5Cprojectx'
svn: Can't open file '\C:\repos\projectx\format': De syntaxis van de bestandsnaam, mapnaam of volumenaam is onjuist.


zucht ...

is dit uberhaupt wel mogelijk?
Pagina: 1