threads / patch / 18556

patch, 10 partsrefs: add "for_each_bisect_ref" function

Subject: [PATCH 01/10] refs: add "for_each_bisect_ref" function

## tl;dr

12 messages between Mar 26, 2009 and Mar 27, 2009. Diffs are folded; open one to read it.

replies: 11people: 5as markdown or json

Christian Couder· Mar 26, 2009, 04:55 UTC · lore
Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
---
 refs.c |    5 +++++
 refs.h |    1 +
 2 files changed, 6 insertions(+), 0 deletions(-)
Show changes to 2 files +6 −0

refs.c, refs.h

diff --git a/refs.c b/refs.c
index 8d3c502..2b21148 100644
--- a/refs.c
+++ b/refs.c
@@ -662,6 +662,11 @@ int for_each_remote_ref(each_ref_fn fn, void *cb_data)
 	return do_for_each_ref("refs/remotes/", fn, 13, 0, cb_data);
 }
 
+int for_each_bisect_ref(each_ref_fn fn, void *cb_data)
+{
+	return do_for_each_ref("refs/bisect/", fn, 12, 0, cb_data);
+}
+
 int for_each_rawref(each_ref_fn fn, void *cb_data)
 {
 	return do_for_each_ref("refs/", fn, 0,
diff --git a/refs.h b/refs.h
index 29bdcec..e5d6e80 100644
--- a/refs.h
+++ b/refs.h
@@ -23,6 +23,7 @@ extern int for_each_ref(each_ref_fn, void *);
 extern int for_each_tag_ref(each_ref_fn, void *);
 extern int for_each_branch_ref(each_ref_fn, void *);
 extern int for_each_remote_ref(each_ref_fn, void *);
+extern int for_each_bisect_ref(each_ref_fn, void *);
 
 /* can be used to learn about broken ref and symref */
 extern int for_each_rawref(each_ref_fn, void *);
-- 
1.6.2.1.317.g3d804
Sverre Rabbelier· Mar 26, 2009, 06:20 UTC · re: Christian Couder · lore

Re: [PATCH 01/10] refs: add "for_each_bisect_ref" function

Heya
On Thu, Mar 26, 2009 at 05:55, Christian Couder <chriscool@tuxfamily.org> wrote:
> Signed-off-by: Christian Couder <chriscool@tuxfamily.org>

A 10 patches series with no cover letter? And no description of the individual patches either! C'mon Christian, you know better than that ;).

-- 
Cheers,

Sverre Rabbelier
Christian Couder· Mar 26, 2009, 07:48 UTC · re: Sverre Rabbelier · lore

Re: [PATCH 01/10] refs: add "for_each_bisect_ref" function

Hi Sverre,
Le jeudi 26 mars 2009, Sverre Rabbelier a écrit :
> Heya
>
> On Thu, Mar 26, 2009 at 05:55, Christian Couder <chriscool@tuxfamily.org> 
wrote:
> > Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
>
> A 10 patches series with no cover letter? 

I am not a big fan of cover letters. Usually I prefer adding comments in the patches.

> And no description of the 
> individual patches either! 

There is a commit message in each patch. And many of the patches are very small.

> C'mon Christian, you know better than that 
> ;).

If some commit messages are not clear enough, please tell me and I will try to improve them ;)

Regards, Christian.

Sverre Rabbelier· Mar 26, 2009, 12:37 UTC · re: Christian Couder · lore

Re: [PATCH 01/10] refs: add "for_each_bisect_ref" function

Heya,
On Thu, Mar 26, 2009 at 08:48, Christian Couder <chriscool@tuxfamily.org> wrote:
> I am not a big fan of cover letters. Usually I prefer adding comments in the
> patches.

The downside of that is that it makes it harder to quickly scan the series; now I have to go through each patch (which involves trying finding which patch is next, as my MUA is retarded and doesn't understand proper threading).

Show 5 quoted lines
>> And no description of the
>> individual patches either!
>
> There is a commit message in each patch. And many of the patches are very
> small.

Hehe, my bad; the first one didn't have a commit message, which is the one I looked at first.

> If some commit messages are not clear enough, please tell me and I will try
> to improve them ;)

The rest of the series is nicely readable, I guess I shouldn't send whine mails before reading the entire series next time :).

-- 
Cheers,

Sverre Rabbelier
Michael J Gruber· Mar 26, 2009, 15:50 UTC · re: Christian Couder · lore

Re: [PATCH 01/10] refs: add "for_each_bisect_ref" function

Christian Couder venit, vidit, dixit 26.03.2009 08:48:
Show 13 quoted lines
> Hi Sverre,
> 
> Le jeudi 26 mars 2009, Sverre Rabbelier a écrit :
>> Heya
>>
>> On Thu, Mar 26, 2009 at 05:55, Christian Couder <chriscool@tuxfamily.org> 
> wrote:
>>> Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
>>
>> A 10 patches series with no cover letter? 
> 
> I am not a big fan of cover letters. Usually I prefer adding comments in the 
> patches.

I'm sorry I have to say that, but your individual preferences don't matter. Many of us would do things differently, each in their own way, but people adjust to the list's preferences. It's a matter of attitude. So, please...

Cheers, Michael

Show 15 quoted lines
> 
>> And no description of the 
>> individual patches either! 
> 
> There is a commit message in each patch. And many of the patches are very 
> small.
> 
>> C'mon Christian, you know better than that 
>> ;).
> 
> If some commit messages are not clear enough, please tell me and I will try 
> to improve them ;)
> 
> Regards,
> Christian.
Johannes Schindelin· Mar 26, 2009, 16:52 UTC · re: Michael J Gruber · lore

Re: [PATCH 01/10] refs: add "for_each_bisect_ref" function

Hi,
On Thu, 26 Mar 2009, Michael J Gruber wrote:
Show 13 quoted lines
> Christian Couder venit, vidit, dixit 26.03.2009 08:48:
> 
> > Le jeudi 26 mars 2009, Sverre Rabbelier a écrit :
> >
> >> A 10 patches series with no cover letter?
> > 
> > I am not a big fan of cover letters. Usually I prefer adding comments 
> > in the patches.
> 
> I'm sorry I have to say that, but your individual preferences don't 
> matter. Many of us would do things differently, each in their own way, 
> but people adjust to the list's preferences. It's a matter of attitude. 
> So, please...

Actually, a better way to ask for a cover letter would have been to convince Christian. So I'll try that.

>From the patch series' titles (especially when they are cropped due to the 

text window being too small to fit the indented thread), it is not all that obvious what you want to achieve with those 10 patches.

>From recent discussions, I seem to remember that you wanted to have some 

cute way to mark commits as non-testable during a bisect, and I further seem to remember that Junio said that very method should be usable outside of bisect, too.

Unfortunately, that does not reveal to me, quickly, what is the current state of affairs, and what you changed since the last time.

In addition, I am very sorry that I cannot review your patches; day job is killing me right now.

Ciao, Dscho

Sverre Rabbelier· Mar 26, 2009, 16:54 UTC · re: Johannes Schindelin · lore

Re: [PATCH 01/10] refs: add "for_each_bisect_ref" function

Heya,

On Thu, Mar 26, 2009 at 17:52, Johannes Schindelin <Johannes.Schindelin@gmx.de> > From the patch series' titles (especially when they are cropped due to the

> text window being too small to fit the indented thread), it is not all
> that obvious what you want to achieve with those 10 patches.
<snip>
> Unfortunately, that does not reveal to me, quickly, what is the current
> state of affairs, and what you changed since the last time.

This is exactly what I meant to say, only worded much much better, thanks Johannes! :)

-- 
Cheers,

Sverre Rabbelier
Christian Couder· Mar 27, 2009, 00:41 UTC · re: Johannes Schindelin · lore

Re: [PATCH 01/10] refs: add "for_each_bisect_ref" function

