Re: [RFC/PATCH 1/2] Doc rebase: Describe rebase as excluding merge commits

2013-05-20 Thread Junio C Hamano
"Philip Oakley"  writes:

> From: "Junio C Hamano" 
> Sent: Monday, May 20, 2013 5:43 AM
>> Jonathan Nieder  writes:
>>
>>> Philip Oakley wrote:
>>>
 Describe rebase in the description section.
>>>
>>> It already does that. :)  I think you mean "start with a summary",
>>> which is a valuable improvement.
>>
>> It indeed is a good idea to give the "high-level introduction" at
>> the very beginning, but I do not think it should describe only one
>> of the three major modes of "git rebase" (i.e. no -m, no -i), like
>> the proposed patch text does.  We should instead say what it is used
>> for and why the user would want to use it that is common across
>> these modes at a very high level.
>
> That would repeat the NAME issue (of trying too hard to be exact &
> precise). This introductory text is that "summary".

If that is "summary", it should never talk about "skips merges",
which only applies to the mode without -m, no?

The highest level view of what the command is for (the motivation
why the user would want to consider learning how to use the command)
is "You have a history built on top of some commit, and you want to
rebuild the history on top of another commit, e.g. you earlier built
on the tip of a branch that has some other work, and you want to
rebuild the history on top of the updated tip of that other branch".

The details of how the history is "rebuilt" can differ while using
various modes of operation.  Some may skip merges, some may try to
preserve the topology, some may even let you insert new commits by
letting you tell it to stop in the middle.  That is not "summary"
but is part of mode specific description.

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [RFC/PATCH 1/2] Doc rebase: Describe rebase as excluding merge commits

2013-05-20 Thread Philip Oakley

From: "Junio C Hamano" 
Sent: Monday, May 20, 2013 5:43 AM

Jonathan Nieder  writes:


Philip Oakley wrote:


Describe rebase in the description section.


It already does that. :)  I think you mean "start with a summary",
which is a valuable improvement.


It indeed is a good idea to give the "high-level introduction" at
the very beginning, but I do not think it should describe only one
of the three major modes of "git rebase" (i.e. no -m, no -i), like
the proposed patch text does.  We should instead say what it is used
for and why the user would want to use it that is common across
these modes at a very high level.


That would repeat the NAME issue (of trying too hard to be exact & 
precise). This introductory text is that "summary". The patch 2/2 should 
be the one for the extra detail of the various whys and wherefores - at 
least that was my intent.





DESCRIPTION
---
token
mention of *why* a user would want to use it (e.g., "so that the 
patches

apply cleanly to their new base").>


Exactly.
--


--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [RFC/PATCH 1/2] Doc rebase: Describe rebase as excluding merge commits

2013-05-19 Thread Junio C Hamano
Jonathan Nieder  writes:

> Philip Oakley wrote:
>
>> Describe rebase in the description section.
>
> It already does that. :)  I think you mean "start with a summary",
> which is a valuable improvement.

It indeed is a good idea to give the "high-level introduction" at
the very beginning, but I do not think it should describe only one
of the three major modes of "git rebase" (i.e. no -m, no -i), like
the proposed patch text does.  We should instead say what it is used
for and why the user would want to use it that is common across
these modes at a very high level.

>   DESCRIPTION
>   ---
>  mention of *why* a user would want to use it (e.g., "so that the patches
>   apply cleanly to their new base").>

Exactly.
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [RFC/PATCH 1/2] Doc rebase: Describe rebase as excluding merge commits

2013-05-19 Thread Philip Oakley

From: "Jonathan Nieder" 
Sent: Sunday, May 19, 2013 7:08 PM

Philip Oakley wrote:


Describe rebase in the description section.


It already does that. :)  I think you mean "start with a summary",
which is a valuable improvement.

Yes.




Include a softer paraphrased version from the crytic, well-loved,
but sometimes parodied, Name description, and tell users that merge
commits are excluded by default.


I don't really follow this paragraph.  Are you saying "The NAME line
is cryptic, but let's copy it anyway, since it is better than 
nothing"?


I was keeping the 'cryptic/esoteric' NAME line, because it is commented 
on in a few blogs [1]. It is accurate but let's not spoil those blogs...


The fundamental reason for the update was to introduce 'somewhere'  in 
the text the "excluding merge commits by default" note, and I couldn't 
find an easy way of updating the NAME line, and then realised a softer 
introduction wiould kill two birds with one stone.


[...]

--- a/Documentation/git-rebase.txt
+++ b/Documentation/git-rebase.txt
@@ -16,6 +16,10 @@ SYNOPSIS

 DESCRIPTION
 ---
+'git rebase' will transfer local commits, excluding merge commits
+by default, to the head of the branch's upstream, or onto a new base
+if given.
+


