Ok, I will bite. There is a technological aspect of this problem, which has already been addressed in other answers. But the real problem is the problem of the process . Where the real focus should be to ensure a meaningful software development life cycle (SDLC) —planning, development, verification, and deployment. I will cover each one in turn. What you want is repeatability at every step.
Planning
Compilation and recording of what needs to be delivered. Often enough tickets or user stories are enough. Sometimes you do more, like a written written document that a client signs, which translates into various artifacts, such as written use cases - in the end, what you want, recorded in an electronic system where you can link changes to the code with it. What makes me ...
Development
Remember that electronic system? Good. Now that you make changes to the code (do you directly control the source code?), You associate these changes with something in this electronic system - usually tickets. I like Trac , but also heard well about the Atlassian suite . It gives you tracking . Therefore, you can say what was done and how. Then you can use this system and the original control to create the assembly - all the bits needed for any changed - and the tag that build in the original control - that’s your list of changes, Even better if the assembly contains everything , so this standalone object that can be easily deployed on it. Then the assembly is done to ...
Check
Perhaps the most important step that many stores ignore is at your own risk. Defects discovered in production are exponentially more expensive to repair when they are discovered earlier in the process. And validation is often the only step when this happens in many stores - so make sure yours does it .
This should not be done by the programmer. ! It's like a fox watching a chicken coop. And whoever does, must follow some kind of plan. We use a test link . This means that every assembly is checked in the same way, so you can detect regression errors. And this assembly should be deployed in the same way as in production .
If everything goes well (we usually need at least 3 builds), the build is verified . And this is happening ...
Deployment
This should be a non-event, because you take the tested assembly, following the same steps as in testing. Maybe at first it gets to an intermediate server where there is an automated copying process, but the bottom line is that this should not be a problem at the moment, because you confirmed using the same process.
Conclusion
In terms of knowing what, where, what you really want, is the logical way to group changes together. This is where the idea of creating an assembly comes. This is truly a unit that must go between steps in the SDLC. If you already have this, then the ability to understand the state of a given system becomes trivial.