[TFS] Mise sur étagère: “I’m a shelf for you”
Il faut le dire: la mise sur étagère ou “shelving” n’est pas la fonction la plus connue de TFS. Et pourtant on l’a déjà vu, elle peut être très utile. Voic un tour d’horizon de ce que l’on peut faire avec cette fonction. Voila comment cela marche: la mise sur étagère sauvegarde vos fichier en édition (d’un workspace) sur le serveur, sans faire de check-in! Faire du shelving, c’est aussi simple (voire même plus) qu’un check-in. Pour réaliser une mise sur étagère ou récupérer du code mis de coté de cette façon, il suffit d’aller ici:

Lorsque je clique sur “Shelve”, j’obtiens cette fenêtre:

C’est là que le shelving est différent du check-in: nous avons la possibilité, une fois le shelveset créé, d’annuler automatiquement les modifications en cours! Nous allons y revenir un peu plus loin.
Regardons l’opération inverse:

On remarques quelques éléments intéressants:
- Un peu utiliser un shelveset d’une autre personne,
- On peut avoir plusieurs shelvesets,
- Derrière le bouton “Details…”, on a la possibilité de corrigurer l’option d’un shelveset avec par exemple la possibilité de l’effacer une fois la récupération effectuée.
Voici quelques informations importantes à connaître pour cette opération de restauration d’un shelveset:
- Il vaut mieux ne pas avoir de fichier en check-out car “unshelve” ne peux pas faire de merge
-
Les fichiers sont restaurés avec comme version courante celle qui était utilisé par le fichier lors du shelving (normal finalement). Ce qui veut dire que vous aller avoir des fichiers en édition mais qui ne sont pas associés à la latest: donc attention lors de la compilation, un “get latest” est nécessaire pour faire le merge puis le check-in (dans cet ordre c’est plus simple):

Alors que faire de cette fonctionnalité?
- S’en servir pour passer du code à une autre personne lors d’un développement à plusieurs,
- Sauvegarder son travail régulièrement sans avoir à faire de check-in: par exemple un shelveset par jour. Via la ligne de commande de TFS, il est possible de programmer le planificateur de tâche pour faire le boulot pour nous: par exemple une mise sur étagère appellé “sauvegarde du soir” sera automatiquement remplacée au jour le jour: si au moment du shelving, un shelveset existe déjà avec le même nom il sera remplacé,
- Vous être en train de travailler et un incident urgent apparait. Au lieu d’annuler le code ou pire faire un check-in d’un code à moitié terminé, le shelving nous permettra de revenir en arrière le temps de la correction,
- Plus rien ne marche, et vous voulez revenir en arrière pour voir si le comportement est le même avant que vous décidiez “d’optimiser les algos” sans perdre vous modifications.
Il n’est pas possible directement avec le Team Explorer de restaurer du code mise sur étagère dans une autre branche, mais les power tools via la ligne de commande “tpft unshelve /migrate” le gèrent. Un dernière point: comme le shelveset est lié à une version spécifique du code, plus on attend pour le restaurer, plus il devient compliqué de le faire, un peu comme une vieille branche que l’on oublie de merger.
@+
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :