* [RFC/PATCH] bisect: teach "skip" to accept special arguments like "A..B"
@ 2008-11-23 21:02 Christian Couder
2008-11-24 0:28 ` Johannes Schindelin
2008-11-26 5:42 ` Junio C Hamano
0 siblings, 2 replies; 5+ messages in thread
From: Christian Couder @ 2008-11-23 21:02 UTC (permalink / raw)
To: Junio C Hamano, Johannes Schindelin; +Cc: git, H. Peter Anvin
The current "git bisect skip" syntax is "git bisect skip [<rev>...]"
so it's already possible to skip a range of revisions using
something like:
$ git bisect skip $(git rev-list A..B)
where A and B are the bounds of the range we want to skip.
This patch teaches "git bisect skip" to accept:
$ git bisect skip A..B
as an abbreviation for the former command.
This is done by checking each argument to see if it contains two
dots one after the other ('..'), and by expending it using
"git rev-list" if that is the case.
Note that this patch will not make "git bisect skip" accept all
that "git rev-list" accepts, as things like "^A B" for exemple
will not work. But things like "A B..C D E F.. ..G H...I" should
work as expected.
Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
---
git-bisect.sh | 19 ++++++++++++++++++-
1 files changed, 18 insertions(+), 1 deletions(-)
Dscho wrote:
> Would it not be more intuitive to have support for
>
> git bisect skip A..B
>
> ?
Here is a patch to do that. I am not sure it's worth it
because this is a special case in many ways.
diff --git a/git-bisect.sh b/git-bisect.sh
index 0d0e278..6706bc1 100755
--- a/git-bisect.sh
+++ b/git-bisect.sh
@@ -191,6 +191,21 @@ check_expected_revs() {
done
}
+bisect_skip() {
+ all=''
+ for arg in "$@"
+ do
+ case "$arg" in
+ *..*)
+ revs=$(git rev-list "$arg") || die "Bad rev input: $arg" ;;
+ *)
+ revs="'$arg'" ;;
+ esac
+ all="$all $revs"
+ done
+ bisect_state 'skip' $all
+}
+
bisect_state() {
bisect_autostart
state=$1
@@ -630,8 +645,10 @@ case "$#" in
git bisect -h ;;
start)
bisect_start "$@" ;;
- bad|good|skip)
+ bad|good)
bisect_state "$cmd" "$@" ;;
+ skip)
+ bisect_skip "$@" ;;
next)
# Not sure we want "next" at the UI level anymore.
bisect_next "$@" ;;
--
1.6.0.4.768.g22eb.dirty
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [RFC/PATCH] bisect: teach "skip" to accept special arguments like "A..B"
2008-11-23 21:02 [RFC/PATCH] bisect: teach "skip" to accept special arguments like "A..B" Christian Couder
@ 2008-11-24 0:28 ` Johannes Schindelin
2008-11-24 7:09 ` Johannes Sixt
2008-11-26 5:42 ` Junio C Hamano
1 sibling, 1 reply; 5+ messages in thread
From: Johannes Schindelin @ 2008-11-24 0:28 UTC (permalink / raw)
To: Christian Couder; +Cc: Junio C Hamano, git, H. Peter Anvin
[-- Attachment #1: Type: TEXT/PLAIN, Size: 1370 bytes --]
Hi,
On Sun, 23 Nov 2008, Christian Couder wrote:
> The current "git bisect skip" syntax is "git bisect skip [<rev>...]"
> so it's already possible to skip a range of revisions using
> something like:
>
> $ git bisect skip $(git rev-list A..B)
>
> where A and B are the bounds of the range we want to skip.
>
> This patch teaches "git bisect skip" to accept:
>
> $ git bisect skip A..B
>
> as an abbreviation for the former command.
>
> This is done by checking each argument to see if it contains two
> dots one after the other ('..'), and by expending it using
> "git rev-list" if that is the case.
s/expend/expand/
> Note that this patch will not make "git bisect skip" accept all
> that "git rev-list" accepts, as things like "^A B" for exemple
> will not work. But things like "A B..C D E F.. ..G H...I" should
> work as expected.
>
> Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
> ---
> git-bisect.sh | 19 ++++++++++++++++++-
> 1 files changed, 18 insertions(+), 1 deletions(-)
>
> Dscho wrote:
> > Would it not be more intuitive to have support for
> >
> > git bisect skip A..B
> >
> > ?
>
> Here is a patch to do that. I am not sure it's worth it
> because this is a special case in many ways.
Why not have something like
skip)
for arg in $(git rev-list "$@")
do
bisect_state skip $arg
done
?
Ciao,
Dscho
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [RFC/PATCH] bisect: teach "skip" to accept special arguments like "A..B"
2008-11-24 0:28 ` Johannes Schindelin
@ 2008-11-24 7:09 ` Johannes Sixt
2008-11-24 10:35 ` Johannes Schindelin
0 siblings, 1 reply; 5+ messages in thread
From: Johannes Sixt @ 2008-11-24 7:09 UTC (permalink / raw)
To: Johannes Schindelin; +Cc: Christian Couder, Junio C Hamano, git, H. Peter Anvin
Johannes Schindelin schrieb:
> On Sun, 23 Nov 2008, Christian Couder wrote:
>> Dscho wrote:
>> > Would it not be more intuitive to have support for
>> >
>> > git bisect skip A..B
>> >
>> > ?
>>
>> Here is a patch to do that. I am not sure it's worth it
>> because this is a special case in many ways.
>
> Why not have something like
>
> skip)
> for arg in $(git rev-list "$@")
> do
> bisect_state skip $arg
> done
Because if you say
$ git bisect skip
this would be incorrectly calling rev-list; but more importantly, if you say
$ git bisect skip A
then this would skip A *and all its ancestors*. Not quite what you intended.
-- Hannes
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [RFC/PATCH] bisect: teach "skip" to accept special arguments like "A..B"
2008-11-24 7:09 ` Johannes Sixt
@ 2008-11-24 10:35 ` Johannes Schindelin
0 siblings, 0 replies; 5+ messages in thread
From: Johannes Schindelin @ 2008-11-24 10:35 UTC (permalink / raw)
To: Johannes Sixt; +Cc: Christian Couder, Junio C Hamano, git, H. Peter Anvin
Hi,
On Mon, 24 Nov 2008, Johannes Sixt wrote:
> Johannes Schindelin schrieb:
> > On Sun, 23 Nov 2008, Christian Couder wrote:
> >> Dscho wrote:
> >> > Would it not be more intuitive to have support for
> >> >
> >> > git bisect skip A..B
> >> >
> >> > ?
> >>
> >> Here is a patch to do that. I am not sure it's worth it
> >> because this is a special case in many ways.
> >
> > Why not have something like
> >
> > skip)
> > for arg in $(git rev-list "$@")
> > do
> > bisect_state skip $arg
> > done
>
> Because if you say
>
> $ git bisect skip
>
> this would be incorrectly calling rev-list; but more importantly, if you say
>
> $ git bisect skip A
>
> then this would skip A *and all its ancestors*. Not quite what you intended.
Good point indeed.
Thanks,
Dscho
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [RFC/PATCH] bisect: teach "skip" to accept special arguments like "A..B"
2008-11-23 21:02 [RFC/PATCH] bisect: teach "skip" to accept special arguments like "A..B" Christian Couder
2008-11-24 0:28 ` Johannes Schindelin
@ 2008-11-26 5:42 ` Junio C Hamano
1 sibling, 0 replies; 5+ messages in thread
From: Junio C Hamano @ 2008-11-26 5:42 UTC (permalink / raw)
To: Christian Couder; +Cc: Johannes Schindelin, git, H. Peter Anvin
Christian Couder <chriscool@tuxfamily.org> writes:
> The current "git bisect skip" syntax is "git bisect skip [<rev>...]"
> so it's already possible to skip a range of revisions using
> something like:
>
> $ git bisect skip $(git rev-list A..B)
>
> where A and B are the bounds of the range we want to skip.
>
> This patch teaches "git bisect skip" to accept:
>
> $ git bisect skip A..B
>
> as an abbreviation for the former command.
Although I fully realize that the established semantics of A..B in git is
bottom-exclusive, top-inclusive, and this suggestion breaks the UI
uniformity by deviating from that convention, I have to wonder if it would
be more useful if you let the bottom commit (A in your example) also be
skipped.
I would suspect that it would be more useful than the "replace" one, but
that is a separate issue.
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2008-11-26 5:44 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-11-23 21:02 [RFC/PATCH] bisect: teach "skip" to accept special arguments like "A..B" Christian Couder
2008-11-24 0:28 ` Johannes Schindelin
2008-11-24 7:09 ` Johannes Sixt
2008-11-24 10:35 ` Johannes Schindelin
2008-11-26 5:42 ` Junio C Hamano
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 NNTP newsgroup(s).