git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Robert Anderson" <rwa000@gmail.com>
To: "Jakub Narebski" <jnareb@gmail.com>
Cc: "Stephen Sinclair" <radarsat1@gmail.com>,
	"Git Mailing List" <git@vger.kernel.org>
Subject: Re: An alternate model for preparing partial commits
Date: Sat, 28 Jun 2008 11:25:16 -0700	[thread overview]
Message-ID: <9af502e50806281125v5459f7deuc14256044b3e726@mail.gmail.com> (raw)
In-Reply-To: <m3d4m1iivq.fsf@localhost.localdomain>

On Sat, Jun 28, 2008 at 10:12 AM, Jakub Narebski <jnareb@gmail.com> wrote:
> "Robert Anderson" <rwa000@gmail.com> writes:
>
>> On Sat, Jun 28, 2008 at 7:34 AM, Stephen Sinclair <radarsat1@gmail.com> wrote:
>> > The answer is simple: you should not be making partial commits to a
>> > repo that has been cloned.  You should instead be working somewhere
>> > else and then pushing to it.  So this whole sentence is just a moot
>> > point itself.
>>
>> Let me amplify my objection to this.
>>
>> Who has 100% foresight that what they are doing is going to end up in
>> a state where they'd like to make partial commits?  To take a quote
>> from a blog post, 'Git means never having to say, "you should have"'.
>> And mostly it doesn't, and that's big improvement over other systems.
>> But, that is what you are saying here.  I "should have" realized that
>> I should have pulled and fiddled with my changes there, and then
>> pushed.
>>
>> Well, Dmitri and others will now say, why not just always pull and
>> work somewhere else?  And the reason is that because this creates
>> extra, unnecessary steps the vast majority of the time when I do
>> create a commit that I like and want to keep as-is in the first try.
>> Why should I have to pull, commit, hack, and push, when hack and
>> commit is all I need to do the vast majority of the time?  It is
>> redundant, unnecessary work and complexity that I should not have to
>> pay for when I don't need it.
>
> I think that in most cases the setup looks like the following: there
> is private non-bare repository, ehere you can use topic branches,
> and change and rewrite those changes at will, be it using plain rebase,
> rebase --interactive, or some patch management interface like StGit
> or Guilt.  That is where you clean up your commits till they all fill
> some standards / convention, like compiling (at least), or pass the
> testsuite.

In my opinion it looks like that because git has poor support for
creating good partial commits the first time around.

I also think all of this rebase -i style approach is fine for an
experienced power user if they like that approach, but that splitting
the changes in a working tree is a very basic usage that should be a
part of a "Git in 20 minutes" tutorial.  StGit, rebase -i, etc.,
should not.

In my experience this is pretty much the *first* thing a developer
faces when they decide that having a good incremental change history
is a good practice they want to follow.  They usually shrug, commit
the hairball, and resolve to do better next time.  But this is an
unavoidable scenario in real world development, and a good SCM manager
should have convenient facilities for dealing with it, that don't
reach into the power user toolbox like rebase -i (and let's face it,
that is an absurdly counterintuitive command for the job at hand), or
require auxilliary tools like StGit.  The index is a start.  But, IMO,
it isn't sufficient.

Stay tuned for some proposals about improving partial commit support.

Thanks,
Bob

  reply	other threads:[~2008-06-28 18:26 UTC|newest]

Thread overview: 61+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-06-27  6:50 An alternate model for preparing partial commits Robert Anderson
2008-06-27  7:10 ` Björn Steinbrink
2008-06-27 14:37   ` [PATCH/RFC] stash: introduce 'stash save --keep-index' option SZEDER Gábor
2008-06-27 18:26     ` Junio C Hamano
2008-06-27 16:54   ` An alternate model for preparing partial commits Robert Anderson
2008-06-27 17:27     ` Björn Steinbrink
2008-06-27 17:34       ` Robert Anderson
2008-06-27  8:35 ` Johannes Sixt
2008-06-27 17:01   ` Robert Anderson
2008-06-27  8:50 ` Petr Baudis
2008-06-27 17:02   ` Robert Anderson
2008-06-27 13:33 ` Johannes Schindelin
2008-06-27 13:49   ` Miklos Vajna
2008-06-27 17:14   ` Robert Anderson
2008-06-27 17:45     ` Johannes Schindelin
2008-06-27 17:49       ` Robert Anderson
     [not found]         ` <alpine.DEB.1.00.0806271854120.9925@racer>
