Come ignorare file / directory in TFS per evitarli di andare al repository di origine centrale?


254

È possibile impostare file / cartelle da ignorare in base al progetto nel controllo del codice sorgente TFS?

Ad esempio, ho un sito Web con una cartella delle risorse in cui non voglio accedere al controllo del codice sorgente. Queste risorse sono gestite da un sistema separato. Inoltre, non voglio mettere diversi gigabyte di risorse nel controllo del codice sorgente, ma ho bisogno di un paio di campioni sulla mia macchina di sviluppo, ma non voglio nemmeno controllarli.

Se sto lavorando su questo sito Web mentre sono legato al controllo del codice sorgente e aggiorno l'albero, questi file verranno automaticamente aggiunti di nuovo

Voglio impedire che ciò accada.


1
Per le aree di lavoro locali è possibile utilizzare i file .tfignore come sottolinea Richard Banks. Per modificare questo file con il menu contestuale in team-Explorer, vedere la mia risposta. Per Server-Workspaces ho fornito un link nei commenti.
gReX,

Risposte:


88

Per VS2015 e VS2017

Funziona con TFS (on-prem) o VSO (Visual Studio Online - l'offerta ospitata da Azure)

La documentazione NuGet fornisce istruzioni su come eseguire questa operazione e le ho appena seguite con successo per Visual Studio 2015 e Visual Studio 2017 contro VSTS (TFS ospitato da Azure). Tutto è completamente aggiornato a partire da novembre 2016 agosto 2018.

Ti consiglio di seguire le istruzioni di NuGet ma solo per ricapitolare quello che ho fatto:

  1. Assicurarsi che la packagescartella non sia impegnata in TFS. Se lo è, tiralo fuori da lì.
  2. Tutto il resto che creiamo di seguito va nella stessa cartella in cui .slnesiste il tuo file se non diversamente specificato (le istruzioni di NuGet non sono completamente chiare su questo).
  3. Crea una .nugetcartella. Puoi utilizzare Esplora risorse per denominarlo .nuget.affinché possa essere salvato con successo come .nuget(rimuove automaticamente l'ultimo periodo) ma provare direttamente a nominarlo .nugetpotrebbe non funzionare (potresti ricevere un errore o cambiare il nome, a seconda della versione di Windows ). Oppure denominare il nuget di directory e aprire la directory principale nel prompt della riga di comando. genere. ren nuget .nuget
  4. All'interno di quella cartella, crea un NuGet.configfile e aggiungi i seguenti contenuti e salvalo:

NuGet.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <solution>
        <add key="disableSourceControlIntegration" value="true" />
    </solution>
</configuration>
  1. Torna nella tua .slncartella e crea un nuovo file di testo e chiamalo .tfignore(se usi Windows Explorer, usa lo stesso trucco di cui sopra e chiamalo .tfignore.)
  2. Inserisci il seguente contenuto in quel file:

.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. Salvare tutto questo, inviarlo a TFS, quindi chiudere e riaprire Visual Studio e Team Explorer non dovrebbe più identificare la cartella dei pacchetti come un check-in in sospeso.
  2. Copia / incolla tramite Windows Explorer il .tfignorefile e la .nugetcartella in tutte le mie varie soluzioni e le ho impegnate e non ho più la packagescartella che tenta di intrufolarsi nel mio repository di controllo del codice sorgente!

Ulteriore personalizzazione

Pur non essendo il mio, ho trovato utile questo .tfignoremodello di sirkirby . L'esempio nella mia risposta riguarda la packagescartella Nuget ma questo modello include alcune altre cose e fornisce ulteriori esempi che possono essere utili se si desidera personalizzare ulteriormente questo.


1
Seguito questo su VS 2017 - TFS 2015. Ha funzionato come un fascino. Tutti i miei pacchetti Nuget non sono più stati visualizzati come modifiche in sospeso.
James Walsh Jr

Ho dovuto solo aprire manualmente le modifiche rilevate e aggiungere manualmente i file appena creati alle modifiche in sospeso. Solo che tutto ha funzionato bene.
Machado,

Questo non ha funzionato per me. VS 2017 - TFS 2015. Non riesco a controllare nulla. Quando provo ottengo il seguente errore: "D: \ Src \ MiniCoreWebAPI \ pacchetti \ Microsoft.IdentityModel.Protocols.5.2.1 \ lib \ net451 \ Microsoft.IdentityModel.Protocols .dll: Impossibile trovare una parte del percorso "
Rod,

Non avevo registrato la cartella dei miei pacchetti, ma era già stata rilevata come una modifica in sospeso. Dopo aver applicato queste istruzioni, ho dovuto "Annullare le modifiche in sospeso" nella cartella dei pacchetti, quindi tutto è andato bene quando ho ricostruito e NuGet ha ripristinato i pacchetti.
CodeHxr,

172

Se si utilizzano aree di lavoro locali (TFS 2012+) ora è possibile utilizzare il .tfignorefile per escludere il check-in di cartelle e file locali.

Se aggiungi quel file al controllo del codice sorgente, puoi assicurarti che altri membri del tuo team condividano le stesse impostazioni di esclusione.

Dettagli completi su MSDN - http://msdn.microsoft.com/en-us/library/ms245454.aspx#tfignore

Per i pigri:

È possibile configurare quali tipi di file vengono ignorati posizionando un file di testo chiamato .tfignorenella cartella in cui si desidera applicare le regole. Gli effetti del .tfignorefile sono ricorsivi. Tuttavia, è possibile creare file .tfignore in sottocartelle per sovrascrivere gli effetti di un .tfignore file in una cartella principale.

Le seguenti regole si applicano a un file .tfignore:

  • # inizia una riga di commento
  • Il * e? i caratteri jolly sono supportati.
  • Un filespec è ricorsivo a meno che non sia preceduto dal carattere \.
  • ! annulla un filepec (i file che corrispondono al modello non vengono ignorati)

File di esempio:

# 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

35
ho provato a farlo. l'unica cosa che viene ignorata è il contenuto del file .tfignore :(
user1852503

15
@SerjSagan il mio computer non mi ha permesso di creare .tfignorecosì ho creato .tfignore.e ha rimosso l'ultimo punto da solo ..
Peter

5
Il problema è che ignora solo le risorse, che sono state 1) eliminate esplicitamente nella finestra Esplora controllo del codice sorgente prima del check-in e 2) escluse esplicitamente nella finestra Modifiche in sospeso . Ad esempio, se si intende utilizzarlo per ignorare la cartella dei pacchetti e fare affidamento su NuGet Package Restore, sarà necessario 1) eliminare la cartella dei pacchetti in Source Control Explorer e quindi 2) escluderla nella finestra Modifiche in sospeso dopo il processo di ripristino del pacchetto NuGet . In caso contrario, verrà comunque archiviato nella cartella dei pacchetti .
Deilan,

