Question about Source Control

Tim Chase python.list at
Sat Mar 22 19:49:17 CET 2014

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.


More information about the Python-list mailing list