While reviewing the IRC discussion, I came across something that
seemed to want comment.

There's some talk about how, when using a single central VCS (like
Subversion) one tends to let developing code sit around unprotected
until it's perfect and then commit a big bag of changes, while Git
lets you commit frequently to your own repo. and then push or send a
pull request when everything is tidy.  On the surface this is a clear
advantage for Git, but let me ramble on a bit.

Something I learned from lurking on LKML for several years is the
value of stepping back and organizing a big change into small units
that make sense individually.  (If you don't do this on LKML, the
affected maintainer will very likely hand your ginormous patch back
and ask you to do it over, piecewise.)  This has some advantages:

o  Maintainers can cherry-pick your work, adopting the stuff that is
   acceptable early while working with you to improve the rest.

o  Big changes are easier to understand when they are structured and
   sequenced.

o  Makes a central VCS work more like a DVCS:  you can commit the good
   stuff early while you work on anything that's not quite ready.

o  Organizing the work this way tends to make the code clearer and
   better, because you think about it more and from more distinct
   points of view.

o  Many others can begin to understand where you are going.

Committing code to a repo. does three good things: (1) your work is
protected from mishap; (2) you can easily roll back changes that
didn't work out; (3) anyone with access to the repo. can start to
review, use, and build on your work.  I see a potential for Git to
facilitate a workflow that denies us early profit from (3), because
you get (1) and (2) by committing locally without sharing.  I think
that would be a mistake.  I'd like to encourage everyone to frequently
ask: "what do I have that's ready (or easily could be)", to organize
work so that there is often a non-null answer to that question, and to
move small units of work up the workflow early.

I recently realized that I wasn't taking my own advice on the work to
port the testing framework out of dspace-api, and reorganized so that
I could commit a chunk that was ready while I continue working on the
parts that aren't ready.  What I committed obviously isn't finished,
but it does what it's designed to do and it doesn't break anything.  I
did this in the SVN repo. but there's no reason why one couldn't do the
same with Git, and I commend this style to you for consideration.

-- 
Mark H. Wood, Lead System Programmer   mw...@iupui.edu
Asking whether markets are efficient is like asking whether people are smart.

Attachment: pgpvjhTUV5EQ1.pgp
Description: PGP signature

------------------------------------------------------------------------------
Virtualization & Cloud Management Using Capacity Planning
Cloud computing makes use of virtualization - but cloud computing 
also focuses on allowing computing to be delivered as a service.
http://www.accelacomm.com/jaw/sfnl/114/51521223/
_______________________________________________
Dspace-devel mailing list
Dspace-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/dspace-devel

Reply via email to