1
Se Windows non ti consente di creare il .tfignorefile a causa della mancanza di un nome proprio, puoi crearlo o rinominarlo tramite una finestra della riga di comando.
Zarepheth,

1
C'è un grosso problema con .tfignore in VS2015. La gente è molto infelice , ma non sembra esserci una chiara dichiarazione del problema o un chiaro impegno a risolverlo.
bbsimonbb,

71

Si fa sembrare un po 'ingombrante per ignorare i file (e cartelle) in Team Foundation Server. Ho trovato un paio di modi per farlo (usando TFS / Team Explorer / Visual Studio 2008). Questi metodi funzionano anche con il tipo di progetto ASP del sito Web.

Un modo è quello di aggiungere un elemento nuovo o esistente a un progetto (ad esempio, fare clic con il pulsante destro del mouse sul progetto, Aggiungi elemento esistente o trascinare e rilasciare da Esplora risorse in Esplora soluzioni), consentire a TFS di elaborare i file o la cartella, quindi annullare in sospeso modifiche sugli articoli. TFS li deselezionerà come se avessero una modifica in sospeso in sospeso e i file rimarranno silenziosamente nel progetto e rimarranno fuori da TFS.

Un altro modo è con il comando Aggiungi elementi alla cartella di Explorer controllo sorgente. Questo avvia una piccola procedura guidata e su uno dei passaggi è possibile selezionare gli elementi da escludere (anche se, credo, devi aggiungere almeno un elemento a TFS con questo metodo affinché la procedura guidata ti permetta di continuare).

È anche possibile aggiungere una politica di check-in dei modelli proibiti (in Team -> Impostazioni del progetto del team -> Controllo del codice sorgente ... -> Politica del check-in) per impedire ad altre persone del team di controllare erroneamente determinate risorse.


7
Non avevo una politica sui modelli proibiti. La risposta a una domanda correlata rivela dove trovarla. Apparentemente fa parte degli utensili elettrici TFS .
Leif Carlsen,