Le jeudi 26 mars 2009, Johannes Schindelin a écrit :
Show 17 quoted lines
> Hi,
>
> On Thu, 26 Mar 2009, Michael J Gruber wrote:
> > Christian Couder venit, vidit, dixit 26.03.2009 08:48:
> > > Le jeudi 26 mars 2009, Sverre Rabbelier a écrit :
> > >> A 10 patches series with no cover letter?
> > >
> > > I am not a big fan of cover letters. Usually I prefer adding comments
> > > in the patches.
> >
> > I'm sorry I have to say that, but your individual preferences don't
> > matter. Many of us would do things differently, each in their own way,
> > but people adjust to the list's preferences. It's a matter of attitude.
> > So, please...
>
> Actually, a better way to ask for a cover letter would have been to
> convince Christian.  So I'll try that.
Thanks.

As you know, I have been sending patches since nearly 3 years ago to this list. And it's only since a few weeks ago that I am asked to send cover letters...

Show 8 quoted lines
> From the patch series' titles (especially when they are cropped due to
> the text window being too small to fit the indented thread), it is not
> all that obvious what you want to achieve with those 10 patches.
>
> From recent discussions, I seem to remember that you wanted to have some
> cute way to mark commits as non-testable during a bisect, and I further
> seem to remember that Junio said that very method should be usable
> outside of bisect, too.

Well, we want to move "git bisect skip" code from shell (in "git-bisect.sh") to C. So this patch series does that by creating a new "git bisect--helper" command in C that contains the new code and using that new command in "git-bisect.sh".

> Unfortunately, that does not reveal to me, quickly, what is the current
> state of affairs, and what you changed since the last time.

Yeah, I should have at least put something in the comment section of my first patch in this series.

And I try to improve, you know, I even tried to use "git send-email" again this morning to see if perhaps I could use it to send my patch series.

I did:

