From: Pranit Bauva <pranit.bauva@gmail.com> To: git@vger.kernel.org Subject: [PATCH v12 13/13] bisect--helper: `bisect_start` shell function partially in C Date: Wed, 10 Aug 2016 21:57:19 +0000 [thread overview] Message-ID: <010201567675ae72-0e0eeb11-e488-4562-8837-2443cbfe0792-000000@eu-west-1.amazonses.com> (raw) In-Reply-To: <010201567675adc1-17e27495-6b36-40d1-836d-814da029fcc4-000000@eu-west-1.amazonses.com> Reimplement the `bisect_start` shell function partially in C and add `bisect-start` subcommand to `git bisect--helper` to call it from git-bisect.sh . The last part is not converted because it calls another shell function. `bisect_start` shell function will be completed after the `bisect_next` shell function is ported in C. Using `--bisect-start` subcommand is a temporary measure to port shell function in C so as to use the existing test suite. As more functions are ported, this subcommand will be retired and will be called by some other methods. Mentored-by: Lars Schneider <larsxschneider@gmail.com> Mentored-by: Christian Couder <chriscool@tuxfamily.org> Signed-off-by: Pranit Bauva <pranit.bauva@gmail.com> --- builtin/bisect--helper.c | 254 ++++++++++++++++++++++++++++++++++++++++++++++- git-bisect.sh | 133 +------------------------ 2 files changed, 254 insertions(+), 133 deletions(-) diff --git a/builtin/bisect--helper.c b/builtin/bisect--helper.c index f912010..80116ba 100644 --- a/builtin/bisect--helper.c +++ b/builtin/bisect--helper.c @@ -7,6 +7,7 @@ #include "argv-array.h" #include "run-command.h" #include "prompt.h" +#include "quote.h" static GIT_PATH_FUNC(git_path_bisect_terms, "BISECT_TERMS") static GIT_PATH_FUNC(git_path_bisect_expected_rev, "BISECT_EXPECTED_REV") @@ -27,6 +28,8 @@ static const char * const git_bisect_helper_usage[] = { N_("git bisect--helper --bisect-check-and-set-terms <command> <TERM_GOOD> <TERM_BAD>"), N_("git bisect--helper --bisect-next-check [<term>] <TERM_GOOD> <TERM_BAD"), N_("git bisect--helper --bisect-terms [--term-good | --term-old | --term-bad | --term-new]"), + N_("git bisect--helper --bisect start [--term-{old,good}=<term> --term-{new,bad}=<term>]" + "[--no-checkout] [<bad> [<good>...]] [--] [<paths>...]"), NULL }; @@ -431,6 +434,244 @@ static int bisect_terms(struct bisect_terms *terms, const char **argv, int argc) return 0; } +static int bisect_start(struct bisect_terms *terms, int no_checkout, + const char **argv, int argc) +{ + int i, has_double_dash = 0, must_write_terms = 0, bad_seen = 0; + int flags, pathspec_pos; + struct string_list revs = STRING_LIST_INIT_DUP; + struct string_list states = STRING_LIST_INIT_DUP; + struct strbuf start_head = STRBUF_INIT; + struct strbuf bisect_names = STRBUF_INIT; + struct strbuf orig_args = STRBUF_INIT; + const char *head; + unsigned char sha1[20]; + FILE *fp; + struct object_id oid; + + if (is_bare_repository()) + no_checkout = 1; + + for (i = 0; i < argc; i++) { + char *commit_id = xstrfmt("%s^{commit}", argv[i]); + if (!strcmp(argv[i], "--")) { + has_double_dash = 1; + break; + } + else if (!strcmp(argv[i], "--no-checkout")) + no_checkout = 1; + else if (!strcmp(argv[i], "--term-good") || + !strcmp(argv[i], "--term-old")) { + must_write_terms = 1; + strbuf_reset(&terms->term_good); + strbuf_addstr(&terms->term_good, argv[++i]); + } + else if (skip_prefix(argv[i], "--term-good=", &argv[i])) { + must_write_terms = 1; + strbuf_reset(&terms->term_good); + strbuf_addstr(&terms->term_good, argv[i]); + } + else if (skip_prefix(argv[i], "--term-old=", &argv[i])) { + must_write_terms = 1; + strbuf_reset(&terms->term_good); + strbuf_addstr(&terms->term_good, argv[i]); + } + else if (!strcmp(argv[i], "--term-bad") || + !strcmp(argv[i], "--term-new")) { + must_write_terms = 1; + strbuf_reset(&terms->term_bad); + strbuf_addstr(&terms->term_bad, argv[++i]); + } + else if (skip_prefix(argv[i], "--term-bad=", &argv[i])) { + must_write_terms = 1; + strbuf_reset(&terms->term_bad); + strbuf_addstr(&terms->term_bad, argv[i]); + } + else if (skip_prefix(argv[i], "--term-new=", &argv[i])) { + must_write_terms = 1; + strbuf_reset(&terms->term_good); + strbuf_addstr(&terms->term_good, argv[i]); + } + else if (starts_with(argv[i], "--") && + !one_of(argv[i], "--term-good", "--term-bad", NULL)) { + string_list_clear(&revs, 0); + string_list_clear(&states, 0); + die(_("unrecognised option: '%s'"), argv[i]); + } + else if (get_oid(argv[i], &oid) && !has_double_dash) { + string_list_clear(&revs, 0); + string_list_clear(&states, 0); + free(commit_id); + die(_("'%s' does not appear to be a valid revision"), argv[i]); + } + else { + free(commit_id); + string_list_append(&revs, oid_to_hex(&oid)); + } + } + pathspec_pos = i; + + /* + * The user ran "git bisect start <sha1> <sha1>", hence did not + * explicitly specify the terms, but we are already starting to + * set references named with the default terms, and won't be able + * to change afterwards. + */ + must_write_terms |= !!revs.nr; + for (i = 0; i < revs.nr; i++) { + if (bad_seen) + string_list_append(&states, terms->term_good.buf); + else { + bad_seen = 1; + string_list_append(&states, terms->term_bad.buf); + } + } + + /* + * Verify HEAD + */ + head = resolve_ref_unsafe("HEAD", 0, sha1, &flags); + if (!head) { + if (get_sha1("HEAD", sha1)) { + string_list_clear(&revs, 0); + string_list_clear(&states, 0); + die(_("Bad HEAD - I need a HEAD")); + } + } + if (!is_empty_or_missing_file(git_path_bisect_start())) { + /* Reset to the rev from where we started */ + strbuf_read_file(&start_head, git_path_bisect_start(), 0); + strbuf_trim(&start_head); + if (!no_checkout) { + struct argv_array argv = ARGV_ARRAY_INIT; + argv_array_pushl(&argv, "checkout", start_head.buf, + "--", NULL); + if (run_command_v_opt(argv.argv, RUN_GIT_CMD)) { + error(_("checking out '%s' failed. Try 'git " + "bisect start <valid-branch>'."), + start_head.buf); + strbuf_release(&start_head); + string_list_clear(&revs, 0); + string_list_clear(&states, 0); + return -1; + } + } + } else { + if (starts_with(head, "refs/heads/") || + !get_oid_hex(head, &oid) || ref_exists(head)) { + /* + * This error message should only be triggered by + * cogito usage, and cogito users should understand + * it relates to cg-seek. + */ + if (!is_empty_or_missing_file(git_path_head_name())) { + strbuf_release(&start_head); + string_list_clear(&revs, 0); + string_list_clear(&states, 0); + die(_("won't bisect on cg-seek'ed tree")); + } + if (starts_with(head, "refs/heads/")) { + strbuf_reset(&start_head); + strbuf_addstr(&start_head, head + 11); + } + else { + strbuf_reset(&start_head); + strbuf_addstr(&start_head, sha1_to_hex(sha1)); + } + } else { + strbuf_release(&start_head); + string_list_clear(&revs, 0); + string_list_clear(&states, 0); + die(_("Bad HEAD - strange symbolic ref")); + } + } + + /* + * Get rid of any old bisect state. + */ + if (bisect_clean_state()) { + return -1; + } + /* + * In case of mistaken revs or checkout error, or signals received, + * "bisect_auto_next" below may exit or misbehave. + * We have to trap this to be able to clean up using + * "bisect_clean_state". + */ + + /* + * Write new start state + */ + if (write_file(git_path_bisect_start(), "%s\n", start_head.buf)) { + bisect_clean_state(); + strbuf_release(&start_head); + string_list_clear(&revs, 0); + string_list_clear(&states, 0); + return -1; + } + + if (no_checkout) { + get_oid(start_head.buf, &oid); + if (update_ref(NULL, "BISECT_HEAD", oid.hash, NULL, 0, + UPDATE_REFS_MSG_ON_ERR)) { + bisect_clean_state(); + strbuf_release(&start_head); + string_list_clear(&revs, 0); + string_list_clear(&states, 0); + return -1; + } + } + strbuf_release(&start_head); + + if (pathspec_pos < argc - 1) + sq_quote_argv(&bisect_names, argv + pathspec_pos, 0); + write_file(git_path_bisect_names(), "%s\n", bisect_names.buf); + strbuf_release(&bisect_names); + + for (i = 0; i < states.nr; i++) { + if (bisect_write(states.items[i].string, + revs.items[i].string, terms, 1)) { + bisect_clean_state(); + string_list_clear(&revs, 0); + string_list_clear(&states, 0); + return -1; + } + } + string_list_clear(&revs, 0); + string_list_clear(&states, 0); + + if (must_write_terms) + if (write_terms(terms->term_bad.buf, terms->term_good.buf)) { + bisect_clean_state(); + return -1; + } + + fp = fopen(git_path_bisect_log(), "a"); + if (!fp) { + bisect_clean_state(); + return -1; + } + if (fprintf(fp, "git bisect start") < 1) { + bisect_clean_state(); + return -1; + } + sq_quote_argv(&orig_args, argv, 0); + if (fprintf(fp, "%s", orig_args.buf) < 0) { + bisect_clean_state(); + strbuf_release(&orig_args); + return -1; + } + strbuf_release(&orig_args); + if (fprintf(fp, "\n") < 1) { + fclose(fp); + bisect_clean_state(); + return -1; + } + fclose(fp); + + return 0; +} + int cmd_bisect__helper(int argc, const char **argv, const char *prefix) { enum { @@ -442,7 +683,8 @@ int cmd_bisect__helper(int argc, const char **argv, const char *prefix) BISECT_WRITE, CHECK_AND_SET_TERMS, BISECT_NEXT_CHECK, - BISECT_TERMS + BISECT_TERMS, + BISECT_START } cmdmode = 0; int no_checkout = 0, res = 0; struct option options[] = { @@ -464,6 +706,8 @@ int cmd_bisect__helper(int argc, const char **argv, const char *prefix) N_("check whether bad or good terms exist"), BISECT_NEXT_CHECK), OPT_CMDMODE(0, "bisect-terms", &cmdmode, N_("print out the bisect terms"), BISECT_TERMS), + OPT_CMDMODE(0, "bisect-start", &cmdmode, + N_("start the bisect session"), BISECT_START), OPT_BOOL(0, "no-checkout", &no_checkout, N_("update BISECT_HEAD instead of checking out the current commit")), OPT_END() @@ -472,7 +716,8 @@ int cmd_bisect__helper(int argc, const char **argv, const char *prefix) bisect_terms_init(&terms); argc = parse_options(argc, argv, prefix, options, - git_bisect_helper_usage, PARSE_OPT_KEEP_UNKNOWN); + git_bisect_helper_usage, + PARSE_OPT_KEEP_DASHDASH | PARSE_OPT_KEEP_UNKNOWN); if (!cmdmode) usage_with_options(git_bisect_helper_usage, options); @@ -526,6 +771,11 @@ int cmd_bisect__helper(int argc, const char **argv, const char *prefix) die(_("--bisect-terms requires 0 or 1 argument")); res = bisect_terms(&terms, argv, argc); break; + case BISECT_START: + strbuf_addstr(&terms.term_good, "good"); + strbuf_addstr(&terms.term_bad, "bad"); + res = bisect_start(&terms, no_checkout, argv, argc); + break; default: die("BUG: unknown subcommand '%d'", cmdmode); } diff --git a/git-bisect.sh b/git-bisect.sh index aea97c5f..ee504ca 100755 --- a/git-bisect.sh +++ b/git-bisect.sh @@ -72,122 +72,7 @@ bisect_autostart() { } bisect_start() { - # - # Check for one bad and then some good revisions. - # - has_double_dash=0 - for arg; do - case "$arg" in --) has_double_dash=1; break ;; esac - done - orig_args=$(git rev-parse --sq-quote "$@") - bad_seen=0 - eval='' - must_write_terms=0 - revs='' - if test "z$(git rev-parse --is-bare-repository)" != zfalse - then - mode=--no-checkout - else - mode='' - fi - while [ $# -gt 0 ]; do - arg="$1" - case "$arg" in - --) - shift - break - ;; - --no-checkout) - mode=--no-checkout - shift ;; - --term-good|--term-old) - shift - must_write_terms=1 - TERM_GOOD=$1 - shift ;; - --term-good=*|--term-old=*) - must_write_terms=1 - TERM_GOOD=${1#*=} - shift ;; - --term-bad|--term-new) - shift - must_write_terms=1 - TERM_BAD=$1 - shift ;; - --term-bad=*|--term-new=*) - must_write_terms=1 - TERM_BAD=${1#*=} - shift ;; - --*) - die "$(eval_gettext "unrecognised option: '\$arg'")" ;; - *) - rev=$(git rev-parse -q --verify "$arg^{commit}") || { - test $has_double_dash -eq 1 && - die "$(eval_gettext "'\$arg' does not appear to be a valid revision")" - break - } - revs="$revs $rev" - shift - ;; - esac - done - - for rev in $revs - do - # The user ran "git bisect start <sha1> - # <sha1>", hence did not explicitly specify - # the terms, but we are already starting to - # set references named with the default terms, - # and won't be able to change afterwards. - must_write_terms=1 - - case $bad_seen in - 0) state=$TERM_BAD ; bad_seen=1 ;; - *) state=$TERM_GOOD ;; - esac - eval="$eval git bisect--helper --bisect-write '$state' '$rev' '$TERM_GOOD' '$TERM_BAD' 'nolog' &&" - done - # - # Verify HEAD. - # - head=$(GIT_DIR="$GIT_DIR" git symbolic-ref -q HEAD) || - head=$(GIT_DIR="$GIT_DIR" git rev-parse --verify HEAD) || - die "$(gettext "Bad HEAD - I need a HEAD")" - - # - # Check if we are bisecting. - # - start_head='' - if test -s "$GIT_DIR/BISECT_START" - then - # Reset to the rev from where we started. - start_head=$(cat "$GIT_DIR/BISECT_START") - if test "z$mode" != "z--no-checkout" - then - git checkout "$start_head" -- || - die "$(eval_gettext "Checking out '\$start_head' failed. Try 'git bisect reset <valid-branch>'.")" - fi - else - # Get rev from where we start. - case "$head" in - refs/heads/*|$_x40) - # This error message should only be triggered by - # cogito usage, and cogito users should understand - # it relates to cg-seek. - [ -s "$GIT_DIR/head-name" ] && - die "$(gettext "won't bisect on cg-seek'ed tree")" - start_head="${head#refs/heads/}" - ;; - *) - die "$(gettext "Bad HEAD - strange symbolic ref")" - ;; - esac - fi - - # - # Get rid of any old bisect state. - # - git bisect--helper --bisect-clean-state || exit + git bisect--helper --bisect-start $@ || exit # # Change state. @@ -198,24 +83,10 @@ bisect_start() { # trap 'git bisect--helper --bisect-clean-state' 0 trap 'exit 255' 1 2 3 15 - - # - # Write new start state. - # - echo "$start_head" >"$GIT_DIR/BISECT_START" && { - test "z$mode" != "z--no-checkout" || - git update-ref --no-deref BISECT_HEAD "$start_head" - } && - git rev-parse --sq-quote "$@" >"$GIT_DIR/BISECT_NAMES" && - eval "$eval true" && - if test $must_write_terms -eq 1 - then - git bisect--helper --write-terms "$TERM_BAD" "$TERM_GOOD" - fi && - echo "git bisect start$orig_args" >>"$GIT_DIR/BISECT_LOG" || exit # # Check if we can proceed to the next bisect state. # + get_terms bisect_auto_next trap '-' 0 -- https://github.com/git/git/pull/281
next prev parent reply other threads:[~2016-08-10 22:12 UTC|newest] Thread overview: 320+ messages / expand[flat|nested] mbox.gz Atom feed top 2016-07-12 22:35 [PATCH 0/9] Resend of gitster/pb/bisect Pranit Bauva 2016-07-12 22:35 ` [PATCH 1/9] bisect--helper: use OPT_CMDMODE instead of OPT_BOOL Pranit Bauva 2016-07-12 22:35 ` [PATCH 2/9] bisect: rewrite `check_term_format` shell function in C Pranit Bauva 2016-07-12 22:35 ` [PATCH 3/9] bisect--helper: `write_terms` " Pranit Bauva 2016-07-12 22:35 ` [PATCH 4/9] bisect--helper: `bisect_clean_state` " Pranit Bauva 2016-07-12 22:35 ` [PATCH 5/9] t6030: explicitly test for bisection cleanup Pranit Bauva 2016-07-12 22:35 ` [PATCH 6/9] wrapper: move is_empty_file() and rename it as is_empty_or_missing_file() Pranit Bauva 2016-07-12 22:35 ` [PATCH 7/9] bisect--helper: `bisect_reset` shell function in C Pranit Bauva 2016-07-12 22:35 ` [PATCH 8/9] bisect--helper: `is_expected_rev` & `check_expected_revs` " Pranit Bauva 2016-07-12 22:35 ` [PATCH 9/9] bisect--helper: `bisect_write` " Pranit Bauva 2016-07-13 7:47 ` [PATCH 0/9] Resend of gitster/pb/bisect Christian Couder 2016-07-20 16:00 ` Pranit Bauva 2016-07-20 21:47 ` [PATCH v10 01/12] bisect--helper: use OPT_CMDMODE instead of OPT_BOOL Pranit Bauva 2016-07-20 21:47 ` [PATCH v10 07/12] bisect--helper: `bisect_reset` shell function in C Pranit Bauva 2016-07-20 21:47 ` [PATCH v10 11/12] bisect--helper: `bisect_next_check` " Pranit Bauva 2016-07-20 21:47 ` [PATCH v10 03/12] bisect--helper: `write_terms` " Pranit Bauva 2016-07-20 21:47 ` [PATCH v10 08/12] bisect--helper: `is_expected_rev` & `check_expected_revs` " Pranit Bauva 2016-07-20 21:47 ` [PATCH v10 12/12] bisect--helper: `get_terms` & `bisect_terms` " Pranit Bauva 2016-07-22 2:29 ` Torsten Bögershausen 2016-07-22 14:07 ` Pranit Bauva 2016-07-25 16:53 ` Junio C Hamano 2016-07-25 21:28 ` Christian Couder 2016-07-26 1:42 ` Torsten Bögershausen 2016-07-26 17:32 ` Junio C Hamano 2016-07-27 4:20 ` Pranit Bauva 2016-07-27 16:13 ` Junio C Hamano 2016-07-20 21:47 ` [PATCH v10 02/12] bisect: rewrite `check_term_format` " Pranit Bauva 2016-07-20 21:47 ` [PATCH v10 05/12] t6030: explicitly test for bisection cleanup Pranit Bauva 2016-07-20 21:47 ` [PATCH v10 06/12] wrapper: move is_empty_file() and rename it as is_empty_or_missing_file() Pranit Bauva 2016-07-20 21:47 ` [PATCH v10 10/12] bisect--helper: `check_and_set_terms` shell function in C Pranit Bauva 2016-07-20 21:47 ` [PATCH v10 04/12] bisect--helper: `bisect_clean_state` " Pranit Bauva 2016-07-20 21:47 ` [PATCH v10 09/12] bisect--helper: `bisect_write` " Pranit Bauva 2016-07-31 9:21 ` [RFC/PATCH v11 01/13] bisect--helper: use OPT_CMDMODE instead of OPT_BOOL Pranit Bauva 2016-07-31 9:21 ` [RFC/PATCH v11 12/13] bisect--helper: `get_terms` & `bisect_terms` shell function in C Pranit Bauva 2016-08-02 19:22 ` Junio C Hamano 2016-08-03 20:33 ` Pranit Bauva 2016-07-31 9:21 ` [RFC/PATCH v11 03/13] bisect--helper: `write_terms` " Pranit Bauva 2016-08-02 17:38 ` Junio C Hamano 2016-08-03 20:21 ` Pranit Bauva 2016-08-04 15:39 ` Junio C Hamano 2016-07-31 9:21 ` [RFC/PATCH v11 06/13] wrapper: move is_empty_file() and rename it as is_empty_or_missing_file() Pranit Bauva 2016-07-31 9:21 ` [RFC/PATCH v11 13/13] bisect--helper: `bisect_start` shell function partially in C Pranit Bauva 2016-08-02 20:19 ` Junio C Hamano 2016-08-03 20:49 ` Pranit Bauva 2016-07-31 9:21 ` [RFC/PATCH v11 07/13] bisect--helper: `bisect_reset` shell function " Pranit Bauva 2016-08-02 18:44 ` Junio C Hamano 2016-07-31 9:21 ` [RFC/PATCH v11 05/13] t6030: explicitly test for bisection cleanup Pranit Bauva 2016-07-31 9:21 ` [RFC/PATCH v11 11/13] bisect--helper: `bisect_next_check` shell function in C Pranit Bauva 2016-08-02 19:17 ` Junio C Hamano 2016-08-03 20:33 ` Pranit Bauva 2016-07-31 9:21 ` [RFC/PATCH v11 04/13] bisect--helper: `bisect_clean_state` " Pranit Bauva 2016-08-02 17:46 ` Junio C Hamano 2016-08-03 20:27 ` Pranit Bauva 2016-08-04 15:45 ` Junio C Hamano 2016-08-04 16:07 ` Pranit Bauva 2016-08-04 16:50 ` Junio C Hamano 2016-08-04 16:57 ` Pranit Bauva 2016-07-31 9:21 ` [RFC/PATCH v11 10/13] bisect--helper: `check_and_set_terms` " Pranit Bauva 2016-08-02 18:53 ` Junio C Hamano 2016-08-03 20:29 ` Pranit Bauva 2016-07-31 9:21 ` [RFC/PATCH v11 02/13] bisect: rewrite `check_term_format` " Pranit Bauva 2016-08-02 17:31 ` Junio C Hamano 2016-08-03 20:20 ` Pranit Bauva 2016-07-31 9:21 ` [RFC/PATCH v11 08/13] bisect--helper: `is_expected_rev` & `check_expected_revs` " Pranit Bauva 2016-08-02 18:46 ` Junio C Hamano 2016-07-31 9:21 ` [RFC/PATCH v11 09/13] bisect--helper: `bisect_write` " Pranit Bauva 2016-08-02 20:25 ` Junio C Hamano 2016-08-02 22:17 ` Junio C Hamano 2016-08-03 20:52 ` Pranit Bauva 2016-08-03 20:51 ` Pranit Bauva 2016-08-02 17:25 ` [RFC/PATCH v11 01/13] bisect--helper: use OPT_CMDMODE instead of OPT_BOOL Junio C Hamano 2016-08-10 21:57 ` [PATCH v12 " Pranit Bauva 2016-08-10 21:57 ` [PATCH v12 04/13] bisect--helper: `bisect_clean_state` shell function in C Pranit Bauva 2016-08-12 19:24 ` Junio C Hamano 2016-08-10 21:57 ` Pranit Bauva [this message] 2016-08-12 19:25 ` [PATCH v12 13/13] bisect--helper: `bisect_start` shell function partially " Junio C Hamano 2016-08-13 6:33 ` Pranit Bauva 2016-08-13 7:34 ` Christian Couder 2016-08-13 13:50 ` Pranit Bauva 2016-08-10 21:57 ` [PATCH v12 02/13] bisect: rewrite `check_term_format` shell function " Pranit Bauva 2016-08-10 21:57 ` [PATCH v12 11/13] bisect--helper: `bisect_next_check` & bisect_voc " Pranit Bauva 2016-08-12 18:11 ` Junio C Hamano 2016-08-12 18:49 ` Junio C Hamano 2016-08-13 6:32 ` Pranit Bauva 2016-08-10 21:57 ` [PATCH v12 10/13] bisect--helper: `check_and_set_terms` " Pranit Bauva 2016-08-10 21:57 ` [PATCH v12 08/13] bisect--helper: `is_expected_rev` & `check_expected_revs` " Pranit Bauva 2016-08-10 21:57 ` [PATCH v12 07/13] bisect--helper: `bisect_reset` " Pranit Bauva 2016-08-10 21:57 ` [PATCH v12 06/13] wrapper: move is_empty_file() and rename it as is_empty_or_missing_file() Pranit Bauva 2016-08-10 21:57 ` [PATCH v12 12/13] bisect--helper: `get_terms` & `bisect_terms` shell function in C Pranit Bauva 2016-08-10 21:57 ` [PATCH v12 03/13] bisect--helper: `write_terms` " Pranit Bauva 2016-08-10 21:57 ` [PATCH v12 05/13] t6030: explicitly test for bisection cleanup Pranit Bauva 2016-08-10 21:57 ` [PATCH v12 09/13] bisect--helper: `bisect_write` shell function in C Pranit Bauva 2016-08-10 22:19 ` [PATCH v12 01/13] bisect--helper: use OPT_CMDMODE instead of OPT_BOOL Pranit Bauva 2016-08-19 20:32 ` [PATCH v13 " Pranit Bauva 2016-08-19 20:32 ` [PATCH v13 04/13] bisect--helper: `bisect_clean_state` shell function in C Pranit Bauva 2016-08-21 11:18 ` Pranit Bauva 2016-08-19 20:32 ` [PATCH v13 10/13] bisect--helper: `check_and_set_terms` " Pranit Bauva 2016-08-19 20:32 ` [PATCH v13 03/13] bisect--helper: `write_terms` " Pranit Bauva 2016-08-19 20:32 ` [PATCH v13 11/13] bisect--helper: `bisect_next_check` & bisect_voc " Pranit Bauva 2016-08-19 20:32 ` [PATCH v13 13/13] bisect--helper: `bisect_start` shell function partially " Pranit Bauva 2016-08-19 20:32 ` [PATCH v13 02/13] bisect: rewrite `check_term_format` shell function " Pranit Bauva 2016-08-19 20:32 ` [PATCH v13 09/13] bisect--helper: `bisect_write` " Pranit Bauva 2016-08-19 20:32 ` [PATCH v13 08/13] bisect--helper: `is_expected_rev` & `check_expected_revs` " Pranit Bauva 2016-08-19 20:32 ` [PATCH v13 12/13] bisect--helper: `get_terms` & `bisect_terms` " Pranit Bauva 2016-08-19 20:32 ` [PATCH v13 05/13] t6030: explicitly test for bisection cleanup Pranit Bauva 2016-08-19 20:32 ` [PATCH v13 06/13] wrapper: move is_empty_file() and rename it as is_empty_or_missing_file() Pranit Bauva 2016-08-19 20:32 ` [PATCH v13 07/13] bisect--helper: `bisect_reset` shell function in C Pranit Bauva 2016-08-21 11:14 ` [PATCH v13 01/13] bisect--helper: use OPT_CMDMODE instead of OPT_BOOL Pranit Bauva 2016-08-23 11:53 ` [PATCH v14 01/27] " Pranit Bauva 2016-08-23 11:53 ` [PATCH v14 24/27] bisect--helper: retire `--check-and-set-terms` subcommand Pranit Bauva 2016-08-23 11:53 ` [PATCH v14 27/27] bisect--helper: remove the dequote in bisect_start() Pranit Bauva 2016-08-23 11:53 ` [PATCH v14 13/27] bisect--helper: `bisect_start` shell function partially in C Pranit Bauva 2016-08-25 19:02 ` Junio C Hamano 2016-08-25 19:43 ` Junio C Hamano 2016-08-27 19:47 ` Pranit Bauva 2016-08-27 20:53 ` Junio C Hamano 2016-08-23 11:53 ` [PATCH v14 19/27] bisect--helper: retire `--check-expected-revs` subcommand Pranit Bauva 2016-08-23 11:53 ` [PATCH v14 14/27] bisect--helper: `bisect_next` and `bisect_auto_next` shell function in C Pranit Bauva 2016-08-25 20:30 ` Junio C Hamano 2016-08-30 18:25 ` Pranit Bauva 2016-08-30 18:44 ` Pranit Bauva 2016-08-30 19:33 ` Junio C Hamano 2016-08-30 20:17 ` Pranit Bauva 2016-08-23 11:53 ` [PATCH v14 10/27] bisect--helper: `check_and_set_terms` " Pranit Bauva 2016-08-23 11:53 ` [PATCH v14 12/27] bisect--helper: `get_terms` & `bisect_terms` " Pranit Bauva 2016-08-25 18:05 ` Junio C Hamano 2016-08-27 9:48 ` Pranit Bauva 2016-08-29 17:15 ` Junio C Hamano 2016-08-23 11:53 ` [PATCH v14 23/27] bisect--helper: retire `--bisect-write` subcommand Pranit Bauva 2016-08-23 11:53 ` [PATCH v14 09/27] bisect--helper: `bisect_write` shell function in C Pranit Bauva 2016-08-24 22:30 ` Junio C Hamano 2016-08-27 9:33 ` Pranit Bauva 2016-08-27 21:22 ` Junio C Hamano 2016-08-30 6:42 ` Pranit Bauva 2016-08-23 11:53 ` [PATCH v14 21/27] bisect--helper: `bisect_log` " Pranit Bauva 2016-08-26 23:07 ` Junio C Hamano 2016-08-27 20:16 ` Pranit Bauva 2016-08-23 11:53 ` [PATCH v14 05/27] t6030: explicitly test for bisection cleanup Pranit Bauva 2016-08-23 11:53 ` [PATCH v14 07/27] bisect--helper: `bisect_reset` shell function in C Pranit Bauva 2016-08-24 21:12 ` Junio C Hamano 2016-08-26 13:46 ` Pranit Bauva 2016-08-26 16:29 ` Junio C Hamano 2016-08-27 10:52 ` Pranit Bauva 2016-08-29 17:06 ` Junio C Hamano 2016-08-23 11:53 ` [PATCH v14 18/27] bisect--helper: `bisect_state` & `bisect_head` " Pranit Bauva 2016-08-23 11:53 ` [PATCH v14 06/27] wrapper: move is_empty_file() and rename it as is_empty_or_missing_file() Pranit Bauva 2016-08-23 11:53 ` [PATCH v14 16/27] bisect--helper: retire `--next-all` subcommand Pranit Bauva 2016-08-23 11:53 ` [PATCH v14 11/27] bisect--helper: `bisect_next_check` & bisect_voc shell function in C Pranit Bauva 2016-08-24 22:40 ` Junio C Hamano 2016-08-27 9:35 ` Pranit Bauva 2016-08-23 11:53 ` [PATCH v14 02/27] bisect: rewrite `check_term_format` " Pranit Bauva 2016-08-23 11:53 ` [PATCH v14 25/27] bisect--helper: retire `--bisect-autostart` subcommand Pranit Bauva 2016-08-23 11:53 ` [PATCH v14 04/27] bisect--helper: `bisect_clean_state` shell function in C Pranit Bauva 2016-08-24 20:58 ` Junio C Hamano 2016-08-23 11:53 ` [PATCH v14 26/27] bisect--helper: retire `--bisect-auto-next` subcommand Pranit Bauva 2016-08-23 11:53 ` [PATCH v14 22/27] bisect--helper: `bisect_replay` shell function in C Pranit Bauva 2016-08-26 23:24 ` Junio C Hamano 2016-08-23 11:53 ` [PATCH v14 03/27] bisect--helper: `write_terms` " Pranit Bauva 2016-08-23 11:53 ` [PATCH v14 08/27] bisect--helper: `is_expected_rev` & `check_expected_revs` " Pranit Bauva 2016-08-24 22:13 ` Junio C Hamano 2016-08-27 9:14 ` Pranit Bauva 2016-08-29 17:17 ` Junio C Hamano 2016-08-23 11:53 ` [PATCH v14 15/27] bisect--helper: retire `--bisect-clean-state` subcommand Pranit Bauva 2016-08-26 20:56 ` Junio C Hamano 2016-08-23 11:53 ` [PATCH v14 20/27] bisect--helper: retire `--write-terms` subcommand Pranit Bauva 2016-08-23 11:53 ` [PATCH v14 17/27] bisect--helper: `bisect_autostart` shell function in C Pranit Bauva 2016-08-26 21:09 ` Junio C Hamano 2016-08-23 20:28 ` [PATCH v14 01/27] bisect--helper: use OPT_CMDMODE instead of OPT_BOOL Junio C Hamano 2016-08-23 21:07 ` Pranit Bauva 2016-08-23 21:24 ` Pranit Bauva 2016-10-14 14:14 ` [PATCH v15 " Pranit Bauva 2016-10-14 14:14 ` [PATCH v15 02/27] bisect: rewrite `check_term_format` shell function in C Pranit Bauva 2016-11-14 22:20 ` Stephan Beyer 2016-11-15 5:16 ` Pranit Bauva 2016-10-14 14:14 ` [PATCH v15 03/27] bisect--helper: `write_terms` " Pranit Bauva 2016-10-14 14:14 ` [PATCH v15 05/27] t6030: explicitly test for bisection cleanup Pranit Bauva 2016-10-14 14:14 ` [PATCH v15 13/27] bisect--helper: `bisect_start` shell function partially in C Pranit Bauva 2016-11-15 23:19 ` Stephan Beyer 2016-11-16 17:09 ` Pranit Bauva 2016-11-20 20:01 ` Stephan Beyer 2016-11-20 20:19 ` Stephan Beyer 2016-10-14 14:14 ` [PATCH v15 26/27] bisect--helper: retire `--bisect-auto-next` subcommand Pranit Bauva 2016-10-14 14:14 ` [PATCH v15 09/27] bisect--helper: `bisect_write` shell function in C Pranit Bauva 2016-11-17 9:40 ` Stephan Beyer 2016-12-06 21:32 ` Pranit Bauva 2016-10-14 14:14 ` [PATCH v15 19/27] bisect--helper: `bisect_state` & `bisect_head` " Pranit Bauva 2016-11-22 0:12 ` Stephan Beyer 2016-12-06 22:40 ` Pranit Bauva 2016-12-06 23:54 ` Stephan Beyer 2016-12-08 6:43 ` Pranit Bauva 2016-10-14 14:14 ` [PATCH v15 24/27] bisect--helper: retire `--bisect-write` subcommand Pranit Bauva 2016-10-14 14:14 ` [PATCH v15 16/27] bisect--helper: retire `--bisect-clean-state` subcommand Pranit Bauva 2016-10-14 14:14 ` [PATCH v15 08/27] bisect--helper: `is_expected_rev` & `check_expected_revs` shell function in C Pranit Bauva 2016-11-16 23:47 ` Stephan Beyer 2016-12-06 19:33 ` Pranit Bauva 2016-12-16 19:00 ` Pranit Bauva 2016-12-17 19:42 ` Stephan Beyer 2016-12-16 19:35 ` Pranit Bauva 2016-12-17 19:55 ` Stephan Beyer 2016-10-14 14:14 ` [PATCH v15 06/27] wrapper: move is_empty_file() and rename it as is_empty_or_missing_file() Pranit Bauva 2016-10-14 14:14 ` [PATCH v15 15/27] bisect--helper: `bisect_next` and `bisect_auto_next` shell function in C Pranit Bauva 2016-11-20 20:01 ` Stephan Beyer 2016-12-31 10:23 ` Pranit Bauva 2016-11-21 21:35 ` Stephan Beyer 2016-12-31 10:43 ` Pranit Bauva 2017-01-01 16:27 ` Stephan Beyer 2017-01-01 17:41 ` Pranit Bauva 2016-10-14 14:14 ` [PATCH v15 12/27] bisect--helper: `get_terms` & `bisect_terms` " Pranit Bauva 2016-11-17 21:32 ` Stephan Beyer 2016-12-06 21:14 ` Pranit Bauva 2016-12-06 23:05 ` Stephan Beyer 2016-12-07 12:06 ` Pranit Bauva 2016-10-14 14:14 ` [PATCH v15 18/27] bisect--helper: `bisect_autostart` " Pranit Bauva 2016-11-20 20:15 ` Stephan Beyer 2016-12-06 19:47 ` Pranit Bauva 2016-10-14 14:14 ` [PATCH v15 23/27] bisect--helper: `bisect_replay` " Pranit Bauva 2016-11-22 0:49 ` Stephan Beyer 2016-12-06 23:02 ` Pranit Bauva 2016-12-06 23:20 ` Stephan Beyer 2016-12-06 23:40 ` Stephan Beyer 2016-12-07 13:15 ` Christian Couder 2016-10-14 14:14 ` [PATCH v15 20/27] bisect--helper: retire `--check-expected-revs` subcommand Pranit Bauva 2016-10-14 14:14 ` [PATCH v15 27/27] bisect--helper: remove the dequote in bisect_start() Pranit Bauva 2016-10-14 14:14 ` [PATCH v15 04/27] bisect--helper: `bisect_clean_state` shell function in C Pranit Bauva 2016-11-15 21:09 ` Stephan Beyer 2016-11-15 21:40 ` Junio C Hamano 2016-11-15 21:53 ` Stephan Beyer 2016-11-16 16:49 ` Pranit Bauva 2016-10-14 14:14 ` [PATCH v15 07/27] bisect--helper: `bisect_reset` " Pranit Bauva 2016-11-16 23:23 ` Stephan Beyer 2016-11-17 3:56 ` Pranit Bauva 2016-10-14 14:14 ` [PATCH v15 21/27] bisect--helper: retire `--write-terms` subcommand Pranit Bauva 2016-10-14 14:14 ` [PATCH v15 17/27] bisect--helper: retire `--next-all` subcommand Pranit Bauva 2016-10-14 14:14 ` [PATCH v15 14/27] t6030: no cleanup with bad merge base Pranit Bauva 2016-10-14 21:43 ` Junio C Hamano 2016-10-15 8:46 ` Pranit Bauva 2016-10-14 14:14 ` [PATCH v15 22/27] bisect--helper: `bisect_log` shell function in C Pranit Bauva 2016-11-17 21:47 ` Stephan Beyer 2016-12-06 22:42 ` Pranit Bauva 2016-10-14 14:14 ` [PATCH v15 10/27] bisect--helper: `check_and_set_terms` " Pranit Bauva 2016-11-17 20:25 ` Stephan Beyer 2016-12-06 22:43 ` Pranit Bauva 2016-10-14 14:14 ` [PATCH v15 11/27] bisect--helper: `bisect_next_check` & bisect_voc " Pranit Bauva 2016-11-17 20:59 ` Stephan Beyer 2016-12-06 18:39 ` Pranit Bauva 2016-10-14 14:14 ` [PATCH v15 25/27] bisect--helper: retire `--bisect-autostart` subcommand Pranit Bauva 2016-10-14 15:12 ` [PATCH v15 01/27] bisect--helper: use OPT_CMDMODE instead of OPT_BOOL Pranit Bauva 2017-09-29 6:49 ` [PATCH v16 1/6] " Pranit Bauva 2017-09-29 6:49 ` [PATCH v16 5/6] t6030: explicitly test for bisection cleanup Pranit Bauva 2017-09-29 6:49 ` [PATCH v16 2/6] bisect--helper: rewrite `check_term_format` shell function in C Pranit Bauva 2017-09-29 6:49 ` [PATCH v16 3/6] bisect--helper: `write_terms` " Pranit Bauva 2017-09-29 6:49 ` [PATCH v16 4/6] bisect--helper: `bisect_clean_state` " Pranit Bauva 2017-09-29 6:49 ` [PATCH v16 6/6] bisect--helper: `is_expected_rev` & `check_expected_revs` " Pranit Bauva 2017-11-19 20:34 ` Christian Couder 2017-11-20 3:05 ` Junio C Hamano 2017-11-20 7:03 ` Christian Couder 2017-09-29 18:54 ` [PATCH v16 1/6] bisect--helper: use OPT_CMDMODE instead of OPT_BOOL Stephan Beyer 2017-09-29 21:10 ` Pranit Bauva 2017-09-30 12:59 ` Ramsay Jones 2017-10-02 13:44 ` Pranit Bauva 2017-10-03 0:48 ` Ramsay Jones 2017-10-03 3:51 ` Junio C Hamano 2017-10-03 4:35 ` Pranit Bauva 2017-10-04 2:22 ` Ramsay Jones 2017-10-04 4:07 ` Junio C Hamano 2017-10-27 15:06 ` [PATCH v16 Part II 1/8] bisect--helper: `bisect_reset` shell function in C Pranit Bauva 2017-10-27 15:06 ` [PATCH v16 Part II 2/8] bisect--helper: `bisect_write` " Pranit Bauva 2017-10-27 17:28 ` Martin Ågren 2017-10-30 17:35 ` Pranit Bauva 2018-11-23 10:13 ` Johannes Schindelin 2018-11-23 12:22 ` Martin Ågren 2018-11-26 18:18 ` Johannes Schindelin 2017-10-27 18:19 ` Junio C Hamano 2017-10-30 17:38 ` Pranit Bauva 2017-10-30 13:38 ` Stephan Beyer 2017-10-30 16:24 ` Stephan Beyer 2017-11-08 0:26 ` Ramsay Jones 2017-10-27 15:06 ` [PATCH v16 Part II 8/8] t6030: make various test to pass GETTEXT_POISON tests Pranit Bauva 2017-10-27 15:06 ` [PATCH v16 Part II 7/8] bisect--helper: `bisect_start` shell function partially in C Pranit Bauva 2017-10-30 16:51 ` Stephan Beyer 2017-10-30 17:28 ` Pranit Bauva 2018-02-16 1:22 ` SZEDER Gábor 2017-10-27 15:06 ` [PATCH v16 Part II 4/8] bisect--helper: `check_and_set_terms` shell function " Pranit Bauva 2017-11-08 0:37 ` Ramsay Jones 2017-10-27 15:06 ` [PATCH v16 Part II 6/8] bisect--helper: `get_terms` & `bisect_terms` " Pranit Bauva 2017-10-27 20:04 ` Martin Ågren 2017-10-30 17:45 ` Pranit Bauva 2017-10-30 16:34 ` Stephan Beyer 2017-10-30 17:31 ` Pranit Bauva 2017-11-08 0:59 ` Ramsay Jones 2017-10-27 15:06 ` [PATCH v16 Part II 5/8] bisect--helper: `bisect_next_check` " Pranit Bauva 2017-10-27 17:35 ` Martin Ågren 2017-10-30 17:40 ` Pranit Bauva 2017-11-08 0:48 ` Ramsay Jones 2017-11-12 19:19 ` Stephan Beyer 2017-11-12 19:27 ` Stephan Beyer 2017-11-12 20:03 ` Stephan Beyer 2017-11-13 3:56 ` Junio C Hamano 2017-10-27 15:06 ` [PATCH v16 Part II 3/8] wrapper: move is_empty_file() and rename it as is_empty_or_missing_file() Pranit Bauva 2017-10-27 15:32 ` [PATCH v16 Part II 1/8] bisect--helper: `bisect_reset` shell function in C Pranit Bauva 2017-10-27 17:40 ` Junio C Hamano 2017-10-30 17:26 ` Pranit Bauva 2017-10-30 13:22 ` Stephan Beyer 2017-10-30 17:27 ` Pranit Bauva 2017-11-08 0:07 ` Ramsay Jones 2019-01-02 15:38 ` [PATCH v17 0/7] git bisect: convert from shell to C Tanushree Tumane via GitGitGadget 2019-01-02 15:38 ` [PATCH v17 1/7] bisect--helper: `bisect_reset` shell function in C Pranit Bauva via GitGitGadget 2019-01-02 15:38 ` [PATCH v17 3/7] wrapper: move is_empty_file() and rename it as is_empty_or_missing_file() Pranit Bauva via GitGitGadget 2019-01-02 15:38 ` [PATCH v17 2/7] bisect--helper: `bisect_write` shell function in C Pranit Bauva via GitGitGadget 2019-01-02 15:38 ` [PATCH v17 4/7] bisect--helper: `check_and_set_terms` " Pranit Bauva via GitGitGadget 2019-01-02 15:38 ` [PATCH v17 5/7] bisect--helper: `bisect_next_check` " Pranit Bauva via GitGitGadget 2019-01-02 15:38 ` [PATCH v17 6/7] bisect--helper: `get_terms` & `bisect_terms` " Pranit Bauva via GitGitGadget 2019-01-02 15:38 ` [PATCH v17 7/7] bisect--helper: `bisect_start` shell function partially " Pranit Bauva via GitGitGadget 2019-01-03 1:19 ` [PATCH v17 0/7] git bisect: convert from shell to C Ramsay Jones 2019-01-07 9:15 ` TANUSHREE TUMANE 2016-10-27 16:59 ` [PATCH v15 01/27] bisect--helper: use OPT_CMDMODE instead of OPT_BOOL Junio C Hamano 2016-10-27 20:14 ` Christian Couder 2016-10-28 6:02 ` Matthieu Moy 2016-11-15 21:40 ` Stephan Beyer 2016-11-16 0:18 ` Junio C Hamano
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=010201567675ae72-0e0eeb11-e488-4562-8837-2443cbfe0792-000000@eu-west-1.amazonses.com \ --to=pranit.bauva@gmail.com \ --cc=git@vger.kernel.org \ --subject='Re: [PATCH v12 13/13] bisect--helper: `bisect_start` shell function partially in C' \ /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
Code repositories for project(s) associated with this 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).