kriegaex commented on PR #124:
URL: https://github.com/apache/xalan-java/pull/124#issuecomment-1817721917

   > I agree that my squash earlier in this branch was badly premature
   
   It was just a historical practice that you learned and a convention, albeit 
dated, which still is in effect in too many projects.
   
   > in past projects having atomic merges seemed to be a win
   
   In CVS and SVN, commits and branch switches were expensive and merges 
painful. That is where this practice might partially come from. Developers 
wanted to avoid that pain by avoiding feature branches, committing infrequently 
and merging even more infrequently. Combine that, and you get a preference for 
squashed merges.
   
   In Git, it is different: All operations except for fetch and push can be 
done offline without any network connection. I.e., commit, branch switch, merge 
are blazingly fast. In SVN, all of these require network connections and 
bandwidth. If SVN, a merge basically is rooted in a rather naive diff between 
two directory trees, while Git retains a DAG (directed acyclic graph) of the 
commit, branch, merge history, which is why several types of merge conflicts 
you would encounter in SVN simply do not occur, e.g. if you re-merge the same 
branch multiple times. Last but not least, even bisect is a local operation and 
thus also fast. In SVN you can bisect logically, if you want, but each checkout 
requires loading tons of data from a central server. I.e., using that error 
hunting strategy is way less enticing than with Git. Hence, nobody cared much 
about small commits in the old times. Been there, seen that.
   
   For me personally, back then, knowing SVN well and even administering it, 
for a few years I avoided using Git. Then one weekend, I got curious and 
started to read ["Pro Git" by Scott Chacon](https://git-scm.com/book/en/v2), 
which nowadays is available in many languages and open source. I could not put 
the book down, and at the end of the weekend I had read it back to back, 
because the technical concept behind Git was so intriguing. It was all so 
simple, one had to wonder why nobody had come up with something like it before 
and SCM had not been like that forever. I immediately switched to Git in all my 
personal projects and never looked back. I established a practice of 
consequently using feature branches and small commits, and my life as a 
developer became so much better over night. As an agile coach, since then I 
have introduced Git to dozens of teams in several organisations. Despite 
initial resistance against feature branches and frequent merges due to fear 
caused by lack of kn
 owledge, all developers embraced it, once they got the hang of it. For me, 
agile software development - or let me just call it clean and professional 
software development - is next to unthinkable without feature branches for 
reasons which to explain would make this post even more lengthy.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: dev-unsubscr...@xalan.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@xalan.apache.org
For additional commands, e-mail: dev-h...@xalan.apache.org

Reply via email to