Re: [PATCH] Fix git-runstatus for repositories containing a file named HEAD
- From
Jeff King <peff@peff.net>
- Date
- Nov 5, 2006, 22:22 UTC
- Message-ID
- <20061105222215.GA29042@coredump.intra.peff.net>
- In-Reply-To
- <11627635702846-git-send-email-pdmef@gmx.net>
On Sun, Nov 05, 2006 at 09:52:50PM +0000, Rocco Rutte wrote:
> The wt_status_print_updated() and wt_status_print_untracked() routines > call setup_revisions() with 'HEAD' being the reference to the tip of the > current branch. However, setup_revisions() gets confused if the branch > also contains a file named 'HEAD' resulting in a fatal error.
Ack. This is definitely a bug, and the patch fixes it. I wonder if it would be slightly more readable to simply get rid of the argv nonsense. Junio, please apply whichever you find more readable.
-- >8 -- The wt_status_print_updated() and wt_status_print_untracked() routines call setup_revisions() with 'HEAD' being the reference to the tip of the current branch. However, setup_revisions() gets confused if the branch also contains a file named 'HEAD' resulting in a fatal error.
Instead, don't pass an argv to setup_revisions() at all; simply give it no arguments, and make 'HEAD' the default revision.
Bug noticed by Rocco Rutte <pdmef@gmx.net>.
Signed-off-by: Jeff King <peff@peff.net> --- wt-status.c | 11 +++-------- 1 files changed, 3 insertions(+), 8 deletions(-)
diff --git a/wt-status.c b/wt-status.c index 7dd6857..9692dfa 100644 --- a/wt-status.c +++ b/wt-status.c @@ -154,10 +154,8 @@ void wt_status_print_initial(struct wt_s static void wt_status_print_updated(struct wt_status *s) { struct rev_info rev; - const char *argv[] = { NULL, NULL, NULL }; - argv[1] = s->reference; init_revisions(&rev, NULL); - setup_revisions(2, argv, &rev, NULL); + setup_revisions(0, NULL, &rev, s->reference); rev.diffopt.output_format |= DIFF_FORMAT_CALLBACK; rev.diffopt.format_callback = wt_status_print_updated_cb; rev.diffopt.format_callback_data = s; @@ -168,9 +166,8 @@ static void wt_status_print_updated(stru static void wt_status_print_changed(struct wt_status *s) { struct rev_info rev; - const char *argv[] = { NULL, NULL }; init_revisions(&rev, ""); - setup_revisions(1, argv, &rev, NULL); + setup_revisions(0, NULL, &rev, NULL); rev.diffopt.output_format |= DIFF_FORMAT_CALLBACK; rev.diffopt.format_callback = wt_status_print_changed_cb; rev.diffopt.format_callback_data = s; @@ -225,10 +222,8 @@ static void wt_status_print_untracked(co static void wt_status_print_verbose(struct wt_status *s) { struct rev_info rev; - const char *argv[] = { NULL, NULL, NULL }; - argv[1] = s->reference; init_revisions(&rev, NULL); - setup_revisions(2, argv, &rev, NULL); + setup_revisions(0, NULL, &rev, s->reference); rev.diffopt.output_format |= DIFF_FORMAT_PATCH; rev.diffopt.detect_rename = 1; run_diff_index(&rev, 1);
-- 1.4.3.3.ga02d-dirty