I'm working on a project where requirements are rapidly changing, therefore some functionality is built then rapidly replaced by other functionality. I'd like to remove some functionality from the project to keep it tidy, but also be able to find it reasonably fast at a later date.
My project folder structure is like this: (Symfony 3)
/ansible /projects <-- I'm already collecting client documents based on change projects here /trunk /app /bin /src /AppBundle /Command /Controller /Entity /Processor /Resources
For example, for one change I want to remove a class (=file) from /Command and /Processor each, but I want to be able to find them and also have some simple documentation what their purpose was.
I have considered the following options:
Simply search git history: I think this will be too tedious and impractical
Use branches before the change: My main concern is that this makes it harder to work with branches for features, as the archive branches will clutter the list
Use git tags: This seems the most sensible to me. Both branches and tags need some way to hold documentation, so I'm thinking of creating documentation at the time of removal either in a /projects folder or in some central file
Copy the removed source code to a folder: This seems impractical, because sometimes I may only remove some functions
Copy the whole source code before removal to a folder: It seems hard to find out afterwards what exactly changed
Are there any other solutions I'm not considering?