Pasando de Visual SourceSafe a Team Foundation Service (antes TfsPreview)
Introducción
Prácticamente desde que empecé a programar en .NET (allá por el 2003) he usado como controlador de código para mis propios proyectos el Visual SourceSafe (VSS) desde su versión 6 hasta la última del 2005 (v.8). Principalmente porque podía llevarlo en un pendrive y tenerlo disponible allí donde iba. Eso no quita que profesionalmente haya usado también SVN o ClearCase, pero desarrollando con Microsoft uno tira por lo que le da de comer.
Desde la salida de VS2010 Microsoft ha puesto mucho interés en que usemos Team Foundation Server (TFS). El caso es que esto no me era viable debido a que no disponía de la portabilidad que me ofrece el “pendrive”, y me es imposible subirlo a un servidor donde ponerlo “online” para poder acceder desde cualquier sitio con internet.
Esto ahora ha cambiado gracias a la conferencia que hizo MadridDotNet el pasado día 23 de Octubre de 2012 y a una consulta que hice en Twitter a MSDN España y a la cual me respondieron. En la conferencia, entre otras muchas cosas, hablaron de TfsPreview.com (ahora Team Foundation Service, que no Server, no se si han elegido una buena nomenclatura seguro que alguno se hace el lio), un portal para poder disponer de un servidor TFS en la nube para tus proyectos. La versión “Free” por supuesto tiene sus limitaciones, no está disponible SharePoint ni Reporting, y tiene las mismas limitaciones que un TFS Express donde se pueden conectar hasta 5 desarrolladores a un proyecto. Sí dispone de número ilimitado de proyectos, control de versiones, trazado de tareas, herramientas de planificación para las metodologías ágiles, gestión de retroalimentación o retroinformación (llamémoslo mejor “Feedback”) y generación de ensamblados (nombrados como “Builds”). Ruego que me perdonéis mi mala traducción.
Tenéis más detalles de las características en su página web.
En este artículo veremos:
- Crear una nueva cuenta en Team Foundation Service
- Conexión con Visual Studio
- Problemas de conexión con Visual Studio
- Migrando VSS a TFS
- Eliminación de un proyecto de equipo
Creación de Cuenta
¿Por dónde empezar? Abriendo una nueva cuenta en la página web “tfs.visualstudio.com”. Para ello deberás tener una cuenta Live con la que autenticarte y administrarla.
Img. Creación de Cuenta
Al crear la cuenta te genera una colección por defecto llamada DefaultCollection de donde van a colgar el resto de tus proyectos. Por defecto te pedirá que generes una, ten cuidado con el nombre que le pones porque una vez puesto o lo dejas tal cual o lo borras, y esta segunda opción no es moco de pavo.
Img. Portal de Bienvenida
Llegados a este punto he de decir que la gestión de los “proyectos de equipo” es bastante limitada en cuanto a renombrar o a eliminar. Se puede generar nuevos “proyectos de equipo” o gestionar los que ya tengas hechos, los grupos de usuarios y los roles de los mismos. Todo de forma fácil y básica y bajo la rama principal llamada “DefaultCollection”.
Img. Configuración de Cuenta
Conexión con Visual Studio
La conexión de Visual Studio (VS) con el TFS Online es muy sencilla siempre y cuando no tengáis un proxy de por medio.
Hay que destacar que soporta conexión con las versiones 2008, 2010 y 2012. No lo he comprobado con versiones anteriores. Se que con la versión 2012 no hay ningún tipo de problema conocido, pero recomiendo la actualización del mismo. Con la versión 2010 debe tener instalado el SP1 y el (Hotfix KB2581206 este ya no vale) Hotfix KB2662296. Para VS2008 también se debe tener instalado una actualización de distribución general.
Img. Conexión VS con TFS
Para VS2012 la ruta de menús es la siguiente:
EQUIPO –> Conectar con Team Foundation Server –> Servidores… –> Agregar
No voy a profundizar en el manejo de TFS, pero prácticamente se puede hacer todo desde las herramientas de “Team Explorer”, la ventana de “Explorador de control de código fuente” y desde el menú “Equipo”.
Corrección de problemas de conexión
Entramos en terreno pantanoso, los problemas de conexión en red que usan proxy y las credenciales de conexión. En este caso lo he solucionado para VS2010, pero probablemente pase lo mismo para VS2012.
Primer Paso : Adaptar Visual Studio para que tome las credenciales del proxy
La solución la he obtenido de este enlace. El cual explica como generar una librería que hay que poner en la carpeta de Visual Studio y cómo hay que cambiar su fichero de configuración para que tome dicha librería, la cual va a proporcionar los identificadores necesarios para la conexión proxy.
Yo además le he incluido el código necesario para que dichas credenciales las pueda tomar de su propio fichero de configuración:
Img. Configuración Librería
Código Fuente Clase Credenciales Proxy Configurables
public class ModuloAutenticacion : IWebProxy { ICredentials crendential = new NetworkCredential(Configuracion.AppSettings.Settings["ProxyUser"].Value, Configuracion.AppSettings.Settings["ProxyPassword"].Value); public ICredentials Credentials { get { return crendential; } set { crendential = value; } } public Uri GetProxy(Uri destination) { return new Uri(Configuracion.AppSettings.Settings["ProxyUrl"].Value, UriKind.Absolute); } public bool IsBypassed(Uri host) { return host.IsLoopback; } /// <summary> /// Obtiene la configuración de la aplicación /// </summary> public static Configuration Configuracion { get { return ConfigurationManager.OpenExeConfiguration(Assembly.GetExecutingAssembly().GetName().CodeBase.Replace("file:///", string.Empty)); } } }
La librería resultante y su fichero de configuración hay que ponerlos en el directorio de Visual Studio. Hecho esto se cambia el fichero de configuración de VS incrustando un código parecido a este:
Código XML Configuración VS
<system.net> <defaultProxy> <module type="RublenX.AutenticacionProxy.ModuloAutenticacion, RublenX.AutenticacionProxy"/> </defaultProxy> </system.net>
Ojo, aquí no se resuelven todos los problemas, al menos en mi caso.
Segundo Paso : Configuración de las Credenciales de la Web
Llegados a este punto el servidor no me daba errores de conexión por las credenciales proxy, este vez era por la autenticación contra “tfs.visualstudio.com”. ¿Qué hacer entonces?. Pues cambiar las credenciales desde el “Panel de Control”.
Img. Acceso al Administrador de Credenciales
Incluir una nueva entrada con la dirección web de “tfs.visualstudio.com” y vuestras credenciales de “Window Live”. No hace falta que lo explique ¿verdad?. Bueno dicen que una imagen vale más que mil palabras.
Img. Configuración Credenciales (Recordar que ya no es “tfspreview” sino “visualstudio”)
Traspaso de los ficheros de VSS a TFS
En este caso el equipo de foro de MSDN en español fueron tan atentos, como suelen tenernos acostumbrados, y contestaron a este planteamiento: ¿Cómo traspaso mis proyectos de VSS a TFService?.
La solución la tenemos descargando la herramienta “Visual Source Safe Upgrade Tool for Team Foundation Server” o con el nombre con el que se instala en el equipo “VSS Upgrade Wizard”.
Recomiendo tener el “SQLServer Express” instalado en el equipo ya que se va a necesitar como almacenamiento temporal durante la exportación a TFS. Y también que ejecutéis la herramienta de “SourceSafe” llamada “Analyze” para evitar que los problemas que pueda tener la BBDD de VSS pueda dar problemas en la migración de los datos. Por ejemplo mediante la siguiente línea de comando (cambiando claro está la ruta que he puesto por la de vuestro directorio):
analyze -C -D -F -V4 J:\PROGRAMACION\VSSBBDD\DATA
Mecanismo de un chupete… arrancamos el programa y seguimos estos pasos:
Img. Selección del Directorio Fuente de VSS
Img. Selección del Servicio TFS
Img. Opciones de Exportación y SQL Server
Img. Resumen de Configuración
Img. Validación de Configuración
Img. Proceso de Análisis y Subida
Si todo ha ido bien os aparecerá las siguiente pantallas.
Img. Migración Finalizada
Img. Resultado de Migración
Si has llegado hasta aquí tendrás tu copia de VSS subida a TFS, pero también te puede pasar como a mí que la migración de algún tipo de problema:
Img. Migración con Errores
Img. Detalle de Errores
Podéis comprobar los errores en el fichero XML que genera el programa en su carpeta Logs:
C:\ProgramData\Microsoft\Team Foundation\Server Configuration\Logs
Abriéndolo con el “XML Editor” que instala Office lo podréis leer sin problemas, pero sino ir a la sección “Issues” y podéis hacer una búsqueda por Type=»Error» o por Type=»Warning».
En mi caso los 4 errores se han producido por un fichero con una nomenclatura antigua de DOS (si, si, ese sistema operativo que su interfaz gráfica era todo texto) y que he podido agregar manualmente al TFS posteriormente.
Los avisos o “warnings” me dan cuando el fichero fue creado en otra rama diferente de la que esté ubicado en ese momento y su fecha de creación se queda por tanto en el momento en el que se pasó a esa rama. Y el resto de los avisos se suceden prácticamente por mover ficheros en SourceSafe de una carpeta a otra.
Sea como sea se guarda el registro de cambios y se puede hacer el seguimiento de los mismos.
Img. Historia Fichero Importado
Eliminación de un Proyecto de Equipo
Si os ha pasado como a mí, el primer proyecto de equipo le ponéis cualquier nombre pensando ingenuamente que luego se lo podréis cambiar…. pues NO.
Para borrar un Equipo de proyecto, ejecutar en modo administrador el icono de Visual Studio “Símbolo del sistema de las herramientas nativas de VS2012 x86”, y una vez abierta la ventana de comandos se ejecutaría la siguiente orden, cambiando por supuesto “tuproyecto” y “Nombre Proyecto” por los correspondientes:
TFSDeleteProject /collection:”https://tuproyecto.visualstudio.com/DefaultCollection” “Nombre Proyecto”
Img. Resultado de la Ejecución de Eliminación
Probé a ejecutarlo en otro acceso director de “Símbolo de Comandos” que tiene Visual Studio y no funcionó, así que si no os va en uno probar en otro, yo os he puesto donde sí me ha funcionado.
Conclusión
Estoy mucho más que satisfecho con la decisión de pasarme a TFS, mis datos ahora no sólo están accesibles desde cualquier sitio con conexión a internet sino que también están seguros, ya no los llevo encima en un dispositivo que podía perderse o estropearse. Y si nos ponemos hablar de las ventajas de TFS frente a VSS entonces este artículo sería ya mucho más largo de lo que ya lo es de por sí.
Cualquier duda o aclaración estoy a vuestra entera disposición.
Saludos.