Delphi res fichiers et Git
J'ai un gros projet écrit en Delphi et je veux gérer ses sources en utilisant Git. J'ai créé Git repository, qui inclut les sources de mon application et les composants tiers. Tout ce genre de choses est automatiquement construit en utilisant msbuild
.
Le plus gros problème est les fichiers RES. Certains d'entre eux sont mis à jour chaque fois que je reconstruis mon application, d'autres ne le sont pas. Certains ont *.sources rc, certains ne le font pas. Je ne peux pas ignorer tous les fichiers res (.gitignore) parce que sans ressources mon projet échouera à construire. En outre, Je ne peux pas inclure les fichiers res - ils changent de build en build, Je ne veux pas les voir dans les diffs.
Que faites-vous de votre *.fichiers res sous Git? Des conseils?
6 réponses
Je garde mes fichiers res de projet dans git (ceux qui correspondent au nom du dpr).
Je crois que la seule raison pour laquelle le fichier RES du projet changerait chaque fois que vous construisez est si vous avez un numéro de build incrémenté, ce qui signifie pour moi que vous devez garder le res dans le contrôle de source ou que vous ne vous souciez pas du numéro de build.
J'ai aussi des fichiers RES que je construis à partir de RC, qui changent chaque Compilation, donc j'ai un gitignore pour *.res et j'ajoute ensuite git add -f project.res
pour les fichiers res du projet
Bienvenue au club. Application .fichier res dans Delphi est une douleur dans le bas du dos pour tout le monde en utilisant le contrôle de source. Vous voulez utiliser auto-inc-buildnumber mais cela gâche votre contrôle scource. Ce que j'ai fait est
-
Divisez l'icône et les ressources de version comme ceci:
{$R * _icon.res}
{$R *._version.res}
-
Désactiver Auto inc du buildnumber
- ajoute un événement de pré-construction au projet qui
- incréments le numéro de build dans un .fichier ini correspondant au projet
- génère un .fichier rc avec les informations de version de la .fichier ini
- compile A.fichier res de la .fichier rc
- ajouter le * _icon.fichier res au contrôle de source, il ne change jamais, donc c'est sûr
- ajouter le .fichier ini avec les informations de version au contrôle de la source, c'est un fichier texte, il est donc facile de diff
L'outil que j'ai écrit pour générer la version .fichier res est un logiciel libre, disponible ici et également à partir de SourceForge
Il est fortement conseillé de désactiver le "auto increment build number" dans les paramètres du projet, avec tout type de système de contrôle de version. De cette façon, il est " sûr " d'ajouter le .fichiers res dans le référentiel.
Je cherche depuis longtemps un moyen de mettre à jour automatiquement le numéro de build dans les informations de version du projet .fichier res, mais la meilleure chose est de mettre à jour un supplément .rc avec les informations de version. En pratique Cependant, je mets généralement à jour le numéro de build vers la subversion actuelle numéro de Révision seulement juste avant la version finale pour une version des binaires.
Par définition, les fichiers RES sont des fichiers rc compilés. Donc, idéalement, vous devriez ignorer tous les fichiers RES et ne valider que les modifications RC. S'il est arrivé que vous n'ayez pas de Source RC pour un fichier RES particulier, ajoutez seulement ce fichier RES "orphelin" à git - de tels fichiers ne devraient pas changer de build à build (car il n'y a pas de fichier RC pour les générer). Si pour des raisons étranges (Delphi, Hein) de tels fichiers RES Font Changer, alors vous êtes condamné.
Bottom line: les fichiers RES sont cibles de compilation-pas différent des autres binaires (obj, exe, etc)
Je ne connais pas GIT, mais sous SVN Je ne fais que "SVN ajouter" les quelques-uns qui comptent, et non les générés automatiquement. Puisque les fichiers non versionnés sont exclus des diffs, cela est également pris en charge.
Pourriez-vous:
- ignorer tous les
.res
fichiers - générer les fichiers
.res
qui peuvent être générés (compiler le script de ressources.rc
fichiers) - ajoutez uniquement les fichiers
.res
sans les fichiers.rc
pour les générer: si vous avez spécifié dans un.gitignore
qu'ils doivent être ignorés, alors les ajouter est correct: ils n'apparaîtront pas dans le diff.