Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[TortoiseSVN]Gedeelte van een source tree uitchecken+updaten

Pagina: 1
Acties:

  • urk_forever
  • Registratie: Juni 2001
  • Laatst online: 19-11 14:59
Hallo allemaal,

Bij het bedrijf waar ik werk gebruiken we SVN als source control applicatie. Nu hebben we een aantal verschillende repositories die we gebruiken. Vaak heb ik daar maar een gedeelte van nodig. Dus wat ik dan vaak doe is de topfolder van de repository uitchecken en daarbinnen check ik dan vaak de folder uit die ik nodig heb.

Stel ik heb de volgende repository

code:
1
2
3
TopFolder\SubFolder1
TopFolder\SubFolder2
TopFolder\SubFolder3


Nu check ik eerst alleen TopFolder uit en vervolgens check ik daaronder SubFolder1 uit.

Op zich werkt dit wel, als ik iets in de onderliggende folder wijzig wordt dit ook zichtbaar in de topfolder. Alleen als ik nu de hele topfolder wil updaten krijg ik altijd de melding "Failed to add directory C:\TopFolder\SubFolder1: a versioned directory of the same name already exists."

En dan stopt TortoiseSVN met updaten.

Is er ook een mogelijkheid dat deze manier wel kan werken? Of moet ik altijd vanuit de top folder committen en updaten?

Hail to the king baby!


  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Je uitleg van topfolders en subfolders is niet zo heel erg duidelijk; vooral niet als je bedenkt dat _alles_ in subversion versioned is, zowel de repos als alle onderliggende directories (ook evt trunk/branches/shelves/tags directories). Je kan toch niet je 'TopFolder' updaten als je alleen de SubFolder1 hebt uitgecheckt? Heb je in C:\TopFolder\ dan ook SubFolder2 (bijvoorbeeld) staan, of check je alleen SubFolder1 daar uit?

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


  • Remus
  • Registratie: Juli 2000
  • Laatst online: 15-08-2021
Je kan ook alleen de betreffende subfolder uitchecken en daarmee werken, en ik geloof dat Subversion 1.5 (of was het 1.6) ondersteuning heeft voor het sparse uitchecken van delen van de repository (wat volgens mij is wat je wilt). Ik heb daar zelf echter nog geen gebruik van gemaakt.

  • Cloud
  • Registratie: November 2001
  • Laatst online: 03-11 10:25

Cloud

FP ProMod

Ex-moderatie mobster

Je stelt het een beetje vaag, maar volgens mij kan wat jij wilt zo niet. Zoals Spider.007 al zegt, je kunt niet 'TopFolder' updaten noch committen als je alleen SubFolders ervan hebt uitgecheckt. Waarschijnlijk ontbreekt nu dus de .svn / _svn directory in de topfolder, waardoor SVN denkt dat jouwe een nieuwe map betreft. SVN probeert deze toe te voegen maar komt er dan achter dat deze in SVN wél bestaat.

De enige oplossing is denk ik de TopFolder uitchecken in plaats van de losse subfolders. :)

Never attribute to malice that which can be adequately explained by stupidity. - Robert J. Hanlon
60% of the time, it works all the time. - Brian Fantana


  • urk_forever
  • Registratie: Juni 2001
  • Laatst online: 19-11 14:59
@Spider.007: Met TopFolder bedoel ik inderdaad eigenlijk de repository. Bij het uitchecken kies ik dan de repository die ik wil gebruiken en kies dan Checkout Depth "Only this item". Vervolgens doe ik weer een checkout maar dan van een map binnen die repository en die check ik wel "Fully recursive" uit. Als ik dan wijzigingen in de map aanbreng zie ik dat wel terug in de repository checkout folder.

Maar als ik dan vervolgens de hele repository wil updaten krijg ik de melding dat de map die ik al had uitgecheckt al bestaat.

@Remus: Het uitchecken van alleen folders vind ik niet zo handig, omdat je dan snel het overzicht verliest van wat wel en wat nog niet ingecheckt is.

Ik heb TortoiseSVN 1.6 geinstalleerd dus ik zal eens kijken of ik daar wat mee kan.

Hail to the king baby!


Verwijderd

urk_forever schreef op donderdag 30 juli 2009 @ 09:31:
Dus wat ik dan vaak doe is de topfolder van de repository uitchecken en daarbinnen check ik dan vaak de folder uit die ik nodig heb.
Je moet nooit* een checkout binnen een andere checkout doen, dan haal je de administratie enorm door elkaar! Subversion heeft gelijk dat hij zegt dat 'a versioned directory of the same name already exists', immers bestaat binnen je uitgecheckte topfolder (in het repository) al een directory met dezelfde naam als degene die jij *apart* hebt uitgecheckt. Voor subversion heb jij dus twee aparte checkouts door elkaar staan, die ook nog eens voor een deel overlappen.

Afhankelijk van de indeling van het repository is het makkelijkste om of alles in 1x uit te checken, of inderdaad gewoon een enkele subdirectory te pakken. Bij ons is een repository op het eerste nivo ingedeeld in projecten, en daarbinnen weer met trunk/tags/branches. Je checkt dus vaak iets als svn://host/repos/project/trunk uit (en niet het hele repos). Dit is effectief ook gewoon een 'subdirectory'.

Waarom is uitchecken van alleen folders onhandig? Dat is precies wat je nu ook doet, alleen probeer je er een 'lege' topfolder omheen te bouwen? Als je gewoon een eigen directory maakt die niet onder versiebeheer valt (c:\mijncode, of voor mijn part noem je hem ook c:\topfolder) en daarin de tree uitcheckt die je echt wilt hebben (subfolder) dan werkt het toch prima? Je kunt ook verschillende checkouts *naast* elkaar zetten, dus je kunt bijvoorbeeld subfolder1, subfolder2 en subfolder3 allemaal apart uitchecken in c:\topfolder, als je drie van de tienduizend projecten nodig hebt :)
c:\topfolder -> niet onder versiebeheer
c:\topfolder\subfolder1 -> eerste checkout
c:\topfolder\subfolder2 -> tweede checkout
c:\topfolder\subfolder3 -> derde checkout

* zeg nooit nooit, maar je moet wel een heel goede reden hebben om dit te doen volgens mij...

  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

Wellicht kun je ook bereiken wat je wilt door gebruik te maken van SVN Externals; maar ik sluit me ook vooral aan bij de mening dat dit waarschijnlijk geen goed idee is :)

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


  • urk_forever
  • Registratie: Juni 2001
  • Laatst online: 19-11 14:59
Na wat proberen met SVN heb ik nu een werkbare situatie. Ik werk dan op de volgende manier:

- Eerst doe ik een checkout van de root van de Repository en kies dan als "Checkout Depth" "Immediate children, including folders". SVN checkt dan de root uit met alle onderliggende bestanden en mappen.

- Vervolgens kan ik dan per map bepalen of ik een dieper niveau nodig heb of niet. Op een uitgecheckte map kan ik dan een "Update to revision" doen, en dan kan ik kiezen of ik de hele map uitcheck ("Fully recursive") of daarvan alleen de "Immediate children, including folders".

Zo kan ik steeds een stapje dieper de boomstructuur updaten tot ik de folder heb die ik wil gebruiken en toch niet de hele repository uitchecken. Daarnaast kan ik gewoon op de repository root een update doen zonder dat hij de nog niet uitgecheckte mappen gaat uitchecken. Hij blijft bij de mappen die ik uitgecheckt heb.

Hail to the king baby!

Pagina: 1