Forum Programmation.autre Empecher le checkout automatique des tags en svn

Posté par  .
Étiquettes : aucune
0
22
sept.
2009
Coucou

J'utilise svn au boulot, c'est très bien, ça me suffit amplement pour ce que l'on a à faire. Personnellement, je préfèrerais un petit git mais les il faut trop recourir à la ligne de commande et les UI sont assez moche (git-gui quelle horreur...). Et pas d'intégration dans eclipse au niveau de subclipse.

Bref, me voila-t-y donc que je tag mon code pour une version release. Bon, passons sur le fait que les tags soient modifiables, un petit hook et c'est bon...

Mais patatraque, je code un peu et je me met à jour de HEAD, et le voilà qui télécharge tout le tag (alors que je continue sur HEAD et que je veux juste me maintenir à jour des modifs). Comment l'empecher de télécharger les tags (et donc des branches) quand je code sur head et que je fais un
svn update /mon/dossier/de/travail -r HEAD --force

(/mon/dossier/de/travail pointe vers la racinne du projet, là où il y a les dossiers tags, trunk, branches.. est ce que ça vient de là?)

Parce que si je dois télécharger toutes les branches à chaque fois que quelqu'un en crééra un, je passe direct à git !

Gaetan
  • # cd

    Posté par  (site web personnel) . Évalué à 2.

    Tu peux te mettre dans n'importe quel sous-dossier de ton dossier de travail et faire ton svn up le -r HEAD est sous-entendu.
  • # checkout d'un sous-repertoire ... tout simplement

    Posté par  . Évalué à 3.

    La métaphore de SVN c'est le système de fichier.
    Les branches n'existent pas en tant que concept.

    Imagines que sans VCS, tu gères des versions d'un projet dans une arbo ) plat.
    Tu créerais une arbo du genre /monprojet/trunk
    /monprojet/branch1
    /monprojet/branch2
    Si tu veux bosser dans la branche 1 tu vas sous /monprojet/branch1
    et à chaque fois que tu veux tagger
    cp /monprojet/trunk /monprojet/tags/tag1

    Avec SVN, c'est pareil !

    Du coup si tu veux bosser sur le tronc
    Tu fais un :
    cd /mon/dossier/de/travail
    svn co http:chezmoi.org/monprojet/trunk.

    On appelle ca un "partial checkout"

    Tu updates en fait tjs le HEAD mais tu te limites à un sous-repertoire lié à ta branche.
    Si tu veux changer de branche tu as svn switch.

    Avec les DVCS tu n'as bien souvent pas le support de "partial checkout" mais ils offrent bien d'autres avantages.



    Parce que si je dois télécharger toutes les branches à chaque fois que quelqu'un en crééra un, je passe direct à git !

    Tu devrais
    http://linuxfr.org/forums/12/27748.html#1066420
    • [^] # Re: checkout d'un sous-repertoire ... tout simplement

      Posté par  . Évalué à 2.

      Et sinon le hook pour verrouiller les tags c'est une moyenne bonne idée parce que ca fait ramer le serveur qui doit examiner chaque commit y compris cuex en dehors des tags (enfi je crois)

      Si vraiment vous faites dans la parano, Il vaut peut-être mieux locker récursivement le répertoire de chaque tag à chaque fois mais honnêtement ca sert pas à grand chose et c'est pas très performant avec SVN.
      Si quelqu'un commit malencontreusement sous un tag et que vous souhaitiez redémarrer une branche, il vous suffit de remonter à la révision du "cp" pour repartir du bon pied.
      A la limite, vous pouvez rajoutez une "propertie" sur le répertoire du tag qui indique la révision. Ca serait plus dans la philosophie de Mercurial.
    • [^] # Re: checkout d'un sous-repertoire ... tout simplement

      Posté par  . Évalué à 1.

      Effectivement c'est plus logique. Je vais travailler ainsi désormais.

      Néanmoins:
      - la gestion des tag est vraiment, vraiment stupide. En fait, il n'y en a pas. Ce qui est pire. Il leur suffisait de pouvoir associer un texte unique (hum VERSION_1.0) par exemple à un numéro de commit, vraiment RIEN a faire. Mais pkoi ne l'ont-ils pas fait tout simplement????
      - les hooks c'est à mon avis pour les gros projets, le notre ils suffit qu'on se disent que l'on ne va pas commiter sur des tags et ça suffira.

      Merci en tout cas!
      • [^] # Re: checkout d'un sous-repertoire ... tout simplement

        Posté par  . Évalué à 2.


        La gestion des tag est vraiment, vraiment stupide. En fait, il n'y en a pas. Ce qui est pire. Il leur suffisait de pouvoir associer un texte unique (hum VERSION_1.0) par exemple à un numéro de commit, vraiment RIEN a faire. Mais pkoi ne l'ont-ils pas fait tout simplement????

        Ce n'est pas dans la philosophie: Tags et branches ne sont pas des concepts à part entière (métadonnées). Rien ne t'empêche de te créer une commande qui applique une propertie sur le répertoire de ton tag au moment où tu le crées et avec un cp, genre:
        svn propset mon-projet-release "VERSION_1.0" /monprojet/tag1.

        Ainsi, si quelqu'un commite par erreur sur le tag tu pourras repérer rapidement la révision avant l'erreur avec un svn log et revenir en arrière ( http://svnbook.red-bean.com/en/1.5 /svn.branchmerge.basicmerging.html#svn.branchmerge.basicmerging.undo ) ou démarrer une branche de patch genre
        svn cp /monprojet/tag1@(marévisiontaggée) /monprojet/branches/version1-0-patch.
        Après tout un tag ca sert juste à ça.

        Je t'accorde que leur modèle est bancal, en témoigne la gestion foireuse des merge qui gère mal cette ambiguité.
        C'est pas près de s'améliorer je crois.


        Les hooks c'est à mon avis pour les gros projets, le notre ils suffit qu'on se disent que l'on ne va pas commiter sur des tags et ça suffira.

        Au contraire, plus le projet est gros plus les hooks pénalisent. Chaque commit déclenche le hook même s'il ne fait rien. Enfin faudrait vérifier.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.