All of lore.kernel.org
 help / color / mirror / Atom feed
From: Daniel Wagner <wagi@monom.org>
To: Jeff King <peff@peff.net>
Cc: git@vger.kernel.org
Subject: Re: 'git log' numbering commits?
Date: Thu, 12 Apr 2012 11:15:56 +0200	[thread overview]
Message-ID: <4F869D4C.8090108@monom.org> (raw)
In-Reply-To: <20120412084122.GG31122@sigill.intra.peff.net>

Hi Jeff,

On 12.04.2012 10:41, Jeff King wrote:
> On Thu, Apr 12, 2012 at 09:54:12AM +0200, Daniel Wagner wrote:
> 
>> My workflow involves a lot of "git rebase -i". For figuring out which
>> commit id to use I do first a 'git log --oneline'. Then I do copy past
>> the id to the 'git rebase -i'. The reason why I don't use relative
>> id such as HEAD~4, because I keep miscounting the commits.
>>
>> So my question is there a magic option to have git log to enumerate the
>> commits, e.g.
>>
>> 1: 2fcd2b3 network: Remove unused function
>> 2: b376b2a session: Fix introspection for Change()
>> 3: 15c9cd0 wifi: Refactor desctruction of network object
>> 4: a9c699f network: Remove device pointer in network_remove()
> 
> No, there is no such feature. You can do this:
> 
>   git log --oneline | nl "-s: "

Obviously, I tend to forget the power of the pipes :)

> but that will just give you the count of commits shown. If the history
> is not a single line of development, then those numbers will become
> meaningless quickly. Also note that there is an off-by-one in this
> scheme; HEAD~2 will be numbered as "3".
> 
> If you wanted to simply decorate each commit with a more readable name,
> you could do this:
> 
>   git log --format='%H: %s' |
>   git name-rev --stdin --name-only
> 
> though for simplicity, you may find that you prefer to name only based on
> the current tip. You can do that like this:
> 
>   git log --format='%H: %s' |
>   git name-rev --stdin --name-only \
>     --refs `git symbolic-ref HEAD`
> 
> which yields output like:
> 
>   your-topic: network: Remove unused function
>   your-topic~1: session: Fix introspection for Change()
>   your-topic~2: wifi: Refactor desctruction of network object
>   your-topic~3: network: Remove device pointer in network_remove()

Didn't know about name-ref. Very cool :)

> However, if you really just want this to make "rebase -i" easier, have
> you considered setting the upstream branch config for your branches?
> When I create a topic branch, I do:

Maybe I should have mentioned that on those project I am mostly working,
we don't have branches (ConnMan, BlueZ, oFono). So we have a very simple
history.

>   git checkout -b topic origin/master
> 
> And then "git rebase -i @{upstream}" rebases everything up to my
> upstream branch (origin/master). That may be slightly more than I want,
> but it lets me see the whole series in the "rebase -i" sequencer. Recent
> versions of git even default to "@{upstream}", so you can just say "git rebase
> -i".

The main reason I avoided branches is that I have several topics at the
same time and having a single branch and maintaining them by hand was so
far easier.

> How do you usually create your branches? What version of git are you
> using (the "@{upstream}" default is in v1.7.6 and later)?

Normally I only have for big changes branches but for a few independent
fixed I just use the master branch and fix the patches. But I see, I
should over think my workflow here :)

I am using git trunk :) I'll try the @{upstream} trick.

Thanks a lot for this elaborate answer.

cheers,
daniel

  reply	other threads:[~2012-04-12  9:16 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-04-12  7:54 'git log' numbering commits? Daniel Wagner
2012-04-12  8:41 ` Jeff King
2012-04-12  9:15   ` Daniel Wagner [this message]
2012-04-12 18:14     ` Philippe Vaucher

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=4F869D4C.8090108@monom.org \
    --to=wagi@monom.org \
    --cc=git@vger.kernel.org \
    --cc=peff@peff.net \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.