On 2014-03-22 17:32, Albert van der Horst wrote: > >I don't know if this is a hg-vs-git way of thinking, but I tend to > >frequently commit things on a private development branch regardless > >of brokenness, but once I get it working, I flatten & clean up > >those changes ("rebase" in git terms, which I believe has been > >adopted as a standardly-available-but-not-enabled-by-default > >module in hg) into logical units of change-sets that I then test > >individually before applying them to my more public-facing > >branch. This produces clean history that makes it easy for others > >to see what's going on. > > I see it this way that all code is broken to at least a small > extent, so it is stupid to not to save into source control because > code is not yet flawless.
I agree that skipping the commits just because it might be broken is a foolish idea. However, with most VCS tools, your commits can look something like Baseline -> A -> B -> C -> D -> E -> F -> G {head/tip} but A, C, & E all comprise one conceptual change, while B & G are another, and D & F cancel each other out. You can either cherry-pick those changes or rebase (with git or the hg plugin) so that the history looks like Baseline -> (ACE) -> (BG) {head/tip} With git, the history isn't actually discarded immediately, but rather just gets a parallel version (which may or may not have a reference to it; if it doesn't it will get cleaned up about a month later according to your garbage-collection settings) so your repo ends up looking something like Baseline -> A -> B -> C -> D -> E -> F -> G {orphaned or named} \---> (ACE) -> (BG) {head/tip} You can then publish that conceptually clean (and hopefully tested&working) branch while simultaneously having the full history in the event you need it. That said, I almost never want the intermediate work product once I have a final clean version, so I just let git GC that for me. -tkc -- https://mail.python.org/mailman/listinfo/python-list