2010-02-24 13 views
21

Ich habe ein großes Projekt in Delphi geschrieben und ich möchte seine Quellen verwalten Git verwenden. Ich habe das Git-Repository erstellt, das die Quellen meiner Anwendung und Komponenten von Drittanbietern enthält. All das Zeug baut automatisch mit msbuild.Delphi RES-Dateien und Git

Das größte Problem ist RES-Dateien. Einige von ihnen werden jedes Mal aktualisiert, wenn ich meine Anwendung neu anlege, andere nicht. Einige haben * .rc-Quellen, andere nicht. Ich kann nicht alle Res-Dateien (.gitignore) ignorieren, weil ohne Ressourcen mein Projekt nicht bauen kann. Außerdem kann ich res-Dateien nicht einschließen - sie ändern sich von Build zu Build, ich will sie nicht in Diffs sehen.

Was tun Sie mit Ihrem * .res Dateien unter Git? Irgendwelche Ratschläge?

Antwort

8

Ich behalten meine Projekt-RES-Dateien in git (diejenigen, die den Namen der dpr entsprechen).

Ich glaube der einzige Grund, dass die RES-Datei Projekt jedes Mal ändern würde, wenn Sie bauen, ist, wenn Sie inkrement Build-Nummer gesetzt haben, was bedeutet entweder Sie müssen die Res in der Quellcodeverwaltung oder Sie kümmern sich nicht um die Build-Nummer, so sollten Sie diese Option deaktivieren.

ich habe auch RES-Dateien, die ich von RC bauen, die jedes kompilieren zu ändern, so habe ich eine gitignore für * .res und ich dann git add -f project.res Dateien für das Projekt RES hinzufügen

+0

Danke für den Tipp, aber ich habe 25+ Komponenten mit Quellen (und mit verdammt res Dateien). Es wird viel Zeit brauchen, um herauszufinden, welche res-Dateien geändert werden und welche nicht. Aber das größte Problem ist, dass einige res enthalten sein müssen (also ich git add-f) und werden jedes Mal geändert, wenn ich Komponenten neu aufbaue. – Frantic

+0

Schließlich tat dies. Es hat eine Menge Zeit gekostet, aber ich bin glücklich mit den Ergebnissen. – Frantic

0

Ich weiß GIT nicht, aber unter SVN ich einfach nur „SVN ADD“ die wenigen, die Materie und nicht die automatisch generierten diejenigen. Da nicht versionierte Dateien von Diffs ausgeschlossen sind, ist das auch schon erledigt.

1

Per Definition RES-Dateien werden RC-Dateien kompiliert. Im Idealfall sollten Sie alle RES-Dateien ignorieren und nur RC-Änderungen vornehmen. Wenn es irgendwie passiert, dass Sie keine RC-Quelle für eine bestimmte RES-Datei haben, fügen Sie nur diese "verwaiste" RES-Datei zu git hinzu - solche Dateien sollten sich nicht von Build zu Build ändern (da keine RC-Datei generiert wird) sie von). Wenn aus irgendwelchen seltsamen Gründen (Delphi, huh) solche RES-Dateien ändern, dann bist du verloren.

Fazit: RES-Dateien sind Kompilation Ziele - nicht von anderen Binärdateien (obj, exe, etc.)

+8

In Delphi ist die RES-Datei des Projekts anders als andere Binärdateien, es hat keine entsprechende RC und es enthält Informationen gefunden an keinem anderen Ort, wie das Icon und die Versionsnummern – jasonpenny

+0

sehe ich. Du bist also verdammt (Delphi ftw!), Durch die Reifen zu springen, andere Antworten liefern detaillierte Anweisungen :) – ygrek

0

Könnten Sie:

  • ignorieren alle .res Dateien
  • erzeugen die .res Dateien, die kann generiert werden (kompilieren der Ressourcen Skript .rc Dateien)
  • fügen Sie nur die .res Dateien ohne .rc Dateien, um sie zu generieren: wenn Sie hatte in .gitignore angegeben, dass sie ignoriert werden sollen, dann ist das Hinzufügen von ihnen ok: sie werden nicht im diff angezeigt.
2

Es wird dringend die deaktivieren empfohlen In den Projekteinstellungen "Auto Increment Build Number", mit jeder Art von Versionskontrollsystem. Auf diese Weise ist es 'sicher', die .res-Dateien dem Repository hinzuzufügen.

Ich habe lange nach einer Möglichkeit gesucht, die Build-Nummer in der Versionsinfo in der RES-Datei des Projekts automatisch zu aktualisieren, aber das Beste ist, ein zusätzliches RC mit den Versionsinformationen zu aktualisieren. In der Praxis aktualisiere ich die Build-Nummer jedoch im Allgemeinen auf die aktuelle Subversion-Revisionsnummer nur direkt vor dem endgültigen Build für eine Veröffentlichung der Binärdateien.

15

Willkommen im Club. Die Anwendung .res-Datei in Delphi ist ein Schmerz im unteren Rückenbereich für jeden, der Quellcodeverwaltung verwendet. Sie möchten auto-inc-buildnumber verwenden, aber es versaut Ihre Quellcodeverwaltung. Was ich getan habe ist

  • das Symbol und die Versions Ressourcen wie folgt aufgeteilt:

    {$ R * _icon.res}

    {$ R * ._ version.res}

  • disable auto inc des Buildnumber

  • ein Pre-Build-Ereignis in das Projekt ein, das
    • erhöht die Build-Nummer in einer INI-Datei das Projekt
    • erzeugt eine RC-Datei mit den Versionsinformationen aus der INI-Datei entspricht
    • kompiliert eine Re-Datei aus der RC-Datei
  • die * _icon.res Datei zur Quellcodeverwaltung hinzufügen, es ändert sich nie so diese
  • fügen sie die INI-Datei mit der Version Info zur Quellcodeverwaltung sicher ist, ist es eine Textdatei, so dass es einfach ist,
diff

Das Tool, das ich für das Generieren der Version .res-Datei geschrieben habe, ist freie Software,