Path: csiph.com!v102.xanadu-bbs.net!xanadu-bbs.net!goblin3!goblin2!goblin.stu.neva.ru!newsfeed.xs4all.nl!newsfeed1a.news.xs4all.nl!xs4all!newsgate.cistron.nl!newsgate.news.xs4all.nl!post.news.xs4all.nl!not-for-mail Return-Path: X-Original-To: python-list@python.org Delivered-To: python-list@mail.python.org X-Spam-Status: OK 0.005 X-Spam-Evidence: '*H*': 0.99; '*S*': 0.00; 'broken': 0.04; 'intermediate': 0.07; 'subject:Question': 0.07; 'git': 0.09; 'subject:Source': 0.09; 'terms,': 0.09; 'cc:addr:python-list': 0.11; 'changes': 0.15; '-tkc': 0.16; '>to': 0.16; 'cleaned': 0.16; 'discarded': 0.16; 'from:addr:python.list': 0.16; 'from:addr:tim.thechases.com': 0.16; 'from:name:tim chase': 0.16; 'it;': 0.16; 'settings)': 0.16; 'skipping': 0.16; 'thinking,': 0.16; 'wrote:': 0.18; 'commit': 0.19; 'later': 0.20; 'cc:addr:python.org': 0.22; 'logical': 0.24; 'tend': 0.24; 'regardless': 0.24; 'looks': 0.24; 'cc:2**0': 0.24; 'cc:no real name:2**0': 0.24; 'source': 0.25; 'least': 0.26; 'gets': 0.27; 'van': 0.27; 'header:In-Reply-To:1': 0.27; "doesn't": 0.30; 'change,': 0.30; 'said,': 0.30; '(which': 0.31; 'code': 0.31; 'produces': 0.31; 'agree': 0.35; 'something': 0.35; 'test': 0.35; 'but': 0.35; 'version': 0.36; 'cancel': 0.36; 'skip:> 10': 0.36; 'charset:us-ascii': 0.36; 'branch': 0.38; 'ends': 0.38; 'tools,': 0.38; 'version,': 0.38; 'rather': 0.38; 'either': 0.39; 'according': 0.40; 'easy': 0.60; 'units': 0.60; 'most': 0.60; 'full': 0.61; 'save': 0.62; 'more': 0.64; 'believe': 0.68; 'applying': 0.72; 'received:50.22': 0.84; 'subject:Control': 0.84; 'working,': 0.84; 'albert': 0.91; 'comprise': 0.91 Date: Sat, 22 Mar 2014 13:49:17 -0500 From: Tim Chase To: albert@spenarnc.xs4all.nl (Albert van der Horst) Subject: Re: Question about Source Control In-Reply-To: <532dc915$0$24914$e4fe514c@dreader36.news.xs4all.nl> References: <532dc915$0$24914$e4fe514c@dreader36.news.xs4all.nl> X-Mailer: Claws Mail 3.8.1 (GTK+ 2.24.10; x86_64-pc-linux-gnu) Importance: low X-Priority: 4 (Low) Mime-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - boston.accountservergroup.com X-AntiAbuse: Original Domain - python.org X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12] X-AntiAbuse: Sender Address Domain - tim.thechases.com X-Get-Message-Sender-Via: boston.accountservergroup.com: authenticated_id: tim@thechases.com Cc: python-list@python.org X-BeenThere: python-list@python.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: General discussion list for the Python programming language List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Newsgroups: comp.lang.python Message-ID: Lines: 57 NNTP-Posting-Host: 2001:888:2000:d::a6 X-Trace: 1395514152 news.xs4all.nl 2924 [2001:888:2000:d::a6]:39581 X-Complaints-To: abuse@xs4all.nl Xref: csiph.com comp.lang.python:68790 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