[PATCH 0/4 v4] WIP: allow "-" as a shorthand for "previous branch"
- From
Siddharth Kannan <kannan.siddharth12@gmail.com>
- Date
- Feb 16, 2017, 15:14 UTC
- Message-ID
- <1487258054-32292-1-git-send-email-kannan.siddharth12@gmail.com>
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 <20170212184132.12375-1-gitster@pobox.com>.
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
series.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]: <xmqqh941ippo.fsf@gitster.mtv.corp.google.com>
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/t4214-log-shorthand.sh | 106 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 120 insertions(+), 6 deletions(-) create mode 100755 t/t4214-log-shorthand.sh
-- 2.1.4