Path: csiph.com!v102.xanadu-bbs.net!xanadu-bbs.net!feeder.erje.net!eu.feeder.erje.net!ecngs!feeder2.ecngs.de!feeds.phibee-telecom.net!newsfeed.xs4all.nl!newsfeed4.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.010 X-Spam-Evidence: '*H*': 0.98; '*S*': 0.00; 'broken': 0.04; 'subject:Question': 0.07; '22,': 0.09; 'git': 0.09; 'latter': 0.09; 'subject:Source': 0.09; 'terms,': 0.09; 'cc:addr:python- list': 0.11; 'changes': 0.15; 'books': 0.15; '(there': 0.16; '->': 0.16; '>in': 0.16; '>to': 0.16; 'cleaned': 0.16; 'discarded': 0.16; 'it;': 0.16; 'settings)': 0.16; 'skipping': 0.16; 'thinking,': 0.16; 'to:addr:python.list': 0.16; 'to:addr:tim.thechases.com': 0.16; 'to:name:tim chase': 0.16; 'url:guide': 0.16; 'url:keywords': 0.16; 'url:sr': 0.16; 'all.': 0.16; 'wrote:': 0.18; 'commit': 0.19; 'addition,': 0.20; 'cc:addr:python.org': 0.22; 'logical': 0.24; 'tend': 0.24; 'url:utf8': 0.24; 'regardless': 0.24; 'looks': 0.24; 'cc:2**0': 0.24; 'source': 0.25; '>': 0.26; 'least': 0.26; 'gets': 0.27; 'van': 0.27; 'header:In-Reply-To:1': 0.27; 'to:2**1': 0.27; 'tim': 0.29; "doesn't": 0.30; 'change,': 0.30; 'said,': 0.30; 'url:mailman': 0.30; '(which': 0.31; 'code': 0.31; 'away.': 0.31; 'chase': 0.31; 'produces': 0.31; 'url:python': 0.33; 'header:Received:9': 0.33; 'agree': 0.35; 'common': 0.35; 'something': 0.35; 'test': 0.35; 'but': 0.35; 'version': 0.36; 'cancel': 0.36; 'skip:> 10': 0.36; 'url:ie': 0.36; 'url:ref': 0.36; 'done': 0.36; 'url:listinfo': 0.36; 'hi,': 0.36; 'url:org': 0.36; 'two': 0.37; 'system,': 0.38; 'skip:& 10': 0.38; 'branch': 0.38; 'tasks': 0.38; 'tools,': 0.38; 'url:amazon': 0.38; 'version,': 0.38; 'pm,': 0.38; 'enough': 0.39; 'either': 0.39; 'according': 0.40; 'url:mail': 0.40; 'read': 0.60; 'easy': 0.60; 'received:98.137': 0.60; 'units': 0.60; 'most': 0.60; 'full': 0.61; 'march': 0.61; 'save': 0.62; 'more': 0.64; 'header:Reply- To:1': 0.67; 'believe': 0.68; 'book,': 0.68; 'apart': 0.72; 'applying': 0.72; 'fat': 0.84; 'received:98.138.229': 0.84; 'subject:Control': 0.84; 'us?': 0.84; 'working,': 0.84; 'albert': 0.91; 'comprise': 0.91; 'medicine,': 0.91; 'education,': 0.96 X-Yahoo-Newman-Property: ymail-4 X-Yahoo-Newman-Id: 375314.41166.bm@omp1050.mail.gq1.yahoo.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s1024; t=1395518482; bh=xXkBQiR+Qa0eyIDgynDFxOnoWk4TIJiU3R4Re1sITho=; h=X-YMail-OSG:Received:X-Rocket-MIMEInfo:X-Mailer:References:Message-ID:Date:From:Reply-To:Subject:To:Cc:In-Reply-To:MIME-Version:Content-Type; b=rU/jUDJpyllFIVNMB9fIDYC1+UWvpalKcbU0SSjUlTibm5Uit1hGgpwKKyMFGxR5vuArvH2x0FkVHuWmBxhvIxmfLT2QRBE4jHMp8h3dx7bH0EfbXPxcWpHZDoTmcvoK6slGB5Y2LO+fBM4XaaYWCvHV/L0GTVwBi/Rlf9QopwU= DomainKey-Signature: a=rsa-sha1; q=dns; c=nofws; s=s1024; d=yahoo.com; h=X-YMail-OSG:Received:X-Rocket-MIMEInfo:X-Mailer:References:Message-ID:Date:From:Reply-To:Subject:To:Cc:In-Reply-To:MIME-Version:Content-Type; b=5wza97gmrHpC7CEPtBv2ztt0Rg9ifpYuQJoL8+ZwKU/OgHzs8BeoMiBLbKuVVT23T8gtXhhIoHiv4naqdJYkvirBv9vNtFnjn3IuXqgRprno1BdB+3DqPnzSH1+27qAILmBnjwNyNt9T1fT5/UIsg+kY4yqK8aq4iSMaRiINof0=; X-YMail-OSG: Q4zmqDoVM1k5duqfhWucmauBZOvKcI.k8qmGCX2ZSKnsW1w kvstu1U.xxX_UHxsLKpM7JlYLeTbXrgNfgO4Qs504DOtR7Lt62kp9XK6FQqi OpWPHO.XwvLQo2hYyKCVLJwbSsm6CqUndyOqa960QPFPeGx1p8AVYtD1GcGd mEvzvYYyJVKkvTjKfDvanOkQiTb8hB6cZW_q2rXQd5y2OgqTP050_sNJFjiQ YFn9Rv_mbvpL.JtWUa.sv4R06T00DdTEuSr6nryJXNwarlvdTe7E3.8kTBaa PNftdN4avmDP58stXKzX0gG37ujSdSF2tSYIDqtjEuhQq4nyna3iny2UhNHF kY2BGjjYKazziY_XOLrvKcK2Gm4o01XBgYC.jAGY3O8Xb1e34JW8X__9MhoK zbrUzkUw2huuPnkvdiX2VUGDXi9Dd3GJ7_6UmggvwEHSGvSGA977tPVPAMOi p86Ygom3wFyWccNPW3s6aWCV8yL3e1k8yLDfbnt1C2M3jHhvZT2_WSXmHmd. zJ0xAPNG9nJge6.WIFZuVgg3fe.Pqvj3bLnhu5hTJ7XevOcTkqmGil_Jp19v .bYuWrfkOVfrRdBw5cfWdyLLpLvuHi8YXPDNYN1RimHISVW_NFDIzah.hz6Z nSV1xAo3DCmJ7CtAmU94s4U_Wrowt9Ws9bwLxctXVgBtNRDri73.wLG0NaiE EAH.fEYwJJ1HhwHAQ_Hig5vbKoOUd7.TRlqylFjddPzANPyC1A7HeUnkHZrB gqm6sMcTsryyDo40rxJ0TLxm5pI6AEjr3aD2oJ8LG4qd7cwGy7lOBsD4Ldpv ebulutiI3vI28XEcK.XKQXyaEFzwL803PdqHFcDWQj7tCfyvklkfGyW.Wcg2 fDVWunmXtY4ORxOVhLkW9Ct0Okg-- X-Rocket-MIMEInfo: 002.001, SGksCgpJIGNhbiByZWNvbW1lbmQgdGhlIGJvb2sgIlByYWdtYXRpYyBHdWlkZSB0byBHaXQiLiBWZXJ5IHByYWN0aWNhbCBhbmQgdG8gdGhlIHBvaW50OgoKaHR0cDovL3d3dy5hbWF6b24uY29tL1ByYWdtYXRpYy1HdWlkZS1HaXQtUHJvZ3JhbW1lcnMvZHAvMTkzNDM1NjcyNy9yZWY9c3JfMV8xLzE4NC0wMTQyNDgxLTA0ODQwNjI_aWU9VVRGOCZxaWQ9MTM5NTUxODE1OSZzcj04LTEma2V5d29yZHM9cHJhZ21hdGljK2d1aWRlK3RvK2dpdAoKCkkgYWRkaXRpb24sIEkgcmVhZCBhIGJpZyBmYXQgc3VwZXItZXgBMAEBAQE- X-Mailer: YahooMailWebService/0.8.181.645 References: <532dc915$0$24914$e4fe514c@dreader36.news.xs4all.nl> <20140322134917.080bada6@bigbox.christie.dr> Date: Sat, 22 Mar 2014 13:01:22 -0700 (PDT) From: Albert-Jan Roskam Subject: Re: Question about Source Control To: Tim Chase , Albert van der Horst In-Reply-To: <20140322134917.080bada6@bigbox.christie.dr> MIME-Version: 1.0 Content-Type: multipart/alternative; boundary="1691886257-1200879178-1395518482=:78665" Cc: "python-list@python.org" X-BeenThere: python-list@python.org X-Mailman-Version: 2.1.15 Precedence: list Reply-To: Albert-Jan Roskam 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: 165 NNTP-Posting-Host: 2001:888:2000:d::a6 X-Trace: 1395518658 news.xs4all.nl 2924 [2001:888:2000:d::a6]:46528 X-Complaints-To: abuse@xs4all.nl Xref: csiph.com comp.lang.python:68791 --1691886257-1200879178-1395518482=:78665 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable Hi,=0A=0AI can recommend the book "Pragmatic Guide to Git". Very practical = and to the point:=0A=0Ahttp://www.amazon.com/Pragmatic-Guide-Git-Programmer= s/dp/1934356727/ref=3Dsr_1_1/184-0142481-0484062?ie=3DUTF8&qid=3D1395518159= &sr=3D8-1&keywords=3Dpragmatic+guide+to+git=0A=0A=0AI addition, I read a bi= g fat super-exhaustive book, I believe it' s this one (there are two Git bo= oks with a bat!):=0A=0Ahttp://www.amazon.com/Version-Control-Git-collaborat= ive-development/dp/1449316387/ref=3Dsr_1_2/184-0142481-0484062?ie=3DUTF8&qi= d=3D1395518159&sr=3D8-2&keywords=3Dpragmatic+guide+to+git=0A=0A=0AThe forme= r is for common tasks that are not common enough to remember right away. Th= e latter is for reference.=0A=0AI only have experience with git and subvers= ion. I like git much better. But any SCM is better than none at all.=0A=0A= =A0=0ARegards,=0A=0AAlbert-Jan=0A=0A=0A=0A=0A~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~= ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~=0A=0AAll right, but apart from the= sanitation, the medicine, education, wine, public order, irrigation, roads= , a =0A=0Afresh water system, and public health, what have the Romans ever = done for us?=0A=0A~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~= ~~~~~~~~~~~~~ =0A=0A=0A=0A=0A=0AOn Saturday, March 22, 2014 7:49 PM, Tim Ch= ase wrote:=0A =0AOn 2014-03-22 17:32, Alber= t van der Horst wrote:=0A>> >I don't know if this is a hg-vs-git way of thi= nking, but I tend to=0A>> >frequently commit things on a private developmen= t branch regardless=0A>> >of brokenness, but once I get it working, I flatt= en & clean up=0A>> >those changes ("rebase" in git terms, which I believe h= as been=0A>> >adopted as a standardly-available-but-not-enabled-by-default= =0A>> >module in hg) into logical units of change-sets that I then test=0A>= > >individually before applying them to my more public-facing=0A>> >branch.= =A0 This produces clean history that makes it easy for others=0A>> >to see = what's going on.=A0 =0A>> =0A>> I see it this way that all code is broken t= o at least a small=0A>> extent, so it is stupid to not to save into source = control because=0A>> code is not yet flawless.=0A>=0A>I agree that skipping= the commits just because it might be broken is=0A>a foolish idea.=A0 Howev= er, with most VCS tools, your commits can look=0A>something like=0A>=0A>=A0= Baseline -> A -> B -> C -> D -> E -> F -> G {head/tip}=0A>=0A>but A, C, & = E all comprise one conceptual change, while B & G are=0A>another, and D & F= cancel each other out.=A0 You can either cherry-pick=0A>those changes or r= ebase (with git or the hg plugin) so that the=0A>history looks like=0A>=0A>= =A0 Baseline -> (ACE) -> (BG) {head/tip}=0A>=0A>With git, the history isn't= actually discarded immediately, but=0A>rather just gets a parallel version= (which may or may not have a=0A>reference to it; if it doesn't it will get= cleaned up about a month=0A>later according to your garbage-collection set= tings) so your repo=0A>ends up looking something like=0A>=0A>=A0 Baseline -= > A -> B -> C -> D -> E -> F -> G {orphaned or named}=0A>=A0 =A0 =A0 =A0 \-= --> (ACE) -> (BG) {head/tip}=0A>=0A>You can then publish that conceptually = clean (and hopefully=0A>tested&working) branch while simultaneously having = the full history=0A>in the event you need it.=A0 That said, I almost never = want the=0A>intermediate work product once I have a final clean version, so= I=0A>just let git GC that for me.=0A>=0A>=0A>-tkc=0A>=0A>=0A>=0A>=0A>=0A>= =0A>=0A>=0A>=0A>=0A>=0A>=0A>=0A>-- =0A>https://mail.python.org/mailman/list= info/python-list=0A>=0A>=0A> --1691886257-1200879178-1395518482=:78665 Content-Type: text/html; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable
Hi,