$ git send-email --compose --dry-run bh15/* Can't call method "repo_path" on an undefined value at /home/christian/libexec/git-core//git-send-email line 160.

and then I gave up, because I don't like spending a lot of my free time to fight with tools I don't like.

If someone knows some other tools that can easily send a threaded patch series, I will try to see if I can use them...

Thanks in advance, Christian.

Julian Phillips· Mar 27, 2009, 01:32 UTC · re: Christian Couder · lore

sending patch sets (was: Re: [PATCH 01/10] refs: add "for_each_bisect_ref" function)

On Fri, 27 Mar 2009, Christian Couder wrote:
> If someone knows some other tools that can easily send a threaded patch
> series, I will try to see if I can use them...

I long ago gave up on send-email, as it seemed to cumbersome for what I wanted, and my perl had got so rusty I really couldn't face trying to improve it.

So I wrote a replacement in Python (attached), which I have subsequently used for all patches I've sent. It calls format-patch, passing through arguments (and you can use -- to let it pass options too).

(the only setting it reads from git config atm is mail-commit.to)
I find it much easier to use than send-email, but as usual YMMV ...
-- 
Julian

  ---
Have you seen the latest Japanese camera?  Apparently it is so fast it can
photograph an American with his mouth shut!

#!/usr/bin/python

import optparse
import os
import random
import re
import smtplib
import socket
import sys
import tempfile
import time

from cStringIO import StringIO
from email.Generator import Generator
from email.Message import Message
from email.Parser import FeedParser, Parser
from email.Utils import parseaddr, parsedate, formatdate, \
                        getaddresses, formataddr

my_version = "0.1"
my_name = "git-mail-commits"
this_script = "%s v%s" % (my_name, my_version)

gci_re = re.compile("^(?P<email>(.*) <(.*)>) (\d+ [+-]\d{4})$")

smtp_server = "neutron"

# -----------------------------------------------------------------------------
def get_message_text(message):
    text_msg = StringIO()
    gen = Generator(text_msg, mangle_from_=False)
    gen.flatten(message)
    return text_msg.getvalue()
# -----------------------------------------------------------------------------

# -----------------------------------------------------------------------------
def send_message(msg):
    sent = (None, 'No destination address given')

    (a, fromaddr) = parseaddr(msg.get('From'))
    toaddr_list = msg.get_all('To', [])
    ccaddr_list = msg.get_all('CC', [])
    bccaddr_list = msg.get_all('BCC', [])
    all_recips = getaddresses(toaddr_list + ccaddr_list + bccaddr_list)
    to_list = [ email for (name, email) in all_recips ]

    if len(to_list) > 0:
        server = smtplib.SMTP(smtp_server)
        try:
            errors = server.sendmail(fromaddr, to_list, get_message_text(msg))
            sent = (errors, "Failed to send to one or more recipients")
        except smtplib.SMTPRecipientsRefused, rr:
            sent = (rr.recipients, "Failed to send to all recipients")
        server.quit()

    return sent
# -----------------------------------------------------------------------------

# -----------------------------------------------------------------------------
def get_msgid(idstring=None, idhost=socket.getfqdn(), email=None):
    """Returns a string suitable for RFC 2822 compliant Message-ID, e.g:

    <20020201195627.33539.96671@nightshade.la.mastaler.com>

    Optional idstring if given is a string used to strengthen the
    uniqueness of the message id.

    Based on email.Utils.make_msgid
    """
    timeval = time.time()
    utcdate = time.strftime('%Y%m%d%H%M%S', time.gmtime(timeval))
    pid = os.getpid()
    randint = random.randrange(100000)
    if email is not None:
        ids = ".%s" % (email)
    else:
        if idstring is None:
            idstring = ''
        else:
            idstring = '.' + idstring
        ids = "%s@%s" % (idstring, idhost)
    msgid = '<%s.%s.%s%s>' % (utcdate, pid, randint, ids)
    return msgid
# -----------------------------------------------------------------------------

def get_patches(args, numbered=True, signoff=True):
    patches = []
    cur_patch = None
#    print args
    opts = ['-M']
    if numbered:
        opts.append("-n")
    if signoff:
        opts.append("-s")
    fp = os.popen("git format-patch --stdout %s %s" % (' '.join(opts),
                                                       ' '.join(args)))
    for line in fp.readlines():
        if line[:5] == "From ":
            if cur_patch is not None:
                patches.append(cur_patch.close())
            cur_patch = FeedParser()
        cur_patch.feed(line)
    fp.close()
    if cur_patch is not None:
        patches.append(cur_patch.close())
    return patches

def format_patches(patches, to, initial_msg_id=None,
                   addr=None, cc_list=[]):
    refs = []
    if initial_msg_id is not None:
        refs.append(initial_msg_id)
    for patch in patches:
        if addr is not None:
            patch.replace_header("From", addr)
        if len(cc_list) > 0:
            cc = [x.strip() for x in patch.get("CC", "").split(",")]
            if len(cc) == 1 and cc[0] == "":
                cc = cc_list
            else:
                cc.extend(cc_list)
            del patch['CC']
            print cc
            patch.add_header("CC", ",".join(cc))
        subject = patch.get("Subject")
        (name, email) = parseaddr(patch.get("From"))
        sha1 = patch.get_unixfrom()[5:46]
        msg_id = get_msgid(email=email)
        patch.add_header("To", to)
        del patch['Message-Id']
        patch.add_header("Message-Id", msg_id)
        patch.add_header("X-git-sha1", sha1)
        del patch['X-Mailer']
        patch.add_header("X-Mailer", this_script)
        if len(refs) > 0:
            del patch['In-Reply-To']
            del patch['References']
            patch.add_header("In-Reply-To", refs[-1])
            patch.add_header("References", ' '.join(refs))
        refs.append(msg_id)
#        print "%s - %s" %(sha1[0:7], subject)
#        print patch

def get_git_committer_email():
    gv = os.popen("git var GIT_COMMITTER_IDENT")
    gci = gv.readline()
    gv.close()
#    print gci
    gci_m = gci_re.search(gci)
    if gci_m:
        return gci_m.group('email')
    else:
        print "Unable to get/parse GIT_COMMITTER_IDENT"
        sys.exit(-1)

def get_intro_msg(to, frm_addr, count, filename=None):
    if filename is None:
        if 'EDITOR' not in os.environ:
            print "$EDITOR not set, please set."
            sys.exit(-1)
        (fd, fname) = tempfile.mkstemp()
        f = os.fdopen(fd)
        ret = os.system("%s %s" % (os.environ['EDITOR'], fname))
        if not (os.WIFEXITED(ret) and os.WEXITSTATUS(ret) == 0):
            print "Failed to edit intro message."
            sys.exit(-1)
    else:
        f = open(filename)
    slist = []
    blist = []
    cur = slist
    for line in f.readlines():
        if line == "\n":
            cur = blist
            continue
        cur.append(line)
    f.close()
    if filename is None:
        os.remove(fname)
    subject = ''.join(slist).replace('\n', ' ')
    body = ''.join(blist)
    if subject == "":
        print "No subject for intro message, aborting."
        sys.exit(-1)
    msg = Message()
    msg.add_header('From', frm_addr)
    msg.add_header('To', to)
    (name, email) = parseaddr(msg.get("From"))
    msg.add_header('Message-Id', get_msgid(email=email))
    msg.set_payload(body)
    msg.add_header('Subject', "[PATCH 0/%d] %s" % (count, subject))
    msg.add_header("X-Mailer", this_script)
    return msg

def reply_to(fname):
    p = Parser()
    f = open(fname)
    msg = p.parse(f)
    f.close()
    cc = [x.strip() for x in msg['CC'].split(',')]
    return (msg['From'], msg['Message-ID'], cc)

def main():
    description = "send the given commits as patch emails to the specified " \
                  "address, all non-option arguments are passed to " \
                  "git-format-patch (\"--\" can be used to indicate the end " \
                  "of the options for this script)."
    
    parser = optparse.OptionParser(description=description)
    parser.disable_interspersed_args()

    parser.add_option("", "--to", action="store", default=None,
                      help="the address to send the mails to")

    parser.add_option("", "--cc", action="append", default=[],
                      help="copy the mails to this address")

    parser.add_option("", "--reply-to", action="store", default=None,
                      help="reply to the given mail (rather than use an intro)")

    parser.add_option("-n", "--numbered", action="store_true", default=False,
                      help="send numbered patches (adds -n to the "
                      "git-format-patch options)")

    parser.add_option("-f", "--from", dest="frm_addr", action="store",
                      default=None,
                      help="set FROM as the from address, otherwise use "
                      "GIT_COMMITTER_IDENT")

    parser.add_option("-i", "--intro", dest="intro", action="store_true",
                      help="start with a 0/n intro message using $EDITOR to "
                      "write the message (implies -n).")
    parser.add_option("-I", "--intro-file", dest="intro", action="store",
                      help="start with a 0/n intro message read from INTRO "
                      "(implies -n).")
    parser.set_defaults(intro=None)

    parser.add_option("-e", "--edit", action="store_true", default=False,
                      help="edit the patches before sending")

    parser.add_option("-S", "--no-signoff", dest="signoff",
                      action="store_false", default=True,
                      help="Don't signoff the patches")

    (options, args) = parser.parse_args()

    if len(args) < 1:
        print "You must specify at least one commit to send ..."
        sys.exit(-1)

    if options.to is None:
        gc = os.popen("git config mail-commits.to")
        to = gc.read()
        gc.close()
        if to == "":
            print "you must specify the destination using --to"
            sys.exit(-1)
        else:
            options.to = to.strip()

    print "Sending to: %s\n" % options.to

    if options.frm_addr is not None:
        frm_addr = options.frm_addr
    else:        
        frm_addr = get_git_committer_email()

    if options.intro is not None:
        options.numbered = True

    patches = get_patches(args, options.numbered, signoff=options.signoff)

    intro_msg = None
    intro_msg_id = None
    if options.intro is not None:
        fname = None
        if options.intro is not True:
            fname = options.intro
        intro_msg = get_intro_msg(options.to, frm_addr, len(patches),
                                  filename=fname)
        intro_msg_id = intro_msg.get('Message-Id')

    if options.reply_to is not None:
        (options.to, intro_msg_id, cc) = reply_to(options.reply_to)
        options.cc.extend(cc)

#    print intro_msg

    format_patches(patches, to=options.to, cc_list=options.cc,
                   initial_msg_id=intro_msg_id,
                   addr=frm_addr)

    if options.edit:
        new_patches = []
        for patch in patches:
            (fd, fname) = tempfile.mkstemp()
            f = os.fdopen(fd, "w+")
            f.write(get_message_text(patch))
            f.close()
            if 'EDITOR' not in os.environ:
                print "$EDITOR not set, please set."
                sys.exit(-1)
            ret = os.system("%s %s" % (os.environ['EDITOR'], fname))
            if not (os.WIFEXITED(ret) and os.WEXITSTATUS(ret) == 0):
                print "Failed to edit patch (%d)." % ret
                sys.exit(-1)
            p = FeedParser()
            f = open(fname)
            for line in f:
                p.feed(line)
            m = p.close()
            if m:
                new_patches.append(m)
            f.close()
            os.remove(fname)
        patches = new_patches

    if intro_msg:
        print intro_msg['Subject']
    for patch in patches:
        print patch['Subject']
    print
    print "Press [Enter] to send patches, Ctrl-C to cancel."
    try:
        raw_input()
    except KeyboardInterrupt:
        print "Not sending patches."
        sys.exit(-1)

    print "Sending patches ...\n"

    msgs=[intro_msg]
    msgs.extend(patches)
    for msg in msgs:
        if msg is None:
            continue
        (errors, errmsg) = send_message(msg)
        if len(errors) == 0:
            print "sent %s" % msg['Subject']
        else:
            print "error sending %s" % msg['Subject']
            for (name, (ecode, emsg)) in errors.items():
                print "  %s: %s %s" % (name, ecode, emsg)

if __name__ == "__main__":
    main()
Christian Couder· Mar 27, 2009, 07:22 UTC · re: Julian Phillips · lore

Re: sending patch sets (was: Re: [PATCH 01/10] refs: add "for_each_bisect_ref" function)

Le vendredi 27 mars 2009, Julian Phillips a écrit :
Show 15 quoted lines
> On Fri, 27 Mar 2009, Christian Couder wrote:
> > If someone knows some other tools that can easily send a threaded patch
> > series, I will try to see if I can use them...
>
> I long ago gave up on send-email, as it seemed to cumbersome for what I
> wanted, and my perl had got so rusty I really couldn't face trying to
> improve it.
>
> So I wrote a replacement in Python (attached), which I have subsequently
> used for all patches I've sent.  It calls format-patch, passing through
> arguments (and you can use -- to let it pass options too).
>
> (the only setting it reads from git config atm is mail-commit.to)
>
> I find it much easier to use than send-email, but as usual YMMV ...

Thanks I will try to have a look at it, Christian.

Johannes Schindelin· Mar 27, 2009, 02:08 UTC · re: Christian Couder · lore

Re: [PATCH 01/10] refs: add "for_each_bisect_ref" function

Hi,
On Fri, 27 Mar 2009, Christian Couder wrote:
Show 23 quoted lines
> Le jeudi 26 mars 2009, Johannes Schindelin a écrit :
>
> > On Thu, 26 Mar 2009, Michael J Gruber wrote:
> > > Christian Couder venit, vidit, dixit 26.03.2009 08:48:
> > > > Le jeudi 26 mars 2009, Sverre Rabbelier a écrit :
> > > >> A 10 patches series with no cover letter?
> > > >
> > > > I am not a big fan of cover letters. Usually I prefer adding 
> > > > comments in the patches.
> > >
> > > I'm sorry I have to say that, but your individual preferences don't 
> > > matter. Many of us would do things differently, each in their own 
> > > way, but people adjust to the list's preferences. It's a matter of 
> > > attitude. So, please...
> >
> > Actually, a better way to ask for a cover letter would have been to 
> > convince Christian.  So I'll try that.
> 
> Thanks.
> 
> As you know, I have been sending patches since nearly 3 years ago to 
> this list. And it's only since a few weeks ago that I am asked to send 
> cover letters...

Heh, I have the feeling that your patch series were much shorter, and did not have many revisions, until a few weeks ago ;-)

Show 13 quoted lines
> > From the patch series' titles (especially when they are cropped due to 
> > the text window being too small to fit the indented thread), it is not 
> > all that obvious what you want to achieve with those 10 patches.
> >
> > From recent discussions, I seem to remember that you wanted to have 
> > some cute way to mark commits as non-testable during a bisect, and I 
> > further seem to remember that Junio said that very method should be 
> > usable outside of bisect, too.
> 
> Well, we want to move "git bisect skip" code from shell (in 
> "git-bisect.sh") to C. So this patch series does that by creating a new 
> "git bisect--helper" command in C that contains the new code and using 
> that new command in "git-bisect.sh".

Oh? I _completely_ missed that. And that's being one of the original Cc:ed persons...

Show 5 quoted lines
> > Unfortunately, that does not reveal to me, quickly, what is the 
> > current state of affairs, and what you changed since the last time.
> 
> Yeah, I should have at least put something in the comment section of my 
> first patch in this series.
No.  I would still have missed it.

The cover letter is outside of any patch, because it describes the purpose of the _whole_ patch series, not just one patch.

So, it would have been nice to get a heads-up that this is not your bisect-skip-a-whole-bunch-of-commits series, but a new animal.

This way, I decided I do not have time for something I do not need, and deleted it without having a look.

Ciao, Dscho

Christian Couder· Mar 27, 2009, 07:21 UTC · re: Johannes Schindelin · lore

Re: [PATCH 01/10] refs: add "for_each_bisect_ref" function

Le vendredi 27 mars 2009, Johannes Schindelin a écrit :
Show 28 quoted lines
> Hi,
>
> On Fri, 27 Mar 2009, Christian Couder wrote:
> > Le jeudi 26 mars 2009, Johannes Schindelin a écrit :
> > > On Thu, 26 Mar 2009, Michael J Gruber wrote:
> > > > Christian Couder venit, vidit, dixit 26.03.2009 08:48:
> > > > > Le jeudi 26 mars 2009, Sverre Rabbelier a écrit :
> > > > >> A 10 patches series with no cover letter?
> > > > >
> > > > > I am not a big fan of cover letters. Usually I prefer adding
> > > > > comments in the patches.
> > > >
> > > > I'm sorry I have to say that, but your individual preferences don't
> > > > matter. Many of us would do things differently, each in their own
> > > > way, but people adjust to the list's preferences. It's a matter of
> > > > attitude. So, please...
> > >
> > > Actually, a better way to ask for a cover letter would have been to
> > > convince Christian.  So I'll try that.
> >
> > Thanks.
> >
> > As you know, I have been sending patches since nearly 3 years ago to
> > this list. And it's only since a few weeks ago that I am asked to send
> > cover letters...
>
> Heh, I have the feeling that your patch series were much shorter, and did
> not have many revisions, until a few weeks ago ;-)

Please try to look for a 9 patch long series that you reviewed around october 2007 with "dunno" or "skip" in the title ;-)

Show 33 quoted lines
> > > From the patch series' titles (especially when they are cropped due
> > > to the text window being too small to fit the indented thread), it is
> > > not all that obvious what you want to achieve with those 10 patches.
> > >
> > > From recent discussions, I seem to remember that you wanted to have
> > > some cute way to mark commits as non-testable during a bisect, and I
> > > further seem to remember that Junio said that very method should be
> > > usable outside of bisect, too.
> >
> > Well, we want to move "git bisect skip" code from shell (in
> > "git-bisect.sh") to C. So this patch series does that by creating a new
> > "git bisect--helper" command in C that contains the new code and using
> > that new command in "git-bisect.sh".
>
> Oh?  I _completely_ missed that.  And that's being one of the original
> Cc:ed persons...
>
> > > Unfortunately, that does not reveal to me, quickly, what is the
> > > current state of affairs, and what you changed since the last time.
> >
> > Yeah, I should have at least put something in the comment section of my
> > first patch in this series.
>
> No.  I would still have missed it.
>
> The cover letter is outside of any patch, because it describes the
> purpose of the _whole_ patch series, not just one patch.
>
> So, it would have been nice to get a heads-up that this is not your
> bisect-skip-a-whole-bunch-of-commits series, but a new animal.
>
> This way, I decided I do not have time for something I do not need, and
> deleted it without having a look.

Well as I said in my previous email I am willing to improve. So perhaps next time.

Best regards, Christian.

← back to recent threads