2010-10-07 20 views
8

Ecco il mio problema. Ho alcuni file dalla soluzione (diciamo Web.config) che ho cambiato e non voglio mai fare il check-in poiché le modifiche si riferiscono solo alla mia macchina. C'è un modo per dire in TFS di ignorare le modifiche in un determinato file e rimuoverlo dalla finestra delle modifiche in sospeso. Naturalmente, posso saltare questo file in ogni check-in, ma c'è sempre un cambiamento da dimenticare e il check-in per errore. Ad esempio, esiste una lista ignora simile in AnkhSVN.Ignora determinati file dalle modifiche in sospeso

risposta

11

Alcune parti dei file {app,web}.config possono essere delegate a un altro file. In particolare <connectionStrings>.

Nella tua app.config o web.config:

<connectionStrings configSource="LocalConnectionStrings.config" /> 

a LocalConnectionStrings.config hanno (<connectionStrings> è l'elemento principale):

<connectionStrings> 
    <!-- For the application's operations. --> 
    <add name="Application" 
     connectionString="Data Source=server;Initial Catalog=database;Integrated Security=True;Network Library=dbmssocn" 
     providerName="System.Data.SqlClient" /> 
</connectionStrings> 

Così ogni sviluppatore ha un LocalConnectionStrings.config che è nel progetto, ma non in set di controllo sorgente con le loro impostazioni private mentre {web,app}.config ha impostazioni condivise. Sfortunatamente questo funziona solo con un insieme limitato di elementi di configurazione definiti dal sistema.

+0

Sembra una soluzione accettabile. Grazie. – anthares

1

Non c'è nulla da ignorare, ma la cosa migliore è, dopo il check-in, è possibile utilizzare l'accesso via web o un altro computer in cui non è stata mappata la struttura del codice sorgente ed è possibile eliminare i file indesiderati dal codice sorgente tree e visual studio non eseguiranno il checkin di quei file la prossima volta che li modifichi.

È anche possibile inserire file nella cartella e modificare il file di progetto in editor xml per includere il file nel progetto, Visual Studio non aggiungerà file al controllo del codice sorgente aggiunti manualmente modificando xml del file di progetto.

+0

Ho considerato questa variante anche, ma questo file dovrebbe essere sotto il controllo di origine . Non c'è modo di escluderlo, perché questo rompere alcune altre funzionalità. – anthares

2

Per il nostro lavoro in VS 2005/2008 abbiamo attivato più checkout e non controlliamo mai il web.config.

Per il fastidio di provare a fare cose funky per non avere qualcosa archiviato, non lo verifichiamo mai. Nel caso strano che uno di quei file sia archiviato, beh è un po 'veloce "Ehi ragazzi mi sono incasinato ".

D'altra parte, è possibile indicare a TFS di escludere un file dal controllo del codice sorgente. Questo dovrà esistere su tutti i computer perché le soluzioni/i progetti continueranno a cercare quel file.

http://arcware.net/2007/04/12/how-to-exclude-files-from-tfs-source-control/

È inoltre possibile modificare il file sln/progetto. Ho eseguito questo metodo con progetti di test in cui non voglio dover correggere altri test delle persone solo per eseguire il mio, quindi ho rimosso il mio progetto di test da TFS, mantenendo intatti gli altri.

+1

Come ho già detto, "Ehi ragazzi che ho fatto casino" non mi va bene (per la precisione, lo sto facendo in questo modo proprio ora, ma cerco un modo più conveniente). Anche l'esclusione del file dal controllo del codice sorgente non è un'opzione. – anthares

+0

Link morto. Non in archive.org. Doloroso, [autore dice] (http://arcware.net/reboot/), "* Questo potrebbe sorprendere alcune persone, ma tutto il mio contenuto precedente è andato. Tutto quello che ho scritto prima, l'intero decennio del 2004 - 2014 , non è più disponibile. Nessun post, nessun commento, niente. * "Chi dice che il contenuto pubblico sul Web non può morire? ; ^) – ruffin

1

Quale versione di studio stai usando?

Se si è nel 2010, è possibile utilizzare le trasformazioni di configurazione Web. In questo modo puoi avere diversi file web.config a seconda dell'ambiente. Ad esempio, sviluppo, test, produzione ..

Se si è nel 2008, di solito disponevamo di un file web.config principale che puntava ai nostri file di sviluppo e un file web.production.config che puntava alla produzione. Durante la distribuzione cancelliamo il web.config e rinominiamo web.production.config.

+0

Sto usando il 2010 ma le modifiche sono specifiche della macchina e non specifiche dell'ambiente. Ad esempio, per dev environment, il web.config di dev è diverso per tutti i miei colleghi. – anthares

+1

@anthares: immagino che ognuno di voi stia utilizzando il proprio server sql locale? Potresti sviluppare l'idea di trasformazione e aggiungere semplicemente una configurazione per ogni dev. O, basta lavorare sulle stesse impostazioni. Personalmente, avendo affrontato i problemi in entrambi i tipi di ambienti, preferisco un approccio SQL server comune ... Sembra meno complicato. – NotMe

4

La pratica migliore per quanto riguarda i file di configurazione, TFS e macchine per sviluppatori differenti è (hem hem) ...

Tutti gli sviluppatori devono avere lo stesso ambiente dev. E 'l'unico modo per gestire i file web.config in TFS, e ha un sacco di vantaggi aggiuntivi:

  • Nomore "ma lavorare sul mio computer"

  • suo amico il temuto "I don capisco quali dipendenze sono richieste e non si compila più ".

  • Non ti pentirai del famoso "Ah, ho dimenticato di dirti, ho inventato un MyWonderfullApplicationConfigSection e dovresti definirlo nel tuo web.config, ma non ti dirò come."

  • Sarà davvero aiutare la creazione di un ambiente di compilazione o di una distribuzione.

Ok, in realtà non è facile, lo so che gli sviluppatori diversi, come diverse impostazioni ... ma è un buon idea di standardizzare la piattaforma dev E 'davvero la pena

+0

-1 cattiva idea. Cosa succede se si dispone di un'architettura a più livelli che utilizza la configurazione Web per determinare gli endpoint wsdl? per quanto riguarda le e-mail di errore? per quanto riguarda gli sviluppatori non mi piace compilare in batch? La standardizzazione della configurazione del web di sviluppo non è fattibile in molte situazioni. –

+1

Ho detto che non è sempre facile da implementare. Tuttavia, dovresti notare che se hai una piattaforma dev standardizzata, gli endpoint wsdl non sono più un problema (questi diventano standardizzati) E se non lo sono ... avrai comunque dei problemi. Non vedo il punto di email di errore su una piattaforma sviluppatore. Attivali solo sulla produzione. Se diversi sviluppatori necessitano di una configurazione di compilazione diversa, va bene: le configurazioni di compilazione esistono esattamente per questo. Attenzione però a cambiamenti inosservati sulle dipendenze di altri sviluppatori. – Eilistraee

+0

Anche se è vero, possiamo discutere su tutti questi punti, che non sono in grado di rispondere in modo meno pertinente in alcun modo ... La standardizzazione della piattaforma di sviluppo web ha molti vantaggi. E potrebbe arrivare fino all'utilizzo di un comune VHD aggiornato regolarmente – Eilistraee

6

una soluzione potrebbe essere quella di rimuovere l'attributo di sola lettura sul web.config in Windows Explorer quindi modificare in blocco note:..

  • non apparirà nella attesa cambia
  • E 'ancora nella fonte di controllo

soluzione Brutto ma semplice.

+0

È possibile modificare in VS senza checkout se si seleziona l'opzione Consenti modifica ... in Strumenti | Opzioni | Generale | Documenti. – Richard

+0

+1 Ho finito per farlo. Funziona bene. –

+1

Nota questo trucco NON funziona con "Aree di lavoro locali" in TFS 2012+. –

2

È possibile eseguire una copia dei file che non si desidera archiviare, annullare il controllo e sostituirli con la copia. Poiché la modifica è stata apportata da VS esterno, non verrà verificata, quindi non sarà nell'elenco delle modifiche in sospeso.

(So che questa è una vecchia questione, ma sono sicuro che qualcuno alla ricerca di un modo per farlo potrebbe utilizzare questa risposta)

Problemi correlati