git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Submit/Workflow question
@ 2007-07-29 15:56 David Kastrup
  2007-07-29 16:03 ` David Kastrup
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: David Kastrup @ 2007-07-29 15:56 UTC (permalink / raw)
  To: git


Suppose that I have created a half-baked patch A suiting my personal
needs and went on from there, having something like

...->A->B->...

Now at some point of time I decide that really A should be made fit
for submission.  Basically, I'd want to do
git-reset --hard A
[edit some]
git-commit --amend -a
git-format-patch HEAD~1

in order to arrive at a nice submittable patch.  However, I don't want
to lose B and the following stuff, and the resulting HEAD should
include the improved of A (it is fine if that needs additional steps,
and it is fine if it is just HEAD that gets the fixed version, not B).

So how to do this?  Branch at A^, rebase on A, fix the stuff, commit
with --amend -a, rebase on master, rename the temporary branch to
master (killing the old master), format and submit the patch?

Or is there some bad thinko in there?  Or is this too complicated?

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Submit/Workflow question
  2007-07-29 15:56 Submit/Workflow question David Kastrup
@ 2007-07-29 16:03 ` David Kastrup
  2007-07-29 16:03 ` J. Bruce Fields
  2007-07-29 17:21 ` Jason Sewall
  2 siblings, 0 replies; 5+ messages in thread
From: David Kastrup @ 2007-07-29 16:03 UTC (permalink / raw)
  To: git

David Kastrup <dak@gnu.org> writes:

> Suppose that I have created a half-baked patch A suiting my personal
> needs and went on from there, having something like
>
> ...->A->B->...
>
> Now at some point of time I decide that really A should be made fit
> for submission.  Basically, I'd want to do
> git-reset --hard A
> [edit some]
> git-commit --amend -a
> git-format-patch HEAD~1
>
> in order to arrive at a nice submittable patch.  However, I don't want
> to lose B and the following stuff, and the resulting HEAD should
> include the improved of A (it is fine if that needs additional steps,
> and it is fine if it is just HEAD that gets the fixed version, not B).
>
> So how to do this?  Branch at A^, rebase on A, fix the stuff, commit
> with --amend -a, rebase on master, rename the temporary branch to
> master (killing the old master), format and submit the patch?
>
> Or is there some bad thinko in there?  Or is this too complicated?

Uh, too many rebases.

I mean:

Branch at A^, merge A, fix the stuff, commit with --amend -a, merge
master, rename the temporary branch to master (killing the old
master), format and submit the patch?

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Submit/Workflow question
  2007-07-29 15:56 Submit/Workflow question David Kastrup
  2007-07-29 16:03 ` David Kastrup
@ 2007-07-29 16:03 ` J. Bruce Fields
  2007-07-29 16:06   ` David Kastrup
  2007-07-29 17:21 ` Jason Sewall
  2 siblings, 1 reply; 5+ messages in thread
From: J. Bruce Fields @ 2007-07-29 16:03 UTC (permalink / raw)
  To: David Kastrup; +Cc: git

On Sun, Jul 29, 2007 at 05:56:54PM +0200, David Kastrup wrote:
> 
> Suppose that I have created a half-baked patch A suiting my personal
> needs and went on from there, having something like
> 
> ...->A->B->...
> 
> Now at some point of time I decide that really A should be made fit
> for submission.  Basically, I'd want to do
> git-reset --hard A
> [edit some]
> git-commit --amend -a
> git-format-patch HEAD~1
> 
> in order to arrive at a nice submittable patch.  However, I don't want
> to lose B and the following stuff, and the resulting HEAD should
> include the improved of A (it is fine if that needs additional steps,
> and it is fine if it is just HEAD that gets the fixed version, not B).
> 
> So how to do this?  Branch at A^, rebase on A,

Just branch on A.  Or actually I just check out A at this point (leaving
me not on any branch).

> fix the stuff, commit
> with --amend -a, rebase on master, rename the temporary branch to
> master (killing the old master), format and submit the patch?