1
Sto affrontando un problema simile, puoi fornire maggiori dettagli su una cartella particolare per non effettuare il check-in utilizzando la politica di check-in
Imran Rizvi

Whoops - hai ragione, Leif. Fa parte degli utensili elettrici TFS.
Derek Morrison,

Imran, sfortunatamente ho cambiato lavoro e non uso più TFS e non ho accesso ai miei progetti passati, quindi non sono sicuro della sintassi per la sintassi dei criteri di check-in dei modelli proibiti. Forse questa domanda aiuta? stackoverflow.com/questions/2741412/…
Derek Morrison,

TFS 2010 Dopo aver scelto i file da includere, è possibile escludere da tale elenco. Impossibile toccare i file esistenti ...
JNF

47

Per TFS 2013 :

Inizia in VisualStudio- Team Explorer , nella finestra di dialogo PendingChanges annulla le modifiche con lo stato [aggiungi], che dovrebbe essere ignorato.

Visual Studio rileverà nuovamente gli Add. Fai clic su "Rilevato: x aggiungi / i" -in Modifiche escluse

Nella finestra di dialogo "Promuovi modifiche cadidate" aperta Puoi facilmente escludere file e cartelle con il menu contestuale. Le opzioni sono:

  • Ignora questo oggetto
  • Ignora per estensione
  • Ignora per nome file
  • Ignora per cartella (sì cartella, aggiornamento 4 di TFS 2013 / aggiornamento Premium di Visual Studio 2013 4)

Non dimenticare di archiviare il file .tfignore modificato.

Per VS 2015/2017 :

La stessa procedura: nella "Scheda Modifiche escluse" in TeamExplorer \ Modifiche in sospeso fai clic su Rilevato: xxx aggiungi

La scheda Modifiche escluse in TeamExplorer \ Modifiche in sospeso

Viene visualizzata la finestra di dialogo "Promuovi modifiche candidate" e nelle voci è possibile fare clic con il pulsante destro del mouse sul menu contestuale. L'errore di battitura è stato risolto ora :-)


Non riesco a trovare questa opzione. Sono su VS 2015 RC.
Shimmy Weitzhandler,

Questo sarà solo lavoro se si sta lavorando con un lavoro locale, come descritto in dettaglio, qui: msdn.microsoft.com/library/vstudio/...
Stvn

@Shimmy: la procedura in VS 2015 RC è la stessa, con sempre lo stesso errore di battitura. Vedi la mia risposta aggiornata. Ma come sottolinea stvn .tfignore funziona solo con aree di lavoro locali. Per server-aree di lavoro si deve annullare l'includere nel Checkins in sospeso, vedi risposta qui: stackoverflow.com/questions/21887308/...
Grex

@Shimmy: sei connesso a TFS-Server 2015? Assicurati di iniziare con Team Explorer in VS
gReX il

@ qw1564 Sono abbastanza sicuro, quando la domanda è stata posta per prima, non è stato possibile il gui-way. Ma ora, questa è la risposta che sceglierei. Grazie per i crediti!
gReX,

5

Ho trovato il modo perfetto per ignorare i file in TFS come fa SVN.
Innanzitutto, selezionare il file che si desidera ignorare (ad es. Web.config).
Ora vai alla scheda menu e seleziona:

Controllo del file sorgente> Avanzate> Escludi web.config dal controllo del codice sorgente

... e boom; il tuo file è permanentemente escluso dal controllo del codice sorgente.


1
questo funziona per me su TFS 2010 per i file generati dal codice. GRAZIE!
BozoJoe,

1
In realtà funziona, il .tfignore non funziona per me. Grazie
mille

2
Non ho questa opzione in VS 2018
Adam

4

Presumo che tu stia utilizzando i progetti del sito Web. Questi eseguono automaticamente la scansione della directory del progetto e gettano tutto nel controllo del codice sorgente. Non c'è modo di fermarli.

Tuttavia, non disperare. I progetti di applicazioni Web non mostrano questo comportamento strano e piuttosto inaspettato (imho: idiota). WAP è un componente aggiuntivo attivo per VS2005 e viene fornito direttamente con VS2008.

In alternativa alla modifica dei progetti in WAP, potresti prendere in considerazione l'idea di spostare la cartella Asset dal controllo del codice sorgente e in una raccolta documenti TFS. Fallo solo se il progetto stesso non utilizza direttamente i file delle risorse.


si, il tuo presupposto è corretto. Ho pensato che sarebbe stato il caso, volevo solo essere doppiamente sicuro di non aver perso nulla.
Dave,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.