Not about this patch, but some day it would be nice to standardize on
one tense for the DESCRIPTION sections of manpages.  Some git commands
use the imperative ("Reply local commits, excluding merge commits, on
top of ..."), some use the present indicative ("Replays local commits,
excluding merge commits, ..."), and some use the future ("Will replay
local commits, excluding merge commits, ...").

The traditional tense for Unix manpages is the present indicative.
But you are right to match the rest of the description here.


 If  is specified, 'git rebase' will perform an automatic
 `git checkout ` before doing anything else.  Otherwise
 it remains on the current branch.


The description has become very long by now.  I wonder if it's
possible to break it into chunks, like so?

DESCRIPTION
---
mention of *why* a user would want to use it (e.g., "so that the 
patches

apply cleanly to their new base").>

It proceeds using the following steps:

1. If  is specified, ...
2. Decides which commits will need to be applied.
These are plain, non-merge commits that are ancestors of HEAD but
not of .
3. Checks out .  ()
4. Reapplies the commits listed on step (2), one by one, in order.
If merge failures are encountered, the program will exit and allow
the user to resolve them and resume or cancel the rebase.  See
the RESPONDING TO MERGE CONFLICTS section below for details.
5. Once all of the commits from step (2) have been applied, updates
 to point to the new HEAD.

The result is an updated  that ...

OPTIONS
---
...

EXAMPLES

Assume the following history exists and the current branch is "topic":
...

Description of specific options like "--preserve-merges" and "--onto"
could move out of the DESCRIPTION section and to the OPTIONS section.

What do you think?


It's probably something I'd need help on (to ensure correctness). I'll 
have a go based on your suggestions in the next few days.




Thanks,
Jonathan
--


[1] http://steveko.wordpress.com/2012/02/24/10-things-i-hate-about-git/ 
section 3 'update'. 


--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [RFC/PATCH 1/2] Doc rebase: Describe rebase as excluding merge commits

2013-05-19 Thread Jonathan Nieder
Philip Oakley wrote:

> Describe rebase in the description section.

It already does that. :)  I think you mean "start with a summary",
which is a valuable improvement.

> Include a softer paraphrased version from the crytic, well-loved,
> but sometimes parodied, Name description, and tell users that merge
> commits are excluded by default.

I don't really follow this paragraph.  Are you saying "The NAME line
is cryptic, but let's copy it anyway, since it is better than nothing"?

[...]
> --- a/Documentation/git-rebase.txt
> +++ b/Documentation/git-rebase.txt
> @@ -16,6 +16,10 @@ SYNOPSIS
>  
>  DESCRIPTION
>  ---
> +'git rebase' will transfer local commits, excluding merge commits
> +by default, to the head of the branch's upstream, or onto a new base
> +if given.
> +

Not about this patch, but some day it would be nice to standardize on
one tense for the DESCRIPTION sections of manpages.  Some git commands
use the imperative ("Reply local commits, excluding merge commits, on
top of ..."), some use the present indicative ("Replays local commits,
excluding merge commits, ..."), and some use the future ("Will replay
local commits, excluding merge commits, ...").

The traditional tense for Unix manpages is the present indicative.
But you are right to match the rest of the description here.

>  If  is specified, 'git rebase' will perform an automatic
>  `git checkout ` before doing anything else.  Otherwise
>  it remains on the current branch.

The description has become very long by now.  I wonder if it's
possible to break it into chunks, like so?

DESCRIPTION
---


It proceeds using the following steps:

 1. If  is specified, ...
 2. Decides which commits will need to be applied.
These are plain, non-merge commits that are ancestors of HEAD but
not of .
 3. Checks out .  ()
 4. Reapplies the commits listed on step (2), one by one, in order.
If merge failures are encountered, the program will exit and allow
the user to resolve them and resume or cancel the rebase.  See
the RESPONDING TO MERGE CONFLICTS section below for details.
 5. Once all of the commits from step (2) have been applied, updates
 to point to the new HEAD.

The result is an updated  that ...

OPTIONS
---
...

EXAMPLES

Assume the following history exists and the current branch is "topic":
...

Description of specific options like "--preserve-merges" and "--onto"
could move out of the DESCRIPTION section and to the OPTIONS section.

What do you think?

Thanks,
Jonathan
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[RFC/PATCH 1/2] Doc rebase: Describe rebase as excluding merge commits

2013-05-19 Thread Philip Oakley
Describe rebase in the description section.

Include a softer paraphrased version from the crytic, well-loved,
but sometimes parodied, Name description, and tell users that merge
commits are excluded by default.

Signed-off-by: Philip Oakley 

---

http://article.gmane.org/gmane.comp.version-control.git/217410
http://article.gmane.org/gmane.comp.version-control.git/217495
---
 Documentation/git-rebase.txt | 4 
 1 file changed, 4 insertions(+)

diff --git a/Documentation/git-rebase.txt b/Documentation/git-rebase.txt
index aca8405..87a8095 100644
--- a/Documentation/git-rebase.txt
+++ b/Documentation/git-rebase.txt
@@ -16,6 +16,10 @@ SYNOPSIS
 
 DESCRIPTION
 ---
+'git rebase' will transfer local commits, excluding merge commits
+by default, to the head of the branch's upstream, or onto a new base
+if given.
+
 If  is specified, 'git rebase' will perform an automatic
 `git checkout ` before doing anything else.  Otherwise
 it remains on the current branch.
-- 
1.8.1.msysgit.1

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html