From: Matthieu Moy <Matthieu.Moy@imag.fr>
To: gitster@pobox.com
Cc: git@vger.kernel.org, antoine.delaite@ensimag.grenoble-inp.fr,
louis--alexandre.stuber@ensimag.grenoble-inp.fr,
chriscool@tuxfamily.org, thomasxnguy@gmail.com,
valentinduperray@gmail.com, Matthieu Moy <Matthieu.Moy@imag.fr>
Subject: [PATCH v7 0/5] git bisect old/new
Date: Tue, 23 Jun 2015 14:54:39 +0200 [thread overview]
Message-ID: <1435064084-5554-1-git-send-email-Matthieu.Moy@imag.fr> (raw)
In-Reply-To: <1435006836-18182-1-git-send-email-antoine.delaite@ensimag.grenoble-inp.fr>
Hi,
I fixed a few minor issues in v6. Patch between my version and v6 is
below. I also pushed my branch here:
https://github.com/moy/git/tree/bisect-terms
Not visible in the patch below: I squashed PATCH 5 into PATCH 3 to
avoid the pattern "break stuff and then repair it".
The first two patches seem ready.
PATCH 4 (add old/new) is still buggy. When starting a bisection with
git bisect start $old $new
the command "git bisect visualize" does not work (it shows no commit).
I consider PATCH 5 as WIP, I think it would need a lot of polishing
and testing to be mergeable. I think a reasonable objective for now it
to get old/new working in the user-interface, and drop PATCH 5 from
the series when it gets merged. The existance of PATCH 5 is a very
good thing even if it doesn't get merged:
* The fact that it's possible to do it on top of the series shows that
we make the code more generic. I think it's important that
regardless of features, the code moves in the right direction.
* The patch can be taken over later by someone else.
diff --git a/bisect.c b/bisect.c
index 7492fdc..ab09650 100644
--- a/bisect.c
+++ b/bisect.c
@@ -921,7 +921,7 @@ void read_bisect_terms(const char **read_bad, const char **read_good)
FILE *fp = fopen(filename, "r");
if (!fp) {
- if (errno==2) {
+ if (errno == ENOENT) {
*read_bad = "bad";
*read_good = "good";
return;
diff --git a/git-bisect.sh b/git-bisect.sh
index 7da22b1..8ef2b94 100644
--- a/git-bisect.sh
+++ b/git-bisect.sh
@@ -541,7 +541,7 @@ get_terms () {
{
read NAME_BAD
read NAME_GOOD
- }<"$GIT_DIR/BISECT_TERMS"
+ } <"$GIT_DIR/BISECT_TERMS"
fi
}
@@ -605,8 +605,8 @@ bisect_terms () {
echo "1" >"$GIT_DIR/TERMS_DEFINED"
echo "git bisect terms $NAME_BAD $NAME_GOOD" >>"$GIT_DIR/BISECT_LOG" || exit
else
- die "$(gettext "A bisection has already started, and you can't change terms in the middle of it.
-Use 'git bisect terms' to see the current terms.
+ die "$(gettext "A bisection has already started, and you can't change terms in the middle of it.
+Use 'git bisect terms' to see the current terms.
Otherwise, to start a new bisection with new terms, please use 'git bisect reset' and set the terms before the start")"
fi ;;
*)
diff --git a/revision.c b/revision.c
index 27750ac..f22923f 100644
--- a/revision.c
+++ b/revision.c
@@ -2083,18 +2083,28 @@ extern void read_bisect_terms(const char **bad, const char **good);
static int for_each_bad_bisect_ref(const char *submodule, each_ref_fn fn, void *cb_data)
{
- char bisect_refs_path[256];
- strcpy(bisect_refs_path, "refs/bisect/");
- strcat(bisect_refs_path, name_bad);
- return for_each_ref_in_submodule(submodule, bisect_refs_path, fn, cb_data);
+ struct strbuf bisect_refs_buf = STRBUF_INIT;
+ const char *bisect_refs_str;
+ int status;
+ strbuf_addstr(&bisect_refs_buf, "refs/bisect/");
+ strbuf_addstr(&bisect_refs_buf, name_bad);
+ bisect_refs_str = strbuf_detach(&bisect_refs_buf, NULL);
+ status = for_each_ref_in_submodule(submodule, bisect_refs_str, fn, cb_data);
+ free((char *)bisect_refs_str);
+ return status;
}
static int for_each_good_bisect_ref(const char *submodule, each_ref_fn fn, void *cb_data)
{
- char bisect_refs_path[256];
- strcpy(bisect_refs_path, "refs/bisect/");
- strcat(bisect_refs_path, name_good);
- return for_each_ref_in_submodule(submodule, bisect_refs_path, fn, cb_data);
+ struct strbuf bisect_refs_buf = STRBUF_INIT;
+ const char *bisect_refs_str;
+ int status;
+ strbuf_addstr(&bisect_refs_buf, "refs/bisect/");
+ strbuf_addstr(&bisect_refs_buf, name_bad);
+ bisect_refs_str = strbuf_detach(&bisect_refs_buf, NULL);
+ status = for_each_ref_in_submodule(submodule, bisect_refs_str, fn, cb_data);
+ free((char *)bisect_refs_str);
+ return status;
}
static int handle_revision_pseudo_opt(const char *submodule,
diff --git a/t/t6030-bisect-porcelain.sh b/t/t6030-bisect-porcelain.sh
index d91116e..289dbb0 100755
--- a/t/t6030-bisect-porcelain.sh
+++ b/t/t6030-bisect-porcelain.sh
@@ -781,12 +781,12 @@ test_expect_success 'bisect start with one new and old' '
git bisect new &&
git bisect new >bisect_result &&
grep "$HASH2 is the first new commit" bisect_result &&
- git bisect log > log_to_replay.txt &&
+ git bisect log >log_to_replay.txt &&
git bisect reset
'
test_expect_success 'bisect replay with old and new' '
- git bisect replay log_to_replay.txt > bisect_result &&
+ git bisect replay log_to_replay.txt >bisect_result &&
grep "$HASH2 is the first new commit" bisect_result &&
git bisect reset
'
@@ -806,12 +806,12 @@ test_expect_success 'bisect start with one term1 and term2' '
git bisect term1 &&
git bisect term1 >bisect_result &&
grep "$HASH2 is the first term1 commit" bisect_result &&
- git bisect log > log_to_replay.txt &&
+ git bisect log >log_to_replay.txt &&
git bisect reset
'
test_expect_success 'bisect replay with term1 and term2' '
- git bisect replay log_to_replay.txt > bisect_result &&
+ git bisect replay log_to_replay.txt >bisect_result &&
grep "$HASH2 is the first term1 commit" bisect_result &&
git bisect reset
'
@@ -823,7 +823,7 @@ test_expect_success 'bisect start term1 term2' '
git bisect term1 &&
git bisect term1 >bisect_result &&
grep "$HASH2 is the first term1 commit" bisect_result &&
- git bisect log > log_to_replay.txt &&
+ git bisect log >log_to_replay.txt &&
git bisect reset
'
Subject: [PATCH v7 0/5] git bisect old/new
Hi,
I fixed a few minor issues in v6. Patch between my version and v6 is
below. I also pushed my branch here:
https://github.com/moy/git/tree/bisect-terms
diff --git a/bisect.c b/bisect.c
index 7492fdc..ab09650 100644
--- a/bisect.c
+++ b/bisect.c
@@ -921,7 +921,7 @@ void read_bisect_terms(const char **read_bad, const char **read_good)
FILE *fp = fopen(filename, "r");
if (!fp) {
- if (errno==2) {
+ if (errno == ENOENT) {
*read_bad = "bad";
*read_good = "good";
return;
diff --git a/git-bisect.sh b/git-bisect.sh
index 7da22b1..8ef2b94 100644
--- a/git-bisect.sh
+++ b/git-bisect.sh
@@ -541,7 +541,7 @@ get_terms () {
{
read NAME_BAD
read NAME_GOOD
- }<"$GIT_DIR/BISECT_TERMS"
+ } <"$GIT_DIR/BISECT_TERMS"
fi
}
@@ -605,8 +605,8 @@ bisect_terms () {
echo "1" >"$GIT_DIR/TERMS_DEFINED"
echo "git bisect terms $NAME_BAD $NAME_GOOD" >>"$GIT_DIR/BISECT_LOG" || exit
else
- die "$(gettext "A bisection has already started, and you can't change terms in the middle of it.
-Use 'git bisect terms' to see the current terms.
+ die "$(gettext "A bisection has already started, and you can't change terms in the middle of it.
+Use 'git bisect terms' to see the current terms.
Otherwise, to start a new bisection with new terms, please use 'git bisect reset' and set the terms before the start")"
fi ;;
*)
diff --git a/revision.c b/revision.c
index 27750ac..f22923f 100644
--- a/revision.c
+++ b/revision.c
@@ -2083,18 +2083,28 @@ extern void read_bisect_terms(const char **bad, const char **good);
static int for_each_bad_bisect_ref(const char *submodule, each_ref_fn fn, void *cb_data)
{
- char bisect_refs_path[256];
- strcpy(bisect_refs_path, "refs/bisect/");
- strcat(bisect_refs_path, name_bad);
- return for_each_ref_in_submodule(submodule, bisect_refs_path, fn, cb_data);
+ struct strbuf bisect_refs_buf = STRBUF_INIT;
+ const char *bisect_refs_str;
+ int status;
+ strbuf_addstr(&bisect_refs_buf, "refs/bisect/");
+ strbuf_addstr(&bisect_refs_buf, name_bad);
+ bisect_refs_str = strbuf_detach(&bisect_refs_buf, NULL);
+ status = for_each_ref_in_submodule(submodule, bisect_refs_str, fn, cb_data);
+ free((char *)bisect_refs_str);
+ return status;
}
static int for_each_good_bisect_ref(const char *submodule, each_ref_fn fn, void *cb_data)
{
- char bisect_refs_path[256];
- strcpy(bisect_refs_path, "refs/bisect/");
- strcat(bisect_refs_path, name_good);
- return for_each_ref_in_submodule(submodule, bisect_refs_path, fn, cb_data);
+ struct strbuf bisect_refs_buf = STRBUF_INIT;
+ const char *bisect_refs_str;
+ int status;
+ strbuf_addstr(&bisect_refs_buf, "refs/bisect/");
+ strbuf_addstr(&bisect_refs_buf, name_bad);
+ bisect_refs_str = strbuf_detach(&bisect_refs_buf, NULL);
+ status = for_each_ref_in_submodule(submodule, bisect_refs_str, fn, cb_data);
+ free((char *)bisect_refs_str);
+ return status;
}
static int handle_revision_pseudo_opt(const char *submodule,
diff --git a/t/t6030-bisect-porcelain.sh b/t/t6030-bisect-porcelain.sh
index d91116e..289dbb0 100755
--- a/t/t6030-bisect-porcelain.sh
+++ b/t/t6030-bisect-porcelain.sh
@@ -781,12 +781,12 @@ test_expect_success 'bisect start with one new and old' '
git bisect new &&
git bisect new >bisect_result &&
grep "$HASH2 is the first new commit" bisect_result &&
- git bisect log > log_to_replay.txt &&
+ git bisect log >log_to_replay.txt &&
git bisect reset
'
test_expect_success 'bisect replay with old and new' '
- git bisect replay log_to_replay.txt > bisect_result &&
+ git bisect replay log_to_replay.txt >bisect_result &&
grep "$HASH2 is the first new commit" bisect_result &&
git bisect reset
'
@@ -806,12 +806,12 @@ test_expect_success 'bisect start with one term1 and term2' '
git bisect term1 &&
git bisect term1 >bisect_result &&
grep "$HASH2 is the first term1 commit" bisect_result &&
- git bisect log > log_to_replay.txt &&
+ git bisect log >log_to_replay.txt &&
git bisect reset
'
test_expect_success 'bisect replay with term1 and term2' '
- git bisect replay log_to_replay.txt > bisect_result &&
+ git bisect replay log_to_replay.txt >bisect_result &&
grep "$HASH2 is the first term1 commit" bisect_result &&
git bisect reset
'
@@ -823,7 +823,7 @@ test_expect_success 'bisect start term1 term2' '
git bisect term1 &&
git bisect term1 >bisect_result &&
grep "$HASH2 is the first term1 commit" bisect_result &&
- git bisect log > log_to_replay.txt &&
+ git bisect log >log_to_replay.txt &&
git bisect reset
'
Antoine Delaite (5):
bisect: correction of typo
bisect: replace hardcoded "bad|good" by variables
bisect: simplify the addition of new bisect terms
bisect: add the terms old/new
bisect: allows any terms set by user
Documentation/git-bisect.txt | 67 +++++++++++++-
bisect.c | 94 +++++++++++++++-----
git-bisect.sh | 207 +++++++++++++++++++++++++++++++++++--------
revision.c | 26 +++++-
t/t6030-bisect-porcelain.sh | 83 ++++++++++++++++-
5 files changed, 413 insertions(+), 64 deletions(-)
mode change 100755 => 100644 git-bisect.sh
--
2.4.4.414.ge37915c
next prev parent reply other threads:[~2015-06-23 17:29 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-06-22 21:00 [PATCH v3 1/6] bisect: correction of typo Antoine Delaite
2015-06-22 21:00 ` [PATCH v3 2/6] bisect: replace hardcoded "bad|good" by variables Antoine Delaite
2015-06-22 21:00 ` [PATCH v3 3/6] bisect: simplify the addition of new bisect terms Antoine Delaite
2015-06-22 21:00 ` [PATCH v3 4/6] bisect: add the terms old/new Antoine Delaite
2015-06-22 21:00 ` [PATCH v3 5/6] revision: fix rev-list --bisect in old/new mode Antoine Delaite
2015-06-22 21:00 ` [PATCH v3 6/6] bisect: allows any terms set by user Antoine Delaite
2015-06-23 12:54 ` Matthieu Moy [this message]
2015-06-23 12:54 ` [PATCH v7 1/5] bisect: correction of typo Matthieu Moy
2015-06-23 12:54 ` [PATCH v7 2/5] bisect: replace hardcoded "bad|good" by variables Matthieu Moy
2015-06-23 12:54 ` [PATCH v7 3/5] bisect: simplify the addition of new bisect terms Matthieu Moy
2015-06-23 17:49 ` Eric Sunshine
2015-06-23 18:18 ` Matthieu Moy
2015-06-23 12:54 ` [PATCH v7 4/5] bisect: add the terms old/new Matthieu Moy
2015-06-23 19:27 ` Remi Galan Alfonso
2015-06-23 20:26 ` Matthieu Moy
2015-06-23 12:54 ` [PATCH v7 5/5] bisect: allows any terms set by user Matthieu Moy
2015-06-23 18:48 ` Junio C Hamano
2015-06-23 19:04 ` [PATCH v7 0/5] git bisect old/new Junio C Hamano
2015-06-23 20:16 ` Matthieu Moy
2015-06-23 20:34 ` Junio C Hamano
2015-06-24 15:17 ` [PATCH v8 0/5] Bisect terms Matthieu Moy
2015-06-24 15:17 ` [PATCH v8 1/5] bisect: correction of typo Matthieu Moy
2015-06-24 15:17 ` [PATCH v8 2/5] bisect: replace hardcoded "bad|good" by variables Matthieu Moy
2015-06-24 15:17 ` [PATCH v8 3/5] bisect: simplify the addition of new bisect terms Matthieu Moy
2015-06-24 17:29 ` Junio C Hamano
2015-06-24 21:26 ` Matthieu Moy
2015-06-24 15:17 ` [PATCH v8 4/5] bisect: add the terms old/new Matthieu Moy
2015-06-24 15:17 ` [PATCH v8 5/5] bisect: allow any terms set by user Matthieu Moy
2015-06-24 17:46 ` Junio C Hamano
2015-06-24 21:23 ` Matthieu Moy
2015-06-24 17:27 ` [PATCH v8 0/5] Bisect terms Junio C Hamano
2015-06-24 19:41 ` Junio C Hamano
2015-06-25 18:50 ` [PATCH v9 0/5] bisect terms Matthieu Moy
2015-06-25 18:50 ` [PATCH v9 1/5] bisect: correction of typo Matthieu Moy
2015-06-25 18:50 ` [PATCH v9 2/5] bisect: replace hardcoded "bad|good" by variables Matthieu Moy
2015-06-25 18:50 ` [PATCH v9 3/5] bisect: simplify the addition of new bisect terms Matthieu Moy
2015-06-25 18:50 ` [PATCH v9 4/5] bisect: add the terms old/new Matthieu Moy
2015-06-26 4:11 ` Christian Couder
2015-06-26 7:00 ` Matthieu Moy
2015-06-25 18:50 ` [PATCH v9 5/5] bisect: allow any terms set by user Matthieu Moy
2015-06-25 21:41 ` Junio C Hamano
2015-06-25 22:10 ` Junio C Hamano
2015-06-26 8:20 ` Matthieu Moy
2015-06-26 16:48 ` Junio C Hamano
2015-06-26 17:08 ` Matthieu Moy
2015-06-26 18:08 ` Junio C Hamano
2015-06-26 20:18 ` Matthieu Moy
2015-06-26 6:59 ` Matthieu Moy
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=1435064084-5554-1-git-send-email-Matthieu.Moy@imag.fr \
--to=matthieu.moy@imag.fr \
--cc=antoine.delaite@ensimag.grenoble-inp.fr \
--cc=chriscool@tuxfamily.org \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=louis--alexandre.stuber@ensimag.grenoble-inp.fr \
--cc=thomasxnguy@gmail.com \
--cc=valentinduperray@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).