## 5. Note on dirty files

## 5.1 A little bit of history first

We started using cvs in our company when we turned to Code Warrior Pro 2. We realized Code Warrior had a very annoying bug and we were unable to find a work around with Source Safe. When you lock the projects, and if you have a very deep and complex set of projects, the projects behave badly and recompile each time, plus, they take a long-long time to open...

So we thought : "OK, let's unlock them". Then the horror : the project were auto-modifying themselves when unlocked. The problem appeared when everybody tried to check-in the first time : all the projects were modified each time, resulting in corrupting and increasing fastly the size of the repository.

## 5.2 Advantage of "Open Code Software"

Then I suggested we tried cvs so we could hack cvs by making it behave the way we expect.

We came up with this solution :

- 1. The file with the extension .mcp will be a dirty file.
- 2. The file will be ignored by cvs, like .cvsignore does, unless the user asks to explicitely to something with this file : the method to tell cvs to commit a dirty file is to ask to commit this files and only this file (a recursive commit will ignore the dirty file).
- 3. The only way to add, remove, commit, merge a dirty file is to explicitly invoke cvs with this operation and with only this file.

No need to tell you we'll be happy when finally Metrowerks will have fixed this bug :<...