2016-04-06 2 views
2

Ich habe dieses lästige Problem, seit ich auf Visual Studio bis 2015 aktualisiert habe.Wie man lokal modifizierte versionierte Dateien verwaltet, ohne sie an Git zu übergeben?

Es gibt ein Batch-Skript in meinem Repository, um alle Quellen zu kompilieren, basierend auf der Visual Studio-Version. Da ich es aktualisiert habe, aber andere Benutzer VS 2013 beibehalten haben, musste ich die Visual Studio-Version ändern, um Quellen zu kompilieren, und jetzt bin ich gezwungen, mit der modifizierten Skriptdatei zu leben, die jedes Mal erscheint, wenn ich etwas begehe.

Ich habe versucht, es zu verstauen, aber wenn ich git stash pop meine Änderungen (die täglich passieren können) erscheint das modifizierte Skript neben anderen Dateien.

Also frage ich mich, gibt es eine Möglichkeit, Git zu sagen, eine Datei zu behalten, wie es ist für gute?

+0

Commit es. Stash ist temporal. Gibt es einen Grund, dass Sie es nicht im Repository platzieren können? – Makoto

+0

Ich kann nicht begehen, weil ich vs2015 habe. Da es ein Kompilierskript ist, kann ich, wenn ich meine Version drücke, wer auch immer meine vs-Version nicht kompilieren kann Quellen – Phate01

+0

Weitere Fragen: Warum ist es in Ihrer Codebasis, wenn Sie es nicht begehen können? Warum arbeiten Sie mit verschiedenen Visual Studio-Versionen? – Makoto

Antwort

4

Was Sie tun, ist ein defekter Workflow, deshalb haben Sie Probleme.

Ich empfehle Ihnen, einen anderen Workflow zu verwenden, es ist tatsächlich das gleiche wie Visual Studio verwendet (siehe unten).

Grundsätzlich haben Sie einen Skript vom gesamten Team geteilt, aber Sie müssen auch einen benutzerspezifischen Skript haben. Ändern Sie das Team-Shared-Skript so, dass es ein benutzerspezifisches Skript enthält (nur wenn es vorhanden ist), und übergeben Sie das Team-Shared-Skript.

Erstellen Sie dann das benutzerspezifische Skript, das die Werte aus dem Team-Shared-Skript, das Sie ändern müssen, überschreibt oder neu definiert, und fügen Sie dieses benutzerspezifische Skript zu .gitignore hinzu (und verpflichten Sie es nicht!).

Auf diese Weise kann jedes Mitglied Ihres Teams seine eigene benutzerspezifische Konfiguration haben, ohne sich mit anderen Mitgliedern seines Teams zu messen. Das ist übrigens genau das, was Visual Studio macht - *.sln ist eine gemeinsame Lösungskonfiguration und *.suo ist eine Benutzerkonfiguration, die nicht festgeschrieben werden sollte.

Repository kann wie folgt aussehen:

repository 
    | 
    +-- configuration 
    +-- user-configuration 

Und Team-shared configuration wie folgt aus:

default_values_shared_by_team 

include_if_exists user-configuration 

some_code 
... 

In user-configuration Sie einfach default_values_shared_by_team auf Werte, die Sie auf Ihrem Setup haben müssen geändert werden. Wenn user-configuration Datei nicht existiert, passiert nichts, alles funktioniert wie zuvor, so dass andere Teammitglieder nicht betroffen sind.

+0

Das ist wirklich eine gute Idee, ich werde es dem Git-Manager erklären. Vielen Dank! – Phate01

+0

Nun, es ist nicht meine Idee. Es ist ein allgemein verwendetes Modell oder ein Workflow. Es ist schwer, sich etwas besseres auszudenken. Ich hoffe es hilft dir. –

Verwandte Themen