How to deal with files that are relevant to version control, but that frequently change in irrelevant ways?

.dproj files are essential for Delphi projects, so they have to be under version control.

These files are controlled by the IDE and also contain some information that is frequently changed, but totally irrelevant for version control.

  • Delphi RES files and Git
  • Linking TFS source control folder from another TFS project
  • Delphi TImageList Bitmap Changes
  • How do you manage your Delphi Projects with third-party components in Version Control?
  • How to maintain “Ignore/handle subsequent exceptions” breakpoints between developers?
  • Delphi: Moving away from VSS
  • For example: I change the start parameters of the application frequently (several times a day), but don’t want to accidently commit the project file if only the part dealing with the start parameters has changed.

    So how to deal with this situation?

    A clean solution would be to take the file apart, but that isn’t possible with the Delphi IDE AFAIK.

    Can you ignore a specific part of a file?

    We’re using Subversion at the moment, but may migrate to Git soon.

  • Why does `git pull` output information besides “Already up-to-date”?
  • how to compare github pull request history using winmerge or other external toola?
  • Action hook for OpenShift Node.js app does not execute, despite setting execute permission
  • Setting a Git alias which uses TR to translate backslash into forward slash
  • How to configure kdiff3 in Visual Studio 2012
  • Escaping space in directory name while doing git sparse checkout
  • 5 Solutions collect form web for “How to deal with files that are relevant to version control, but that frequently change in irrelevant ways?”

    SVN/git cannot “know” which bits of the file are important, and translating what is important for you to commit or not into file “bits” would be difficult (especially when you don’t know exactly how the information is structured within it). The most practical solution is to check the changes that have been made to the file and decide whether to commit them or not to the repository.

    You can decide which bits of the file you want to commit with git. This is not, however, the automated process you seem to be looking for.

    In our case, it’s rare for a developer to make a meaningful change to the .bdsproj, .dpr, .res files. So we reject the commit (pre-commit hook in subversion) unless special tags: [add project file] or [add res file] are present in the commit comment. This prevents “frivilous” changes to those files.

    For the specific case of startparameters: the DDevExtentions plugin of the well known Andreas Hausladen allow for the start parameters be stored separetely of dproj file. See more details about DDevExtensions on his site.

    EDIT: If I remember correctly, this feature was created just because he had that exact problem with start parameters and version control.

    I would not save the .dproj files directly in version control, but rather provide a default file which should be renamed by the user to get the flawed Delphi working.

    Use the --assume-unchanged option on git update-index <file> as described here and stackoverflow/what-is-assume-unchanged.

    You could make simple aliases for the those who need it made simple.

    Git Baby is a git and github fan, let's start git clone.