|
Modifying files using "Find in Project" results in unloaded changes made by other team members to be silently overwritten
I found a scenario using "Find in Project" where changes made to a file by a team member (in a version control situation) get silently overwritten, leading to the possibility that the file will get committed to version control without the team member's changes in it.
Steps to reproduce:
1. Open File A in TextMate.
2. Open File B in TextMate (making it the current file shown, very important step to recreating this bug).
DO NOT MAKE File A THE CURRENT FILE FOR ANY OF THE REMAINING STEPS
3. Have another team member modify File A on their computer (for example, add a line of text to the bottom of it) and commit it to version control.
4. Using your version control client, bring down the modified File A to your computer.
5. Perform a "Find in Project", and perform a global replacement of text that is known to be in the original File A. Note that "Find in Project" notifies you that it modified File A.
6. Use "File | Save All" to save File A.
At this point, the changes made by the team member will no longer be in File A on disk. It appears that the "Find in Project" performs the replacements on the copy of File A (the original file) in memory, not the updated File A on disk. We actually got bit by this a couple of times before realizing what was happening.
|