Comment puis-je exclure un fichier spécifique du contrôle de source TFS

89

Nous avons plusieurs fichiers de configuration (app.DEV.config, app.TEST.config, etc.) et un événement de pré-construction qui copie le fichier de configuration correct dans app.config. De toute évidence, les fichiers spécifiques à la configuration sont sous contrôle de code source --- mais pour le moment, App.Config l'est également, et cela ne devrait pas l'être.

Comment puis-je marquer ce fichier comme exclu du contrôle de code source, mais évidemment pas du projet.

J'utilise VS 2005 et 2005 Team Explorer.

Ralph Shillington
la source

Réponses:

39

Il existe une stratégie d'archivage (stratégie de modèles interdits) dans les outils MS Power qui vous permet de filtrer les noms de fichiers par rapport à une expression régulière. Voir: Outils d'alimentation de Microsoft Team Foundation Server

Bien que les stratégies d'enregistrement ne soient pas totalement infaillibles, elles sont la chose la plus proche de TFS pour appliquer des règles définies par l'utilisateur comme ce que vous recherchez.

(Et comme les autres l'ont dit, vous pouvez également masquer un fichier ou un dossier, ce qui signifie qu'il reste dans le contrôle de code source et est visible par tous les autres membres de l'équipe, mais il n'est pas copié sur votre PC tant que vous ne décidez pas de le dévoiler; ou vous peut supprimer le fichier, ce qui signifie qu'il est supprimé des PC de tout le monde quand ils sont les plus récents - mais aucune de ces options n'empêchera l'ajout de ces fichiers au contrôle de source en premier lieu)

Jason Williams
la source
1
La fonctionnalité d'exclusion à l'échelle du projet d'équipe que vous décrivez n'existe malheureusement pas dans TFS. (sauf si c'est dans une version plus récente de 2010 que la mienne) La boîte de dialogue "Types de fichiers de contrôle de source" contrôle quels types de fichiers ne sont pas fusionnables, c'est-à-dire verrouillés exclusivement.
Richard Berg le
J'ai VSTS2005 / 2008 au travail, mais j'écris ceci à la maison, donc ma réponse venait de ma mémoire plutôt pauvre - désolé! Je viens de réaliser que vous avez besoin de la politique d'enregistrement des «modèles interdits» TFS Power Tools. Cela vous permet de faire correspondre les noms de fichiers à l'aide d'une expression régulière et de bloquer les vérifications
Jason Williams
Bon appel, j'avais oublié cette politique. Je modifierai votre message pour lui donner de la visibilité.
Richard Berg
Comment puis-je ouvrir une branche ??? J'ai caché une branche par erreur et je ne peux pas la dégager VS2012
rolivares
95

C'est facile dans TFS2012, créez un fichier .tfignore

http://msdn.microsoft.com/en-us/library/tfs/ms245454%28v=vs.110%29.aspx#tfignore

######################################
# 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

# EDIT https://msdn.microsoft.com/en-us/library/ms245454(v=vs.110).aspx#tfignore
# A filespec is recursive unless prefixed by the \ character.
artfulhacker
la source
comment feriez-vous un dossier d'ignorer récursif, mais inclure packages / repositories.config?
Maslow
@Maslow, si vous l'avez, n'hésitez pas à modifier ma réponse. semble être un paramètre assez courant et nous devrions le mettre dans l'exemple
artfulhacker
un fichier .tfignore à la racine de la collection de projets s'applique-t-il automatiquement dans la hiérarchie même si ce dossier n'est pas mappé / téléchargé?
Maslow
2
Ceci n'est pris en charge qu'avec les espaces de travail locaux. msdn.microsoft.com/library/vstudio/…
Sumo
45

Sélectionnez le fichier App.config dans l'Explorateur de solutions et choisissez Fichier -> Contrôle de code source -> Exclure App.config du contrôle de code source.

PjL
la source
1
exactement ce dont j'avais besoin pour ne pas stocker mes fichiers minifiés.
Valamas
13
Cela me dérange que cette option ne soit pas répertoriée dans le menu contextuel ordinaire
Eric Herlitz
6
Je n'ai pas cette option. : '- (
Jan Aagaard
2
Il n'est pas non plus présent dans Visual Studio 2013 Ultimate :(
Ytrog
4
Il est présent (sous Fichier> Contrôle de code source> Avancé> Exclure App.config du contrôle de code source) dans mon Visual Studio Premium 2013 (version 12.0.3023.00 mise à jour 3).
Martin Bäckström
21

Il existe une option difficile à trouver:

1. Sélectionnez le fichier ou plusieurs fichiers dans l'Explorateur de solutions

2. Allez dans Fichier -> Contrôle de la source -> Avancé

Chemin à exclure

et c'est ici

Voici l'exclusion

Gardez à l'esprit: si vous cliquez avec le bouton droit sur un fichier dans l'Explorateur de solutions, vous ne trouverez que «les options les plus importantes», pas toutes :)

Felix Keil
la source
Non. Vous devez décompresser les dossiers et sélectionner chaque fichier que vous souhaitez exclure.
Felix Keil
13

Si tout ce que vous voulez est d'avoir un fichier dans le projet mais pas sous contrôle de code source avec TFS, allez simplement dans SourceControl, supprimez ledit fichier et annulez votre extraction du fichier projet (il tentera de supprimer le fichier du projet comme bien). Enregistrez ensuite votre suppression du fichier que vous excluez. Dans l'explorateur de solutions, vous devriez voir qu'il n'y a pas d'icône de contrôle de source à côté du fichier que vous excluez. Le fichier projet doit y répertorier un fichier, mais ce fichier ne doit plus être sous contrôle de code source.

Gardez à l'esprit que toute autre personne verra désormais un fichier manquant dans le projet lors de sa dernière mise à jour.

Seth
la source
7

TFS vous permet de masquer au niveau du dossier / fichier. Quand quelque chose est masqué, TFS n'essaiera pas de le synchroniser (un peu comme un svn: ignore).

Lors de la configuration de votre espace de travail, masquez tout ce que vous voulez que TFS ignore. Une procédure plus détaillée est ici .

joshua.ewer
la source
si seulement il y avait un moyen de masquer le dossier pour tous les espaces de travail ... ne voyez aucun paramètre équivalent sous sécurité.
felickz
Vous ne pouvez pas masquer au niveau du fichier; seul dossier.
dudeNumber4
@ dudeNumber4 Je crois que cette fonctionnalité a été désactivée dans les versions ultérieures de TFS, bien après que la réponse initiale ait été écrite. Vous pouvez essayer ce hack cependant: social.msdn.microsoft.com/Forums/vstudio/en-US/…
joshua.ewer
5

Cela a fonctionné pour moi:

Une façon consiste à ajouter un élément nouveau ou existant à un projet (par exemple, un clic droit sur le projet, Ajouter un élément existant ou glisser-déposer de l'explorateur Windows dans l'explorateur de solutions), laisser TFS traiter le (s) fichier (s) ou dossier, puis annuler en attente changements sur le (s) article (s). TFS les marquera comme ayant une modification d'ajout en attente, et les fichiers resteront tranquillement dans le projet et resteront en dehors de TFS.

Source: = "> Comment puis-je exclure un fichier spécifique du contrôle de source TFS

Huilaaja
la source
2

Visual Studio 2013 (et 2012)

Cette fonctionnalité est disponible en sélectionnant le (s) fichier (s) et en allant dans:

File > Source Control > Advanced > Exclude ... from Source Control
Evan Mulawski
la source
Il n'y a pas d'exclusion en 2012.
ExpatEgghead
Je ne le vois pas non plus en 2013
VictorySaber
2

Cette question a été posée il y a quelque temps, mais elle concerne le même type de problème que moi.

Le problème:

  • Nous voulons vérifier notre code.
  • Nous voulons ensuite construire notre projet.
    • Pendant notre construction, nous dépendons des événements de construction pour déplacer les fichiers afin que nous ayons les fichiers appropriés en place pour que le processus de construction se termine.
  • Lorsque notre événement de construction essaie de copier les fichiers, nous obtenons des erreurs d'accès refusé.

La raison:

  • Le plug-in Visual Studio Team Foundation Server modifie l'attribut Lecture seule de nos fichiers en READONLY TRUE lorsque nous archivons nos fichiers.

Exemple d'événement de construction:

  • copier "$ (TargetDir) SomeFile.ext" "$ (ProjectDir)"

Ci-dessus, nous devons simplement déplacer un fichier de notre chemin de construction cible (les dossiers bin \ debug ou bin \ release) vers notre dossier de projet. Dans ma situation, c'était pour que je puisse inclure les fichiers générés par le projet dans mon programme d'installation. Mon installateur ne les a pas saisis dans le cadre de la sortie du projet.

Le correctif: (m'a presque donné un coup de pied au visage quand j'ai compris cela)

Nouvel événement de construction:

  • attrib -R "$ (ProjectDir) SomeFile.ext"
  • copier "$ (TargetDir) SomeFile.ext" "$ (ProjectDir)"
  • attrib + R "$ (ProjectDir) SomeFile.ext"

Nous nous amusons tous avec Build Events, n'est-ce pas? Ci-dessus je fais simplement 2 choses, je supprime l'attribut lecture seule, maintenant les fichiers ne sont pas en lecture seule. Copiez mon fichier comme je le souhaitais à l'origine. Remplacez ensuite l'attribut en lecture seule (facultatif, je suppose) pour que Visual Studio et Team Foundations soient satisfaits.

Et oui ... je me donne toujours des coups de pied au visage sur celui-ci.

Rob K.
la source
0

J'ai un problème similaire, mon App.config contenait des données sensibles (par exemple, le nom d'utilisateur) que ces données ne devraient pas synchroniser avec TFS.

L'article Meilleures pratiques pour le déploiement de mots de passe et d'autres données sensibles sur ASP.NET et Azure App Service décrit une bonne approche pour éviter ce problème:

Utilisez l'attribut "file" de l'élément "appSettings" pour référencer un fichier de configuration qui n'est pas ajouté au contrôle de code source

thuld
la source
0

Si vous avez une version plus ancienne que TFS2012 et que vous ne pouvez donc pas créer de .tfignorefichier ou utiliser l' File > Source Control > Advanced > Exclude …option, vous pouvez essayer ceci:

  • Faites une copie du fichier cible dans l'Explorateur Windows.
  • Annuler les modifications en attente (le cas échéant) sur le fichier cible dans Team Explorer / Visual Studio.
  • Supprimez le fichier cible dans l'Explorateur Windows.
  • Déplacez la copie du fichier cible vers l'emplacement du fichier cible supprimé et renommez-la pour qu'elle porte le même nom que le fichier cible supprimé.

TFS semble maintenant ignorer les changements dans le fichier cible. Si vous devez modifier à nouveau le fichier, n'utilisez pas Visual Studio, car TFS remettra alors le fichier dans la liste des fichiers avec des modifications en attente.

Protecteur un
la source
0

Vous pouvez simplement sélectionner le fichier à partir de votre Explorateur de contrôle de source et faire un clic droit dessus, puis sélectionner l'option "Renommer" à partir de là, et vous pouvez ajouter ".exclude" à la fin du nom du fichier.

Et n'oubliez pas d'archiver le fichier, et après cela, vous pouvez voir que votre fichier est exclu du contrôle de code source.

imsummysingh
la source