I've been using different VCS's since 2002 (CVS, Subversion, Plastic, GIT and a propietary one), and I'm always looking for a chance to improve productivity in our team. Now I'm convinced that we can take a significant step in improving our productivity when using GIT as a VCS, if we switch from a "Text Diff" tool to a "Semantic Diff" tool.
In an agile development team, refactors must be considered normal day-to-day operations, and a "Semantic Diff" tool can help us a lot to save time.
In the video below I would simply like to give you three examples about using
GMASTER and its semantic capabilites.
1) Semantic visual diff.
In the first one, a couple of methods called startServer and stopServer have been moved a little bit.
We can see that with a "Text diff" tool you perceive the change as a remove and add operation. On the other hand, its easy to track the change with GMASTER and its semantic capabilities.
2) Criss-cross diff.
In the second one, we're refactoring the code, so we move a method down and another one up. Additionally, we add a comment block to both methods.
We can see that with a "Text diff" tool you perceive the change as a succession of remove and add operations. But a different situation occurs with GMASTER and its semantic capabilities. With its "Semantic Diff" tool you can easily visualize the relationship between the blocks side by side.
3) Semantic merge.
In the last one, we compare a normal day-to-day operations, working onto two branches (a main branch and a child -task- branch), using two different tools:
a) And old version of Plastic SCM (3.0?), without semantic capabilities
b) Our brand-new tool GMASTER with semantic capabilites.
Three steps are taken:
- On the main branch, we move the run method up.
- On the child (task) branch we change the same method
- Finally, we switch to the main branch again, and try a merge from the child (task) branch to it. The merge ends with a conflict.
The difference is that while using Plastic SCM the conflict has to be resolved manually, using GMASTER (due to its semantic capabilities) the merge tool resolves the conflict automatically.
Please, ennjoy the video.