Come fare in modo che TFS 2010 rilevi le modifiche apportate ai file al di fuori di Visual Studio?


118

Utilizzo Team Foundation Server 2010 con Visual Studio 2010.

Ogni volta che modifico un file al di fuori di Visual Studio, TFS non sembra rilevare la modifica apportata al file e quindi non mi offre la possibilità di archiviare il file dopo che è stato modificato.

Come risolverlo?


18
Subversion o Git (e forse altri) stanno confrontando hash di file invece di API per eseguire il check in / out di un file. Molto più semplice e molto meno rischioso!
Steve B

8
peggio TFS non ha nemmeno notato che un file modificato deve essere archiviato, quindi puoi dimenticarlo spesso ... finché il tuo collega non lo controlla e si rende conto che il tuo codice non si compila o non funziona. Non c'è da meravigliarsi se la gente dice che TFS è "VSS con steroidi" - meglio, ma ha ancora molti dei problemi di VSS.
gbjbaanb

È VSS con gli steroidi, nello stesso modo in cui gli steroidi distruggono il tuo corpo.
Ian Kemp

Risposte:


48

Se hai una connessione di rete al tuo server mentre lavori al di fuori di Visual Studio, è probabilmente meglio andare avanti e controllare il file prima di modificarlo, utilizzando il client della riga di comando tf o utilizzando l'integrazione della shell di Esplora risorse di Windows che è disponibile nella versione TFS Power Tools . (Inoltre un numero crescente di altri strumenti ha l'integrazione TFS che lo rende automatico, ma se stai usando solo il blocco note, questo deve ancora essere un passaggio manuale.)

Naturalmente, ci sono molte volte in cui stai lavorando e non hai una connessione di rete disponibile che ti permetta di controllare i file.

Se sai quali file hai modificato, puoi semplicemente controllarli da Visual Studio, quindi sarai in grado di controllarli di nuovo.

Se non sai quali file hai modificato, puoi rilevare le modifiche eseguendo il tfpt onlinecomando (anch'esso parte della versione di Power Tools). Questo individuerà i file che sono stati modificati localmente e li estrarrà dal server.


Visual Studio non sembra rilevare le modifiche ai file semplicemente controllandoli. Ho appena provato a controllare una cartella e il contenuto è apparso nelle modifiche in sospeso come modifiche. Quindi ho eliminato la cartella in Esplora file e ho aggiornato le modifiche in sospeso, ma Visual Studio non ha detto che i file sono stati eliminati nelle modifiche in sospeso. Inoltre, i file erano ancora presenti in Esplora soluzioni.
Kyle Delaney

160

TFS ha un comando "Reconcile" per questo:

  1. Apri Esplora controllo del codice sorgente
  2. Fai clic con il pulsante destro del mouse sulla cartella con le modifiche e scegli Confronta
  3. Seleziona i file che desideri riconciliare (premi CTRL+ Aper selezionare tutti i file)
  4. Fare clic sul pulsante Riconcilia
  5. Impostare le opzioni nella finestra di dialogo Riconcilia differenze cartella . Assicurati che File che non hanno modifiche in sospeso sia impostato su Estrai
  6. Fare clic su OK
  7. Se sono presenti modifiche locali, verrà visualizzata la finestra di dialogo Check Out . Imposta il tipo di blocco preferito
  8. Fare clic su Check Out

Riconciliare le differenze di cartella

Vedi anche: Riconciliare le differenze tra le cartelle


13
Questa è la risposta migliore in quanto non richiede la riga di comando o un rischioso "Annulla modifiche in sospeso".
NickH

4
Mi ha salvato la giornata! Ho seguito i tuoi passi con precisione e ha funzionato esattamente come previsto. :-)
Gilad Barner

4
Ha funzionato come descritto. Dovrebbe essere la migliore risposta.
Nicolas

Sfortunatamente, quando si esegue questa operazione sull'intero progetto, viene visualizzato l'errore Il percorso, il nome del file o entrambi specificati sono troppo lunghi. Il nome completo deve contenere meno di 260 caratteri e il nome della directory deve contenere meno di 248 caratteri. La selezione di singole cartelle non è un'opzione per me, perché non ricordo tutte le directory dei file che ho modificato. Qualche idea?
kraftwer1

