TFS: consideraciones de sucursales para compartir scripts en los proyectos de equipo

Tenemos un grupo de proyectos de equipo en nuestra organización.

Mi objective es tener un proyecto de equipo central, llamémoslo $/Core , que contenga una carpeta $/Core/Scripts bajo la cual vivirían todos nuestros $/Core/Scripts comunes de compilation / implementación / etc.

 $/Core └───Scripts ├───build │ build_functions.ps1 │ build_tasks.ps1 │ run_build.ps1 │ └───deploy deploy_functions.ps1 deploy_functions_configuration.ps1 deploy_functions_eventlog.ps1 deploy_functions_web.ps1 

Quiero tener una forma de "compartir" este tronco común en cada uno de los proyectos de nuestro equipo individual:

 $/Foo └───Scripts $/Bar └───Scripts $/WallaWalla └───Scripts $/Cucamonga └───Scripts 

Estaba pensando en implementar esto esencialmente mediante la bifurcación. Estas son nuestras premisas:

  1. Los scripts NO SON Y NUNCA serán personalizados o modificados para las necesidades específicas de cada proyecto.
  2. El contenido del tronco $/Core/Scripts siempre tendrá prioridad sobre todas las twigs.
  3. Entonces, si detectamos un error o tenemos una function que queremos include en cualquiera de nuestros scripts, iríamos a la location $/Core/Scripts y nos uniríamos a todas las twigs.

LA PREGUNTA:

Source Control Explorer me ofrece dos opciones:

Rama

Esto me permitiría seleccionar un objective:

enter image description here

enter image description here

Convertir a twig …

Pero también veo esta opción disponible. Puedo seleccionar una de las carpetas de destino deseadas, convertirla en una twig.

enter image description here

enter image description here

Al final de la cual mi carpeta $/Target/Scripts ve así:

enter image description here

¿Qué significa esto?

Yo recomendaría no utilizar la ramificación en absoluto en este escenario.

Mantenga la carpeta Core \ Scripts como el lugar donde realiza el desarrollo en los scripts compartidos. Luego simplemente copie la carpeta de scripts en cada proyecto que necesite usarlo. Ya que solo está haciendo cambios en los scripts en un solo lugar (Core), no hay necesidad de funciones de bifurcación / fusión, una copy simple funcionará bien. Cuando desee extraer la última versión de los Scripts en un Proyecto, simplemente vuelva a copyr la carpeta Scripts.

La ramificación en cada proyecto lograría lo mismo, pero hay un gran inconveniente en eso (y no hay beneficios significativos sobre una copy simple). No puedes tener una twig dentro de una twig. Y supongo que en algún momento es posible que desee tener varias sucursales en Project Foo (por ejemplo, MAIN, DEV, HOTFIX, etc.). Si Project Foo tiene Scripts como una twig dentro de él, limita severamente sus opciones de bifurcación para Foo.