¿Cómo ignorar los archivos / directorios en TFS para evitar que vayan al repositorio de origen central?

254

¿Es posible configurar archivos / carpetas para ignorar por proyecto en el control de fuente TFS?

Por ejemplo, tengo un sitio web con una carpeta de activos que no quiero ingresar al control de origen. Estos activos son mantenidos por un sistema separado. Además, no quiero poner varios gigabytes de activos en el control de origen, pero necesito un par de muestras en mi máquina de desarrollo, pero tampoco quiero verificarlas.

Si estoy trabajando en este sitio web mientras estoy vinculado al control de origen y actualizo el árbol, estos archivos se agregarán automáticamente nuevamente

Quiero evitar que esto suceda.

Dave
fuente
1
Para espacios de trabajo locales, puede usar .tfignore -Files como señala Richard Banks. Para ajustar este archivo con Context-Menue en team-Explorerer, vea mi Respuesta. Para Server-Workspaces, proporcioné un enlace en los comentarios.
gReX

Respuestas:

88

Para VS2015 y VS2017

Funciona con TFS (on-prem) o VSO (Visual Studio Online - la oferta alojada en Azure)

La documentación de NuGet proporciona instrucciones sobre cómo lograr esto y las acabo de seguir con éxito para Visual Studio 2015 y Visual Studio 2017 contra VSTS (TFS alojado en Azure). Todo está completamente actualizado a partir de noviembre de 2016 agosto de 2018.

Te recomiendo que sigas las instrucciones de NuGet pero solo para recapitular lo que hice:

  1. Asegúrese de que su packagescarpeta no esté comprometida con TFS. Si es así, sácalo de allí.
  2. Todo lo demás que creamos a continuación va a la misma carpeta en la que .slnexiste su archivo, a menos que se especifique lo contrario (las instrucciones de NuGet no son completamente claras al respecto).
  3. Crea una .nugetcarpeta. Puede usar el Explorador de Windows para asignarle un nombre .nuget.para que se guarde correctamente como .nuget(elimina automáticamente el último período) pero .nugetpuede que no intente asignarle un nombre directamente (puede recibir un error o puede cambiar el nombre, dependiendo de su versión de Windows ) O asigne un nombre al directorio nuget y abra el directorio principal en la línea de comandos. tipo. ren nuget .nuget
  4. Dentro de esa carpeta, cree un NuGet.configarchivo y agregue los siguientes contenidos y guárdelo:

NuGet.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <solution>
        <add key="disableSourceControlIntegration" value="true" />
    </solution>
</configuration>
  1. Regrese a la .slncarpeta de su carpeta, cree un nuevo archivo de texto y asígnele un nombre .tfignore(si usa el Explorador de Windows, use el mismo truco que el anterior y asígnele el nombre .tfignore.)
  2. Ponga el siguiente contenido en ese archivo:

.tfignore:

# Ignore the NuGet packages folder in the root of the repository.
# If needed, prefix 'packages' with additional folder names if it's 
# not in the same folder as .tfignore.
packages

