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.
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.
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.
--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.