Kom ihåg mig?
Home Menu

Menu


SVN best practice?

 
Ämnesverktyg Visningsalternativ
Oläst 2011-07-05, 16:22 #1
Danski Danski är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Jul 2005
Inlägg: 1 208
Danski Danski är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Jul 2005
Inlägg: 1 208
Standard SVN best practice?

Vårt scenario:
1. Vi har en webbapplikation byggd enligt MVC mönstret som används av tre olika kunder. Varje kund har sin egen server, visuell design och data i DBn. I kort är vissa filer unika för varje kund (DB-settings, css, bilder och textfiler) men den stora delen är universal.

2. Vi gör uppdateringar/buggfixar och vill rulla ut dessa en gång i veckan till alla kunder.

3. Utvecklarna checkar in sin kod dagligen till 'trunk' i vår SVN repository. Före en ny version ska rullas ut till kunderna så blir det att manuellt kopiera över alla filer förutom de som är kundspecifika till en 'tags'-version för varje kund individuellt(se nedan).
Citat:
Ursprungligen postat av REPO
/trunk
-/www
/tags
-/1.0
--/kund1
--/kund2
--/kund3
-/1.1
--/kund1
--/kund2
--/kund3
4. Där efter gör vi en export av varje kunds version till en testserver som är snarlik kundens server innan det exporteras till kundens produktionsserver.


Vårt workflow varje vecka ser därför ut något liknande nedan, där de tre sista stegen måste göras för varje kund.
Local > SVN(trunk) > SVN(tag) > testServer > produktionServer

Finns det något vi kan förenkla eller borde tänka på? Hur gör ni generellt när ni jobbar med webbapplikationer och versionshantering? Även enklare projekt är jag nyfiken på hur ni hanterar. Alla tankar är välkomna...
Danski är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-07-05, 17:04 #2
Nerix Nerix är inte uppkopplad
Flitig postare
 
Reg.datum: Oct 2010
Inlägg: 398
Nerix Nerix är inte uppkopplad
Flitig postare
 
Reg.datum: Oct 2010
Inlägg: 398
Ni kan börja med att kolla på de där nya från Amerika, Git.
Nerix är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-07-05, 17:13 #3
Westmans avatar
Westman Westman är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Jun 2004
Inlägg: 4 021
Westman Westman är inte uppkopplad
Klarade millennium-buggen
Westmans avatar
 
Reg.datum: Jun 2004
Inlägg: 4 021
Jag saknar Bransch, jobbar ni händelsevis i trunken?
Westman är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-07-05, 17:17 #4
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
Citat:
Ursprungligen postat av Westman Visa inlägg
Jag saknar Bransch, jobbar ni händelsevis i trunken?
Branch ska det väl vara
__________________
Full-stack developer, free for smaller assignments
tartareandesire är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-07-05, 17:30 #5
Danski Danski är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Jul 2005
Inlägg: 1 208
Danski Danski är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Jul 2005
Inlägg: 1 208
Citat:
Ursprungligen postat av Nerix Visa inlägg
Ni kan börja med att kolla på de där nya från Amerika, Git.
Git och SVN uppfyller olika behov, säkerhetsaspekten och användarkontrollen hos en central SVN-repository vinner hos oss. Medan i de open source jag deltar i så är git utan tvekan trevligast.

Citat:
Ursprungligen postat av Westman Visa inlägg
Jag saknar Bransch, jobbar ni händelsevis i trunken?
Vi jobbar i trunken, branch används sällan, finns det någon vinst för oss att börja jobba mer där?
Danski är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-07-05, 17:57 #6
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
tartareandesire tartareandesire är inte uppkopplad
Supermoderator
 
Reg.datum: Jan 2004
Inlägg: 11 585
Det normala är väl att man arbetar mest i trunk även om undantag säkerligen finns. Har man inga väldefinierade versioner så är tags inte särskilt användbart (då funkar det bra att köra enbart trunk och branches) men i ert fall fyller de ju sin funktion.

Annars håller jag med om att SVN är bättre lämpat än Git i en sådan verksamhet.
__________________
Full-stack developer, free for smaller assignments

Senast redigerad av tartareandesire den 2011-07-05 klockan 18:07
tartareandesire är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-07-05, 18:56 #7
dAEks avatar
dAEk dAEk är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Dec 2006
Inlägg: 678
dAEk dAEk är inte uppkopplad
Mycket flitig postare
dAEks avatar
 
Reg.datum: Dec 2006
Inlägg: 678
Branches skulle ju vara bra om ni jobbar med olika versioner parallellt, vid t.ex. vidareutveckling. Vad händer om ni sitter och jobbar mot trunken och ni märker en säkerhetslucka i t.ex. 1.1? Som det ser ut nu får den sitta i baksätet tills dess att trunken är klar eller sparar ni undan alla ändringar, revertar tillbaks och fixar säkerhetsluckan, comittar och återställer till sist ändringarna? Det är inte helt ovanligt.

Vet inte om det är en bra ide men jag har funderat på nåt sånt här:
Kod:
/branches
	/1.0
		/kund 1
		[...]
	/1.1
		/kund 1
		[...]
	/1.1.1
		/kund 1
		[...]
/trunk
/tags
	/1.0-rc
		/kund 1
	/1.0-final
		/kund 1
		/kund 2
		/kund 3
	/1.1-final
		/kund 1
		[...]
  • rc = release candidate. Det som läggs ut på testservern.
  • final = det som faktiskt lanseras live.