I= can recommend the book "Pragmatic Guide to Git". Very practical and to the= point:
http://www.amazon.com/Pragmatic-Guide-Git-Programmers/dp/19343567= 27/ref=3Dsr_1_1/184-0142481-0484062?ie=3DUTF8&qid=3D1395518159&sr= =3D8-1&keywords=3Dpragmatic+guide+to+git

I addition, I read a big fat super-exhausti= ve book, I believe it' s this one (there are two Git books with a bat!):
http://www.amazon.com/Version-Control-Git-collaborative-dev= elopment/dp/1449316387/ref=3Dsr_1_2/184-0142481-0484062?ie=3DUTF8&qid= =3D1395518159&sr=3D8-2&keywords=3Dpragmatic+guide+to+git
=

The former is for common task= s that are not common enough to remember right away. The latter is for refe= rence.

I only have experience with git and subversion. I like git much bett= er. But any SCM is better than none at all.
 
Regards,
=0A
Albert-Jan
=0A


= =0A
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~= ~~
=0A
All right, but apart from the sanitation, the medicine, educat= ion, wine, public order, irrigation, roads, a
=0A
fresh water system= , and public health, what have the Romans ever done for us?
=0A
~~~~~= ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
=0A


On Satur= day, March 22, 2014 7:49 PM, Tim Chase <python.list@tim.thechases.com>= ; wrote:
On 2014-03-22 17:32, Albert van der Horst wrote= :
> >I don't know if this is a hg-vs-git way of thi= nking, but I tend to
> >frequently commit things on= a private development branch regardless
> >of brok= enness, 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 t= o my more public-facing
> >branch.  This produ= ces clean history that makes it easy for others
> >= to see what's going on. 
>
&g= t; 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 b= ecause
> code is not yet flawless.
<= br clear=3D"none">I agree that skipping the commits just because it might b= e broken is
a foolish idea.  However, with most VCS = tools, your commits can look
something like

  Baseline -> A -> B -> C -> D -> E -&g= t; 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 cherr= y-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 imm= ediately, but
rather just gets a parallel version (which = may or may not have a
reference to it; if it doesn't it w= ill 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<= br clear=3D"none">tested&working) branch while simultaneously having th= e 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 fo= r me.

--1691886257-1200879178-1395518482=:78665--