2
Funziona perfettamente nell'aggiornamento 3 di VS 2015, grazie mille. Dovrebbe essere la risposta migliore, nessun comando complicato per farlo funzionare
Nicolas Leucci

35

Questo ha funzionato per me, utilizzando TFS Power Tools:

tfpt online /adds /deletes /diff /noprompt /recursive directory-name

(dove nome-directory è il percorso della directory da aggiornare, altrimenti rileverà le modifiche nell'intero repository TFS)

Se vuoi sapere cosa farebbe senza che apporti effettivamente alcuna modifica, puoi forzarlo a eseguire una corsa a secco aggiungendo l' /previewinterruttore.


Grazie per il suggerimento @Adam Batkin. Ha funzionato come un incantesimo e ora sono a posto! +1
iOnline247

9
Attenzione, questa riga di comando includerà anche file indesiderati: * .user, BIN \, obj, ecc ...
Steve B

1
Ciao, stavo cercando un modo da riga di comando in modo da poter automatizzare l'aggiornamento del TFS dell'azienda dal mio repository Git locale!
Mark K Cowan

2
@SteveB c'è un /exclude:fld_name/*,filenameinterruttore che può essere utilizzato per escludere file indesiderati .. che mi ha fermato molto
Kresimir Pendic

1
Corro in questo modo tfpt online /deletes /noprompt /recursive directory-namee ho migliaia di file da `modificare`, quindi devo annullare. Ma non li ho mai toccati, ho solo cancellato la cartella.
Dzmitry Lahoda

16
*1- make changes outside of Visual Studio
2- go to Visual Studio and open Source Control Explorer
3- right click on the folder > "Check Out for Edit" > "Check Out"
4- right click on the same folder > "Undo Pending Changes..." > "Undo changes" > "No to All"*

Ho provato questa soluzione alternativa su un ramo e mi ha aiutato molto. Ma ci sono solo nuovi file e nuove cartelle che devono essere eseguite manualmente.

Consiglio di creare un ramo prima dell'operazione. Ti isola il tempo dell'operazione.

Nota: questa tecnica esegue anche la pulizia identica dei file che TFS contrassegna sempre come modificati.


3
Questo dovrebbe davvero essere un commento sul post di alga , non una nuova risposta. In ogni caso, consiglierei comunque di non farlo per lo stesso motivo per cui l'ho sconsigliato quando l'alga lo ha suggerito sopra.
Edward Thomson,

Assolutamente geniale! Esattamente quello che stavo cercando (dopo che la nostra azienda ha spostato il nostro server TFS e TFS / VS2010 ne è rimasto sconcertato). Ora, ho appena estratto i miei file modificati. Grazie!
Mike Gledhill

Funziona, ma la SM dovrebbe fornire modi migliori per farlo. La riga di comando e gli hack non dovrebbero essere necessari su un buon prodotto (specialmente se questo è incorporato in VS). SVN e Mercurial lo fanno per divertimento ...
user2173353

Invece del punto 4, è possibile utilizzare tfpt uu stackoverflow.com/a/544285/10245
Tim Abell

Questo annulla solo quello che hai fatto. Non rende Visual Studio consapevole di ciò che hai fatto.
Kyle Delaney

7

Prova questo. È una sorta di soluzione alternativa, ma funziona:

  1. apportare modifiche al di fuori di Visual Studio
  2. vai a Visual Studio e apri Esplora controllo del codice sorgente
  3. fai clic con il pulsante destro del mouse sulla cartella> "Check-out per modifica" > "Check-out"
  4. fai clic con il pulsante destro del mouse sulla stessa cartella> "Annulla modifiche in sospeso ..." > "Annulla modifiche" > " No a tutti "

Questo è tutto. Le modifiche sono ora visibili.


3
Lo sconsiglio vivamente: la mia più grande preoccupazione sarebbe quella di diteggiarlo e di annullare accidentalmente tutte le mie modifiche legittime. Inoltre, stai controllando tutti i file che, a seconda della configurazione del client e del server, probabilmente bloccheranno alcuni o tutti i file e potrebbero essere aggiornati al check-out, il che potrebbe sicuramente essere fastidioso.
Edward Thomson

1
Questo annulla solo quello che hai fatto. Non rende Visual Studio consapevole di ciò che hai fatto.
Kyle Delaney

E se hai creato o aggiunto nuovi elementi, in quella sessione: Gone baby, gone!
Christian

4

C'è anche un'altra soluzione per ottenere TFS per capire i file che sono cambiati al di fuori di Visual Studio:

  1. Apri la soluzione offline
  2. In Esplora soluzioni selezionare il file della soluzione e quindi premere il pulsante Vai in linea ( Icona del pulsante GoOnline)

TFS eseguirà automaticamente la scansione della soluzione per le modifiche dopo questo.

Il primo passo può essere ottenuto in molti modi diversi. Qui ce ne sono alcuni:

  • Usa l' estensione GoOffline - molto semplice ed efficace.
  • Se ti vengono richieste le credenziali TFS all'apertura della soluzione (nessuna autenticazione automatica del dominio), non inserire le credenziali. La soluzione si aprirà offline e accederai dopo aver premuto il pulsante Vai in linea
  • (soluzione estrema) Scollegare il cavo di rete; Apri la soluzione; Collega il cavo di rete.

3

Anche Visual Sourcesafe funziona in questo modo e il modo in cui ottengo VSS o TFS per notare la modifica è controllando il file una volta all'interno di Visual Studio.


1

Apri il controllo del codice sorgente e vai alla cartella TFS. Fare clic con il tasto destro sulla cartella e scegliere "Confronta".

Notare che i file modificati vengono visualizzati contrassegnati in rosso.

Trovo che questo sia migliore di quello tfpt onlineche ti fa anche ottenere file che non sono di sola lettura e non modificati.


1

Ho riscontrato questo problema in passato, quando Internet non funzionava e lavoravo offline e la maggior parte delle mie modifiche non veniva visualizzata in Team Explorer.

A seguito di questi passaggi: in primo luogo, Nella soluzione Explorer, selezionare la cartella che si desidera ri-conciliare (per me, è stata tutta la mia cartella della soluzione), e selezionare Confronta ... inserisci qui la descrizione dell'immagine Clicca in Modifica del filtro e nel filtro di testo- box, puoi digitare:

*.cs;!obj\;!bin\;!packages\;

In questo esempio, includerà nella ricerca solo i file C # ed escluderà nelle cartelle: bin, obj e packages.

Notare che la colonna In attesa di modifica contiene le informazioni se il file è contrassegnato come modifica, aggiungi, ecc ... o niente ...

  • Per contrassegnare come modifica (quando l'elemento locale ha un elemento del server corrispondente), selezionare il file e scegliere Estrai per modifica ...
  • Per contrassegnare come aggiunto (quando l'elemento locale non dispone di alcun elemento del server), seleziona il file e scegli Aggiungi file

Infine, non sono sicuro del motivo per cui i progetti non sono elencati qui (dopo aver rimosso il filtro * .cs, ancora non viene visualizzato), quindi ricostruisci la soluzione per assicurarti che anche i progetti si aggiornino

+ Nella soluzione, fare clic sul pulsante di connessione (se visualizzato) che diceva Vai in linea .


0

Ho scoperto che in Visual Studio 2015, con il progetto aperto, Visual Studio ha scoperto da solo che i file erano stati modificati esternamente e li ha estratti automaticamente senza che io dovessi fare nulla. Il check-in del progetto in modo normale ha salvato le modifiche esterne.


0

Nel mio caso, ha funzionato quanto segue (almeno l'unica volta che l'ho provato):

  1. Vai a Modifiche in sospeso pannello
  2. Seleziona Opzioni di visualizzazione in Modifiche incluse o Escluse.
  3. Passare da Mostra tutto e mostrare i cambiamenti Solution
  4. Se lo desideri, torna indietro

Aggiorna le modifiche a TFS

La modifica dell'opzione di visualizzazione sembra forzare un aggiornamento dei file modificati.

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.