2008-06-27 18:07           ` Robert Anderson
2008-06-27 18:20         ` Dana How
2008-06-27 20:31     ` Stephen Sinclair
     [not found]       ` <willow-jeske-01l7H4tHFEDjCgPV-01l7ZhB8FEDjCdJs>
2008-06-27 20:45         ` David Jeske
2008-06-28 17:23           ` Wincent Colaiuta
2008-06-27 20:45         ` David Jeske
2008-06-28  2:14     ` Dmitry Potapov
2008-06-28  2:57       ` Robert Anderson
2008-06-28  4:03         ` Dmitry Potapov
     [not found]           ` <9af502e50806272320p23f01e8eo4a67c5f6f4476098@mail.gmail.com>
2008-06-28  6:31             ` Fwd: " Robert Anderson
2008-06-28 12:38               ` Dmitry Potapov
     [not found]             ` <20080628123522.GL5737@dpotapov.dyndns.org>
2008-06-28 15:53               ` Robert Anderson
2008-06-28 16:52                 ` Dmitry Potapov
2008-06-27 18:15   ` Junio C Hamano
2008-06-27 18:43     ` Robert Anderson
2008-06-28  5:03     ` Jeff King
2008-06-28  7:03       ` Robert Anderson
2008-06-28  8:53         ` Jeff King
2008-06-28 21:53           ` Junio C Hamano
2008-06-28 14:51       ` Johannes Schindelin
2008-07-08  4:58         ` Jeff King
     [not found] ` <willow-jeske-01l7H4tHFEDjCgPV-01l7H4sOFEDjCbyi>
2008-06-27 20:29   ` David Jeske
2008-06-27 20:47     ` Jakub Narebski
     [not found]       ` <willow-jeske-01l7H4tHFEDjCgPV-01l7[1OFFEDjCYJV>
2008-06-27 20:51         ` David Jeske
2008-06-27 20:51         ` David Jeske
     [not found]       ` <-8386235276716376372@unknownmsgid>
2008-06-27 22:55         ` Robert Anderson
2008-06-27 23:14           ` Junio C Hamano
2008-06-28  0:08             ` Robert Anderson
2008-06-28  2:57               ` Dmitry Potapov
2008-06-28  3:31                 ` Robert Anderson
2008-06-28 14:34               ` Stephen Sinclair
2008-06-28 16:00                 ` Robert Anderson
2008-06-28 16:30                 ` Robert Anderson
2008-06-28 17:12                   ` Jakub Narebski
2008-06-28 18:25                     ` Robert Anderson [this message]
     [not found]                       ` <willow-jeske-01l7H4tHFEDjCgPV-01l82hwbFEDjCX70>
2008-06-28 19:12                         ` David Jeske
2008-06-28 19:12                         ` David Jeske
2008-06-28 19:13                   ` Stephen Sinclair
     [not found]           ` <willow-jeske-01l7H4tHFEDjCgPV-01l7buicFEDjCagd>
2008-06-28  0:22             ` David Jeske
2008-06-28  0:22             ` David Jeske
2008-06-27 20:29   ` David Jeske
  -- strict thread matches above, loose matches on Subject: below --
2008-06-28  1:17 Theodore Tso
2008-06-28  1:56 ` Miklos Vajna
2008-06-28  1:23 Theodore Tso
2008-06-28  9:30 Stephen R. van den Berg

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=9af502e50806281125v5459f7deuc14256044b3e726@mail.gmail.com \
    --to=rwa000@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=jnareb@gmail.com \
    --cc=radarsat1@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).