From: Igor Djordjevic <igor.d.djordjevic@gmail.com>
To: "Nguyễn Thái Ngọc Duy" <pclouds@gmail.com>
Cc: alexmv@dropbox.com, git@vger.kernel.org
Subject: Re: [PATCH] status: handle worktree renames
Date: Mon, 25 Dec 2017 20:45:15 +0100 [thread overview]
Message-ID: <86b4d2af-18ce-36eb-4823-105757a196fc@gmail.com> (raw)
In-Reply-To: <b3e90960-d743-3299-ba43-150849b591d2@gmail.com>
On 25/12/2017 19:26, Igor Djordjevic wrote:
>
> But I`ve noticed that "--porcelain=v2" output might still be buggy -
> this is what having both files staged shows:
>
> $ git status --porcelain=v2
> 2 R. N... 100644 100644 100644 12f00e90b6ef79117ce6e650416b8cf517099b78 12f00e90b6ef79117ce6e650416b8cf517099b78 R100 new-file original-file
>
> ..., where having old/deleted file unstaged, and new/created file
> staged with `git add -N` shows this:
>
> $ git status --porcelain=v2
> 1 .R N... 100644 100644 100644 12f00e90b6ef79117ce6e650416b8cf517099b78 12f00e90b6ef79117ce6e650416b8cf517099b78 new-file
>
> So even though unstaged value is correctly recognized as "R" (renamed),
> first number is "1" (instead of "2" to signal rename/copy), and both
> rename score and original file name are missing.
As an exercise, might be something like this as a fixup on top of
your patch could work.
I`ve tried to follow your lead on what you did yourself, but please
note that, besides being relatively new to Git codebase, this is my
first C code for almost 10 years (since university), so... :)
I guess an additional test for this would be good, too.
Regards, Buga
---
wt-status.c | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/wt-status.c b/wt-status.c
index f0b5b3d46..55c0ad249 100644
--- a/wt-status.c
+++ b/wt-status.c
@@ -2050,7 +2050,7 @@ static void wt_porcelain_v2_print_changed_entry(
const char *path_head = NULL;
char key[3];
char submodule_token[5];
- char sep_char, eol_char;
+ char sep_char, eol_char, score_char;
wt_porcelain_v2_fix_up_changed(it, s);
wt_porcelain_v2_submodule_state(d, submodule_token);
@@ -2059,6 +2059,8 @@ static void wt_porcelain_v2_print_changed_entry(
key[1] = d->worktree_status ? d->worktree_status : '.';
key[2] = 0;
+ path_head = d->head_path ? d->head_path : d->worktree_path;
+ score_char = d->index_status ? key[0] : key[1];
if (s->null_termination) {
/*
* In -z mode, we DO NOT C-quote pathnames. Current path is ALWAYS first.
@@ -2067,7 +2069,6 @@ static void wt_porcelain_v2_print_changed_entry(
sep_char = '\0';
eol_char = '\0';
path_index = it->string;
- path_head = d->head_path;
} else {
/*
* Path(s) are C-quoted if necessary. Current path is ALWAYS first.
@@ -2078,8 +2079,8 @@ static void wt_porcelain_v2_print_changed_entry(
sep_char = '\t';
eol_char = '\n';
path_index = quote_path(it->string, s->prefix, &buf_index);
- if (d->head_path)
- path_head = quote_path(d->head_path, s->prefix, &buf_head);
+ if (path_head)
+ path_head = quote_path(path_head, s->prefix, &buf_head);
}
if (path_head)
@@ -2087,7 +2088,7 @@ static void wt_porcelain_v2_print_changed_entry(
key, submodule_token,
d->mode_head, d->mode_index, d->mode_worktree,
oid_to_hex(&d->oid_head), oid_to_hex(&d->oid_index),
- key[0], d->score,
+ score_char, d->score,
path_index, sep_char, path_head, eol_char);
else
fprintf(s->fp, "1 %s %s %06o %06o %06o %s %s %s%c",
--
2.15.1.windows.2
next prev parent reply other threads:[~2017-12-25 19:45 UTC|newest]
Thread overview: 37+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-12-23 2:42 [BUG] File move with `add -N` shows as rename to same name Alex Vandiver
2017-12-25 9:00 ` Duy Nguyen
2017-12-25 10:37 ` [PATCH] status: handle worktree renames Nguyễn Thái Ngọc Duy
2017-12-25 18:26 ` Igor Djordjevic
2017-12-25 19:45 ` Igor Djordjevic [this message]
2017-12-25 21:49 ` Igor Djordjevic
2017-12-26 2:11 ` Duy Nguyen
2017-12-26 2:53 ` Duy Nguyen
2017-12-27 18:17 ` Junio C Hamano
2017-12-27 18:12 ` Junio C Hamano
2018-01-02 21:14 ` Jeff Hostetler
2018-01-10 9:26 ` Duy Nguyen
2017-12-26 9:10 ` [PATCH v2 0/7] Renames in git-status "changed not staged" section Nguyễn Thái Ngọc Duy
2017-12-26 9:10 ` [PATCH v2 1/7] t2203: test status output with porcelain v2 format Nguyễn Thái Ngọc Duy
2017-12-26 9:10 ` [PATCH v2 2/7] Use DIFF_DETECT_RENAME for detect_rename assignments Nguyễn Thái Ngọc Duy
2017-12-26 9:10 ` [PATCH v2 3/7] wt-status.c: coding style fix Nguyễn Thái Ngọc Duy
2017-12-26 9:10 ` [PATCH v2 4/7] wt-status.c: rename wt_status_change_data::score Nguyễn Thái Ngọc Duy
2017-12-26 9:10 ` [PATCH v2 5/7] wt-status.c: catch unhandled diff status codes Nguyễn Thái Ngọc Duy
2017-12-26 9:10 ` [PATCH v2 6/7] wt-status.c: handle worktree renames Nguyễn Thái Ngọc Duy
2017-12-26 18:14 ` Igor Djordjevic
2017-12-27 1:06 ` Duy Nguyen
2017-12-28 0:50 ` Igor Djordjevic
2017-12-28 2:14 ` Igor Djordjevic
2017-12-26 9:10 ` [PATCH v2 7/7] wt-status.c: avoid double renames in short/porcelain format Nguyễn Thái Ngọc Duy
2017-12-26 22:14 ` Igor Djordjevic
2017-12-27 0:49 ` Duy Nguyen
2017-12-27 23:53 ` Igor Djordjevic
2017-12-27 10:18 ` [PATCH v3 0/6] Renames in git-status "changed not staged" section Nguyễn Thái Ngọc Duy
2017-12-27 10:18 ` [PATCH v3 1/6] t2203: test status output with porcelain v2 format Nguyễn Thái Ngọc Duy
2017-12-27 10:18 ` [PATCH v3 2/6] Use DIFF_DETECT_RENAME for detect_rename assignments Nguyễn Thái Ngọc Duy
2017-12-27 10:18 ` [PATCH v3 3/6] wt-status.c: coding style fix Nguyễn Thái Ngọc Duy
2017-12-27 10:18 ` [PATCH v3 4/6] wt-status.c: catch unhandled diff status codes Nguyễn Thái Ngọc Duy
2017-12-27 10:18 ` [PATCH v3 5/6] wt-status.c: rename rename-related fields in wt_status_change_data Nguyễn Thái Ngọc Duy
2017-12-27 10:18 ` [PATCH v3 6/6] wt-status.c: handle worktree renames Nguyễn Thái Ngọc Duy
2017-12-28 0:59 ` [PATCH v3 0/6] Renames in git-status "changed not staged" section Igor Djordjevic
2018-01-02 21:22 ` Jeff Hostetler
2017-12-26 18:04 ` [PATCH] status: handle worktree renames Torsten Bögershausen
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
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=86b4d2af-18ce-36eb-4823-105757a196fc@gmail.com \
--to=igor.d.djordjevic@gmail.com \
--cc=alexmv@dropbox.com \
--cc=git@vger.kernel.org \
--cc=pclouds@gmail.com \
/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.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
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).