2013-03-25 14 views
28

Wir haben das mehr als ein paar Mal passiert, wenn wir es zu diesem Zeitpunkt mehr als nur einen Zufall betrachten. Wenn wir zurückgehen, nachdem wir mit unserer Branche fertig sind, gibt es viel mehr Veränderungen, als sie sein sollten. Die meisten Dateien, die als ausstehende Änderungen angezeigt werden, haben sich nie geändert (in den meisten Fällen weder in der Verzweigung noch in der Basis). Wenn ich sie vergleiche, verwende ich keine Unterschiede. Ich habe nicht alle Dateien durchgesehen, die sich nicht geändert haben, aber in den meisten Fällen scheint es, als wären sie als [merge] markiert und die Dateien, die sich tatsächlich geändert haben, sind als [merge,edit] markiert.Dateien, die als ausstehende Änderungen aufgelistet werden, wenn Zusammenführungen durchgeführt werden, die sich nicht geändert haben?

In einem Fall haben wir wahrscheinlich um ein 100 Dateien geändert, es ausstehende Änderungen zeigten mehr als 22.000 Änderungen. Wir haben versucht, sie an einem Punkt zu überprüfen, weil wir denken, dass tfs schlau genug ist, um zu wissen, welche Dateien sich geändert haben und welche nicht. Aber es hat alle Dateien eingecheckt. Weiß jemand, was los ist und wie man es repariert?

Wir laufen TFS 2012 w \ Update1
Jeder Visual Studio 2012 w \ Update 1.

Antwort

20

In Bezug auf das Problem mit dem Sie 100 Dateien geändert hatte und TFS wollte tausend mehrere verschmelzen. Dies wird normalerweise verursacht durch renaming (oder löschen und dann un-löschen oder verschieben) eine Verzweigung. Das hat mich ein paar Mal gebissen und ich fühle deinen Schmerz.

Der beste Rat, den ich geben kann, ist, sobald Sie einen Zweig erstellt haben, lassen Sie es in Ruhe. Bewege es nicht, benenne es nicht um. Wenn die Position oder der Name der Verzweigung falsch ist, lebe damit, bis es Zeit ist, die Verzweigung zu löschen und eine neue zu erstellen.

Da TFS 201x hinter den Kulissen arbeitet, wird der Stammordner einer Verzweigung durch ein anderes Objekt geändert. Wenn Sie versuchen, die Verzweigung erneut zusammenzuführen, führt TFS eine unbegründete Zusammenführung durch, was bedeutet, dass anscheinend alle Dateien in der Verzweigung geändert wurden (obwohl sie dies nicht getan haben). Dies ist ein neues Verhalten, ältere Versionen von TFS (2005/2008) leiden nicht an diesem Problem.

z.B. Sie haben ein Team-Projekt, das wie dieses

$/TeamProject/Main

Sie dann einen Zweig von „Main“ genannt „Dev“ erstellen

$/TeamProject/Dev

Sie so viel fusionieren können aussieht, wie Sie möchten und dort sollte keine Probleme sein. Dann entscheiden Sie, dass die Ordnerstruktur könnte ein bisschen chaotisch, wenn Sie mehrere Entwickler Zweige haben, so dass Sie einen Ordner namens „Development“ an der Wurzel des Teamprojekt erstellen und die Entwickler Zweig in diesem Ordner

$/TeamProject/Development/Dev

bewegen

OK jetzt hinter den Kulissen ist der Umzug ein Umbenennen und ein Löschen, der alte Dev-Zweig existiert immer noch unter $/TeamProject/Dev (Sie können dies sehen, indem Sie auf "Tools", "Optionen", "Source Control", "Team Foundation Server" gehen und dann überprüfen Sie die Einstellung, die besagt "gelöschte Elemente in der Quellcodeverwaltung anzeigen"

Der Ordner namens $/TeamProject/Development/Dev ist eigentlich eine brandneue Sache! Daher Es hat keine Zusammenführungsbeziehung mit "Main". Verwirrenderweise wird die IDE zwar eine Beziehung zeigen, aber wirklich existiert sie nicht. Wenn Sie das erste Mal von $/TeamProject/Development/Dev zu $/TeamProject/Main zusammenführen, wird TFS eine hinterhältige unbegründete Zusammenführung durchführen, um die Verzweigungsbeziehung herzustellen.

Das gleiche passiert, wenn Sie einen Zweig umbenennen (der alte Zweig wird gelöscht und eine neue Niederlassung wird unter der Decke erstellt werden)

This Blog geht um etwas detaillierten

+0

danke. Das scheint es zu sein. Ich weiß, 4sure einer der Zweige wurde verschoben b4 versucht, zu verschmelzen. Die aktuelle bin ich mir nicht sicher, aber das ist es wahrscheinlich. – coding4fun

34

Für alle, die mit Gleiches Problem ist eine Arbeit um Ihre ausstehenden Änderungen rückgängig zu machen. Wenn Sie den Bestätigungsdialog erhalten, wählen Sie "Nein zu allen". Nur Ihre ausstehenden Änderungen sollten belassen werden.

+2

Dies ist der Fall, den ich ständig mit TFS2012 und TFS2013 bekomme. Deine Lösung hat super funktioniert! –

+0

Das löste das Problem auch für mich. – Dan

+8

Dies funktioniert, wenn Sie nur Änderungen an Dateien haben. Es fügt keine neuen Dateien hinzu, die Sie hinzugefügt haben. –

5

Try this:

  1. alle anstehenden Dateien auswählen
  2. auf Kontextmenü klicken Sie auf 'Rückgängig machen ...'
  3. in der 'Undo Ausstehende Änderungen' -Dialog Sortierdateien von 'Change' Spalte
  4. deaktivieren Sie alle Dateien mit Ausnahme von 'merge' Shift + klicken
  5. Klicktaste 'Änderungen rückgängig machen'
4

Der obige Kommentar mit der Option "Nein zu allen" im Bestätigungsdialog funktioniert einwandfrei, aber wie von Mark Hosang kommentiert, funktioniert das nicht richtig, wenn Sie neue Dateien haben. Mladen Mihajlovic hat Recht, dass Sie sicherstellen können, dass Sie diese neuen Dateien nicht auswählen. Bei einer großen Code-Basis ist das Waten jedoch sehr mühsam.

Meine Methode: Bevor Sie zum Bestätigungsdialog gelangen, wird ein Fenster angezeigt, in dem Sie auswählen können, welche Dateien rückgängig gemacht werden sollen. Dieses Fenster hat sortierbare Spalten. Sie können nach der Spalte Change sortieren und nur die Dateien mit dem Status merge auswählen (dies sind die unveränderten Dateien; merge, edit sind bearbeitete Dateien und merge, branch sind neue Dateien). Klicken Sie einfach mit den ausgewählten Änderungen auf Änderungen rückgängig machen und genießen Sie die Schönheit eines übersichtlichen Zusammenführungs-Changesets.

Example

+1

Ich kann bestätigen, dass das funktioniert; sehr schnell und einfach zu tun, danke! – Novastorm

0

Aus meiner Erfahrung geschieht dies, wenn TFS keine Beziehung zwischen Datei A in Zweig A und Datei B in Zweig B hat

Wenn Zweige verschmelzenden TFS immer eine Beziehung zwischen den Dateien erstellt, wenn keine Beziehung ist schon da. Daher möchte es als "merge" einchecken, um sich an diese Beziehungen zu erinnern.

Ich neige dazu, diese "merge" Änderungen rückgängig zu machen, wenn ich die Beziehungen nicht brauche (z. B. für Reparenten).

Verwandte Themen