# include package target files which may be required for msbuild,
# again prefixing the folder name as needed.
!packages/*.targets
  1. Guarde todo esto, confírmelo en TFS, luego cierre y vuelva a abrir Visual Studio y Team Explorer ya no debería identificar la carpeta de paquetes como un check-in pendiente.
  2. ¡Copié / pegué a través del Explorador de Windows el .tfignorearchivo y la .nugetcarpeta en todas mis diversas soluciones y las comprometí y ya no tengo la packagescarpeta tratando de colarse en mi repositorio de control de código fuente!

Personalización adicional

Si bien no es mío, he encontrado esta .tfignoreplantilla de sirkirby muy útil. El ejemplo en mi respuesta cubre la packagescarpeta Nuget, pero esta plantilla incluye algunas otras cosas y proporciona ejemplos adicionales que pueden ser útiles si desea personalizar esto más.

Jaxidian
fuente
1
Seguí esto en VS 2017 - TFS 2015. Trabajó como un encanto. Todos mis paquetes Nuget ya no aparecían como cambios pendientes.
James Walsh Jr
Solo tenía que abrir los cambios detectados y agregar los archivos recién creados a los cambios pendientes a mano. Excepto que todo funcionó bien.
Machado
Esto no funcionó para mí. VS 2017 - TFS 2015. No puedo registrar nada. Cuando intento aparece el siguiente error: "D: \ Src \ MiniCoreWebAPI \ packages \ Microsoft.IdentityModel.Protocols.5.2.1 \ lib \ net451 \ Microsoft.IdentityModel.Protocols .dll: No se pudo encontrar una parte del camino "
Rod
No tenía mi carpeta de paquetes registrada, pero ya se detectó como un cambio pendiente. Después de aplicar estas instrucciones, tuve que "Deshacer cambios pendientes" en la carpeta de paquetes, luego todo estuvo bien cuando reconstruí y NuGet restauró los paquetes.
CodeHxr
172

Si está utilizando espacios de trabajo locales (TFS 2012+), ahora puede usar el .tfignorearchivo para excluir las carpetas y archivos locales del registro .

Si agrega ese archivo al control de origen, puede asegurarse de que otros miembros de su equipo compartan la misma configuración de exclusión.

Detalles completos sobre MSDN: http://msdn.microsoft.com/en-us/library/ms245454.aspx#tfignore

Para los perezosos:

Puede configurar qué tipos de archivos se ignoran colocando un archivo de texto llamado .tfignoreen la carpeta donde desea que se apliquen las reglas. Los efectos del .tfignorearchivo son recursivos. Sin embargo, puede crear archivos .tfignore en subcarpetas para anular los efectos de un .tfignore archivo en una carpeta principal.

Las siguientes reglas se aplican a un archivo .tfignore:

  • # comienza una línea de comentarios
  • El * y? los comodines son compatibles.
  • Una especificación de archivo es recursiva a menos que tenga el prefijo \ character.
  • ! niega una especificación de archivo (los archivos que coinciden con el patrón no se ignoran)

Archivo de ejemplo:

# Ignore .cpp files in the ProjA sub-folder and all its subfolders
ProjA\*.cpp
# 
# Ignore .txt files in this folder 
\*.txt
#
# Ignore .xml files in this folder and all its sub-folders
*.xml
#
# Ignore all files in the Temp sub-folder
\Temp
#
# Do not ignore .dll files in this folder nor in any of its sub-folders
!*.dll
Richard Banks
fuente
35
He intentado hacer eso. lo único que se ignora es el contenido del archivo .tfignore :(
user1852503
15
@SerjSagan mi computadora no me permitió crear, .tfignoreasí que creé .tfignore.y eliminó el último punto por su cuenta ...
Peter
55
El problema es que ignora solo los recursos, que fueron 1) eliminados explícitamente en la ventana Explorador de control de origen antes del check-in y 2) excluidos explícitamente en la ventana Cambios pendientes . Por ejemplo, si lo va a usar para ignorar la carpeta de paquetes y confiar en NuGet Package Restore, necesitará 1) eliminar la carpeta de paquetes en Source Control Explorer y luego 2) excluirla en la ventana de Cambios pendientes después del proceso NuGet Package Restore . De lo contrario, seguirá registrando la carpeta de paquetes .
Deilan
1
Si Windows no le permite crear el .tfignorearchivo debido a la falta de un nombre propio, puede crearlo o cambiarle el nombre a través de una ventana de línea de comandos.
Zarepheth
1
Hay algún problema importante con .tfignore en VS2015. La gente es muy infeliz , pero no parece haber una declaración clara del problema o un compromiso claro para solucionarlo.
bbsimonbb
71

Se hace parecer un poco engorroso hacer caso omiso de los archivos (y carpetas) en Team Foundation Server. He encontrado un par de formas de hacer esto (usando TFS / Team Explorer / Visual Studio 2008). Estos métodos también funcionan con el tipo de proyecto ASP del sitio web.

Una forma es agregar un elemento nuevo o existente a un proyecto (por ejemplo, hacer clic con el botón derecho en el proyecto, Agregar elemento existente o arrastrar y soltar desde el explorador de Windows al explorador de soluciones), dejar que TFS procese los archivos o la carpeta y luego deshacerlos cambios en los artículos. TFS los desmarcará como teniendo un cambio de agregar pendiente, y los archivos se quedarán en silencio en el proyecto y permanecerán fuera de TFS.

Otra forma es con el comando Agregar elementos a la carpeta de Source Control Explorer. Esto inicia un pequeño asistente, y en uno de los pasos puede seleccionar elementos para excluir (aunque, creo que debe agregar al menos un elemento a TFS con este método para que el asistente le permita continuar).

Incluso puede agregar una política de registro de patrones prohibidos (en Equipo -> Configuración del proyecto de equipo -> Control de origen ... -> Política de registro) para evitar que otras personas del equipo ingresen ciertos activos por error.

Derek Morrison
fuente
77
No tenía una política de patrones prohibidos. La respuesta a una pregunta relacionada revela dónde obtenerla. Aparentemente es parte de TFS Power Tools .
Leif Carlsen
1
Me enfrento a un problema similar, ¿puede proporcionar más detalles sobre una carpeta en particular para que no se registre utilizando la Política de registro?
Imran Rizvi
Vaya, tienes razón, Leif. Es parte de las herramientas eléctricas TFS.
Derek Morrison el
Imran, desafortunadamente cambié de trabajo y ya no uso TFS y no tengo acceso a mis proyectos anteriores, por lo que no estoy seguro acerca de la sintaxis de la sintaxis de política de verificación de patrones prohibidos. Tal vez esta pregunta ayuda? stackoverflow.com/questions/2741412/…
Derek Morrison el
TFS 2010 Después de elegir los archivos a incluir, puede excluirlos de esa lista. No se pueden tocar los archivos existentes ...
JNF
47

Para TFS 2013 :

Comience en VisualStudio- Team Explorer , en el cuadro de diálogo PendingChanges deshaga los cambios con el estado [add], que debe ignorarse.

Visual Studio detectará los Agregar nuevamente. Haga clic en "Detectado: x agregar (s)" -en los cambios excluidos

En el cuadro de diálogo abierto "Promover cambios de Cadidate", puede excluir fácilmente archivos y carpetas con el menú contextual. Las opciones son:

  • Ignora este artículo
  • Ignorar por extensión
  • Ignorar por nombre de archivo
  • Ignorar por carpeta (sí, carpeta, TFS 2013 Actualización 4 / Visual Studio 2013 Premium Actualización 4)

No olvide registrar el archivo .tfignore modificado.

Para VS 2015/2017 :

El mismo procedimiento: en la pestaña "Cambios excluidos" en TeamExplorer \ Cambios pendientes, haga clic en Detectado: xxx add (s)

La pestaña Cambios excluidos en TeamExplorer \ Cambios pendientes

Se abre el cuadro de diálogo "Promover cambios de candidatos", y en las entradas puede hacer clic con el botón derecho en el menú contextual. El error tipográfico ya está solucionado :-)

gReX
fuente
Parece que no puedo encontrar esa opción. Estoy en VS 2015 RC.
Shimmy Weitzhandler
esto solo funcionará si está trabajando con un espacio de trabajo local, como se describe en detalle, aquí: msdn.microsoft.com/library/vstudio/…
stvn
@Shimmy: El procedimiento en VS 2015 RC es el mismo, con el mismo error tipográfico. Ver mi respuesta actualizada. Pero como señala stvn .tfignore solo funciona con espacios de trabajo locales. Para los espacios de trabajo del servidor, debe deshacer la inclusión en los registros pendientes, consulte la respuesta aquí: stackoverflow.com/questions/21887308/…
gReX
@Shimmy: ¿Estás conectado a TFS-Server 2015? Asegúrese de comenzar con Team Explorer en VS
gReX
@ qw1564 Estoy bastante seguro, cuando se hizo la pregunta primero, no era posible la vía guiada. Pero ahora, esta es la respuesta que elegiría. ¡Gracias por los créditos!
gReX
5

Encontré la manera perfecta de ignorar archivos en TFS como lo hace SVN.
En primer lugar, seleccione el archivo que desea ignorar (por ejemplo, el archivo Web.config).
Ahora ve a la pestaña del menú y selecciona:

Control de origen de archivo> Avanzado> Excluir web.config del control de origen

... y bum; su archivo está permanentemente excluido del control de origen.

Bharat
fuente
1
Esto está funcionando para mí en TFS 2010 para archivos generados por código. ¡GRACIAS!
BozoJoe
1
Esto realmente funciona, el .tfignore no funciona para mí. Muchas gracias
EpicKip
2
No tengo esta opción en VS 2018
Adam
4

Asumiré que está utilizando proyectos de sitios web. Estos rastrean automáticamente su directorio de proyectos y lo ponen todo en control de código fuente. No hay forma de detenerlos.

Sin embargo, no te desesperes. Los proyectos de aplicaciones web no exhiben este comportamiento extraño y bastante inesperado (imho: imbécil). WAP es un complemento para VS2005 y viene directamente con VS2008.

Como alternativa a cambiar sus proyectos a WAP, puede considerar mover la carpeta Assets fuera del control de Source a una Biblioteca de documentos TFS. Solo haga esto SI el proyecto en sí no usa directamente los archivos de activos.

Yo no
fuente
Sí, su suposición es correcta. Pensé que ese sería el caso, solo quería estar doblemente seguro de que no me perdía nada.
Dave