I'm not completely sure I follow that sequence, but something like that
should work.  A similar approach:

	http://www.kernel.org/pub/software/scm/git/docs/user-manual.html#modifying-one-commit

I do something pretty close to what's described there, except I
generally just cut and paste SHA1's instead of making the temporary tag.

--b.

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Submit/Workflow question
  2007-07-29 16:03 ` J. Bruce Fields
@ 2007-07-29 16:06   ` David Kastrup
  0 siblings, 0 replies; 5+ messages in thread
From: David Kastrup @ 2007-07-29 16:06 UTC (permalink / raw)
  To: J. Bruce Fields; +Cc: git

"J. Bruce Fields" <bfields@fieldses.org> writes:

> On Sun, Jul 29, 2007 at 05:56:54PM +0200, David Kastrup wrote:
>> 
>> Suppose that I have created a half-baked patch A suiting my personal
>> needs and went on from there, having something like
>
> I'm not completely sure I follow that sequence, but something like that
> should work.  A similar approach:
>
> 	http://www.kernel.org/pub/software/scm/git/docs/user-manual.html#modifying-one-commit
>
> I do something pretty close to what's described there, except I
> generally just cut and paste SHA1's instead of making the temporary tag.

Thanks.

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: Submit/Workflow question
  2007-07-29 15:56 Submit/Workflow question David Kastrup
  2007-07-29 16:03 ` David Kastrup
  2007-07-29 16:03 ` J. Bruce Fields
@ 2007-07-29 17:21 ` Jason Sewall
  2 siblings, 0 replies; 5+ messages in thread
From: Jason Sewall @ 2007-07-29 17:21 UTC (permalink / raw)
  To: David Kastrup; +Cc: git, bfields

On 7/29/07, David Kastrup <dak@gnu.org> wrote:
>
> Suppose that I have created a half-baked patch A suiting my personal
> needs and went on from there, having something like
>
> ...->A->B->...
>
> Now at some point of time I decide that really A should be made fit
> for submission.

What I do in this sort of situation varies on how good I was about
keeping A and B "independent"; first of all, let's assume you're not
on 'master', you're on 'some-feature' (and if you weren't, it's easy
to make it a branch, tho you might have to rebase the branch to the
point on master where the patch is meaningful to others, and
optionally rewind master to keep it clean)

some-feature:         A->B->...
                     /
master:  ->W->X->Y->Z

If I really want to edit *just* A and not use any of B at all, then
the excellent rebase -i would do the job - you may want to rebase to
Z, or if A weren't the first commit exclusive to your branch, you
could rebase to whatever that is...

The point is that rebase -i will let you say "edit just A, just apply
B afterwards" and it will rewrite history for you after you fix A, and
then it will try to apply B on top of A, and so on until you're done.

Sometimes, rebase -i doesn't cut it for me, (because I didn't make my
commits cleanly separated, or perhaps because I haven't totally
explored rebase) - then I do it the "old-fashioned way" which it the
way this was usually done before rebase -i. I make a temporary branch
off of master called (apply-some-feature) and I start generating diffs
between this new branch and some-feature. A apply them, sometimes
reaching across commits and so forth, and commit the changes in nice,
clean format. When I'm done, *I* usually merge these onto master (if
its my own project) but if you were going to make it into a patch, I
would probably just replace some-feature with apply-some-feature.

It's probably pretty self-evident, but (git) diff (and some sort of
visual patch-applier) is pretty powerful and you can generate very
"narrow" diffs to look at just the parts you want to for a given step
in this process. And of course, you can use to to make sure that at
the end, apply-some-feature and some-feature's HEADS have the same
tree (or not, if you chose to omit some debugging stuff as I often
do).

By the way, the way Bruce suggested was fine too, I just though I'd
share what I do in this sort of situation (and I do it often because I
always forget to make my commits clean the first time)

Jason

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2007-07-29 17:21 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-07-29 15:56 Submit/Workflow question David Kastrup
2007-07-29 16:03 ` David Kastrup
2007-07-29 16:03 ` J. Bruce Fields
2007-07-29 16:06   ` David Kastrup
2007-07-29 17:21 ` Jason Sewall

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).