list mirror (unofficial, one of many)
 help / color / mirror / code / Atom feed
From: Siddharth Kannan <>
	Siddharth Kannan <>
Subject: [PATCH 0/4 v4] WIP: allow "-" as a shorthand for "previous branch"
Date: Thu, 16 Feb 2017 15:14:10 +0000	[thread overview]
Message-ID: <> (raw)

This is as per our discussion[1]. The patches and commit messages are based on
Junio's patches that were posted as a reply to

As per Matthieu's comments, I have updated the tests, but there is still one
thing that is not working: log -@{yesterday} or log -@{2.days.ago}

For the other kinds of suffixes, such as -^ or -~ or -~N, the suffix
information is first extracted and then, the function get_sha1_1 is called with
name="-^" and len=1 (which is the reason for the changed condition inside Patch
4 of this series).

For -@{yesterday} kind of queries, the functions dwim_log,
interpret_branch_name and interpret_nth_prior_checkout are called.

1. A nice way to solve this would be to extend the replacement of "-" with
"@{-1}" one step further. Using strbuf, instead of replacing the whole string
with "@{-1}" we would simply replace "-" with "@{-1}" expanding the string
appropriately. This will ensure that all the code is inside the function
get_sha1_1. The code to do this is in the cover section of the 4th patch in this

2. we could go down the dwim_log codepath, and find another suitable place to
make the same "-" -> "@{-1}" replacement. In the time that I spent till now, it
seems that the suffix information (i.e.  @{yesterday} or @{2.days.ago}) is
extracted _after_ the branch information has been extracted, so I suspect that
we will have to keep that part intact even in this solution.  (I am not too
sure about this. If this is the preferred solution, then I will dig deeper and
find the right place as I did for the first part of this patch)

Matthieu: Thanks a lot for your comments on the tests! test_commit has made the
tests a lot cleaner!

[1]: <>

Siddharth Kannan (4):
  revision.c: do not update argv with unknown option
  revision.c: swap if/else blocks
  revision.c: args starting with "-" might be a revision
  sha1_name.c: teach get_sha1_1 "-" shorthand for "@{-1}"

 revision.c               |  15 ++++---
 sha1_name.c              |   5 +++
 t/ | 106 +++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 120 insertions(+), 6 deletions(-)
 create mode 100755 t/


             reply	other threads:[~2017-02-16 15:14 UTC|newest]

Thread overview: 16+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-02-16 15:14 Siddharth Kannan [this message]
2017-02-16 15:14 ` [PATCH 1/4 v4] revision.c: do not update argv with unknown option Siddharth Kannan
2017-02-16 16:48   ` Matthieu Moy
2017-02-16 18:11     ` Junio C Hamano
2017-02-16 18:22       ` Matthieu Moy
2017-02-16 19:39         ` Siddharth Kannan
2017-02-16 15:14 ` [PATCH 2/4 v4] revision.c: swap if/else blocks Siddharth Kannan
2017-02-16 15:14 ` [PATCH 3/4 v4] revision.c: args starting with "-" might be a revision Siddharth Kannan
2017-02-16 15:14 ` [PATCH 4/4 v4] sha1_name.c: teach get_sha1_1 "-" shorthand for "@{-1}" Siddharth Kannan
2017-02-16 19:08   ` Junio C Hamano
2017-02-20 14:21     ` Siddharth Kannan
2017-02-20 20:30       ` Junio C Hamano
2017-02-22  6:27         ` Siddharth Kannan
2017-02-16 16:41 ` [PATCH 0/4 v4] WIP: allow "-" as a shorthand for "previous branch" Matthieu Moy
2017-02-16 18:49   ` Junio C Hamano
2017-02-16 19:43     ` Siddharth Kannan

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:

  List information:

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

  git send-email \ \ \ \ \ \ \ \ \ \
    --subject='Re: [PATCH 0/4 v4] WIP: allow "-" as a shorthand for "previous branch"' \

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

Code repositories for project(s) associated with this inbox:

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 read-only IMAP folder(s) and NNTP newsgroup(s).