Vorschläge für die Pflege vcproj Visual Studio Projekt-Dateien in der Versionskontrolle
Microsoft Visual Studio verwendet XML zum speichern Ihrer .vcproj
Projekt-Dateien. Also diff-XML-Projekt-Dateien sollte leicht.
Leider, wenn Sie ändern Sie die Projekt-Datei die Eigenschaften, Visual Studio besteht auf zufällig mischen der XML-Knoten, der die Projekt-Datei! Dies macht textliche diff und die Zusammenführung von Projekt-Datei ändert sich im Grunde unmöglich. Die Veränderung eines compiler-Einstellung machen mein visual diff-tool glaube ich geändert habe, 50% der Zeilen in der Datei! Ich habe sogar versucht, einige XML-diff-Tool, aber Sie zeigen nur einen mehr strukturierten Blick auf den gleichen Schlamassel.
Hat jemand irgendwelche Vorschläge für die Aufrechterhaltung .vcproj
- Dateien in der Quellcodeverwaltung? Oder eine Art davon zu überzeugen, dass Visual Studio nicht ändern Sie die Reihenfolge der XML-Knoten in der .vcproj
Datei?
(Ich habe auch untersucht, mit tools wie CMake zu generieren .vcproj
Dateien mehr aus einer diff-friendly text-Datei, aber CMake hat seine eigenen Probleme.)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Diese zu kommen scheint jedes jetzt und dann.
Vielleicht ist es ein problem reif für ein plug-in oder andere Normalisierung tool.
Wäre es eine tolle Seite-Geschäft, bis sich MS entscheidet, es zu beheben. Dann hast du Pech - es sei denn, Sie bieten kaufen Sie Ihre IP.
Jemand starten wollen, eine open-source-Projekt oder kommerzielles Produkt? Ich bin Spiel.
Könnte ich mal an einen stand-alone-Normalisierung-tool, dann sehen, wenn ich es in ein plugin.
Wir sehen dies hier bei der Arbeit jetzt, mit Projekt-Dateien, in denen die Konfigurationen werden neu geordnet auf mehrere Völker Computern, und es ist sehr frustrierend...
*Hinweis: Wir alle VS-2008 Pro, nicht Team
Zunächst sieht es aus wie Sie nach dem Zufallsprinzip neu angeordnet, aber es ist in der Tat ein Muster und es ist nicht zufällig überhaupt.
Für eine Gruppe der Konfigurationen angeordnet sind, die von Plattform, dann durch Config:
Für die andere Gruppe der Konfigurationen angeordnet sind, indem Config, dann von der Plattform ab:
Blick durch perforce Geschichte, dies steht im Einklang mit mehreren eingereichten Projekte durch die gleichen Gruppen von Menschen, und es ist ungefähr eine 50/50-split, so ist es nicht einfach so geschehen für eine person.
Ist das das gleiche Problem, das Sie alle sehen?
Wenn dem so ist, hoffe ich, dass dieses Muster hilft, eine Lösung zu finden, die nicht mit einem makro/extra diff-Schritt...
Es muss irgendwo eine Einstellung, oder eine Nebenwirkung auf etwas, da es zu 100% reproduzierbar pro jeder dieser Maschinen. Auch wenn es etwas albern, wie die option, die Sie wählen Sie für Ihre ersten Umwelt-layout (VC++, VB, Allgemeine Entwicklung, ect...)
Verwende ich WinMerge als mein diff-tool und ich konnte die bewegt-block-Erkennung. Es hat nicht ganz das Problem zu beheben, aber es macht die Visualisierung der Unterschiede ein wenig erträglicher.
Welche version von Visual Studio Sie sehen das in?
Ich tun eine Menge Arbeit mit .vcproj Dateien (wir pflegen Versionen der Projekt-Dateien für unsere Bibliotheken in mehreren Versionen von Visual Studio, und ich bin immer diffing und die Zusammenlegung der Dinge), aber ich habe nie gesehen, dieses Verhalten.
Mein team bei Adobe gesehen hat, die gleiche Sache in vs2008. Nur eine grundlegende Debug/Release, win32/win64-Projekt gibt Ihnen 4 Konfigurationen und zufälliger zu mischen. Mehrere Leute haben versucht, herauszufinden, Wann und warum devstudio verschiebt, aber Strom gedacht, ist der Sortierschlüssel ist ein Stichwort hash - daher semi-random. Wir haben aufgegeben und in code-reviews nur fasse die "Reale" Veränderungen.
Ich glaube ich habe den Grund gefunden für diese shuffle. Zumindest in VS2008.
Wenn Sie installieren Sie die x64-Compiler, VS, um Projekte wie:
Wenn Sie es nicht tun wird, um Ihnen wie:
So stellen Sie sicher, dass alle peers die gleichen compiler-set installiert, also wird es nicht mischen.
Getestet und dieses Verhalten scheint reproduzierbar zu sein.