Om det är en dålig idé vill jag gärna höra det tillsammans med motivering.

Det här med versionshantering är lite knöligt att få till rätt känns det som. När man väl är där - när man har nått hela vägen fram och fått fram en bra struktur - då är det nog så självklart och man undrar vad tusan man höll på med tidigare.

Senast redigerad av dAEk den 2011-07-06 klockan 23:28 Anledning: Stavfel.
dAEk är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-07-05, 20:33 #8
Westmans avatar
Westman Westman är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Jun 2004
Inlägg: 4 021
Westman Westman är inte uppkopplad
Klarade millennium-buggen
Westmans avatar
 
Reg.datum: Jun 2004
Inlägg: 4 021
Citat:
Ursprungligen postat av tartareandesire Visa inlägg
Branch ska det väl vara
Javisst, jag får skylla på tillfällig sinnesförvirring.
Westman är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-07-06, 10:56 #9
Danski Danski är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Jul 2005
Inlägg: 1 208
Danski Danski är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Jul 2005
Inlägg: 1 208
Citat:
Ursprungligen postat av dAEk Visa inlägg
Branches skulle ju vara bra om ni jobbar med olika versioner paralellt, vid t.ex. vidareutveckling. Vad händer om ni sitter och jobbar mot trunken och ni märker en säkerhetslucka i t.ex. 1.1? Som det ser ut nu får den sitta i baksätet tills dess att trunken är klar eller sparar ni undan alla ändringar, revertar tillbaks och fixar säkerhetsluckan, comittar och återställer till sist ändringarna? Det är inte helt ovanligt.

Vet inte om det är en bra ide men jag har funderat på nåt sånt här:
Kod:
/branches
	/1.0
		/kund 1
		[...]
	/1.1
		/kund 1
		[...]
	/1.1.1
		/kund 1
		[...]
/trunk
/tags
	/1.0-rc
		/kund 1
	/1.0-final
		/kund 1
		/kund 2
		/kund 3
	/1.1-final
		/kund 1
		[...]
  • rc = release candidate. Det som läggs ut på testservern.
  • final = det som faktiskt lanseras live.

Om det är en dålig idé vill jag gärna höra det tillsammans med motivering.

Det här med versionshantering är lite knöligt att få till rätt känns det som. När man väl är där - när man har nått hela vägen fram och fått fram en bra struktur - då är det nog så självklart och man undrar vad tusan man höll på med tidigare.
Låter lite som du och jag har samma tankar även om vi valt att köra löpande utveckling i trunken. Skulle ett säkerhetshål visa sig i t.ex. v.1.1 så tar vi den versionen från tagen och kör igång en branch för att åtgärda problemet. När hålet är åtgärdat så gör vi en ny tag v.1.1.2 som körs ut tills dess att v.1.2 är färdig.

Bollar gärna vidare även med andra SVN-scenarion i tråden, är väldigt lärorikt.
Danski är inte uppkopplad   Svara med citatSvara med citat
Oläst 2011-07-06, 12:12 #10
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Conny Westh Conny Westh är inte uppkopplad
Klarade millennium-buggen
 
Reg.datum: Aug 2005
Inlägg: 5 166
Om man har egenutvecklade produkter så brukar det vara bra att utgå från det. Det brukar inte vara så bra att dela upp utvecklingsversioner på på olika kataloger (då får man lätt olika verioner att underhålla vilket blir dyrt och osäkert i längden, försök att "hålla ihop" koden så mycket som möjligt), man kan däremot tagga varje version så man kan göra checkout på en specifik version vid ett senare tillfälle. Men man vill helst att alla utvecklare ska jobba med den senaste versionen och alltid förbättra produkten.

Ett förslag på struktur:

Kod:
/products
	/productA
                     /doc
                     /source
                     /bin
                     /config
	/productB
                     /doc
                     /source
                     /bin
                     /config
	/productC
                     /doc
                     /source
                     /bin
                     /config
	/productD
                     /doc
                     /source
                     /bin
                     /config
	[...]
/customers
	/customer1
		/documentation (unikt)
		/configuration (unikt)
		/productA (delad)
		/productB (delad)
	/customer2
		/documentation (unikt)
		/configuration (unikt)
		/productA (delad)
		/productB (delad)
	/customer3
		/documentation (unikt)
		/configuration (unikt)
		/productA (delad)
		/productB (delad)
Däremot är det bra att "dela" så man alltid har samma version av respektive produkt för alla kunderna, men källkod och binärfiler finns bara på ett ställe rent fysiskt.

Att brancha är en riskabel åtgärd om man får olika förgreningar av produkten. Det finns fördelar om man under en kortare tid behöver utveckla en produkt mycket intensivt av två olika team men i längden blir det kolossalt komplext och svårt (dvs tidsödande och därmed dyrt med risk för buggar) att hantera.

Configuration är det som är specifikt för varje kund.

I och med att man "taggar" vrje version så slipper man ha en egen katalogstruktur för varje version.

Det här gäller då om man verkligen vill att varje kund automatiskt ska få senaste uppdateringarna. Om man gör en egen katalogstruktur för varje version så hmnar man snabbt i en hlet ohanterlig skog av olika versioner som utvecklas åt var sitt håll, tro mig där vill man inte hamna.

Senast redigerad av Conny Westh den 2011-07-06 klockan 12:28
Conny Westh är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 12:40.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017