From: Junio C Hamano <gitster@pobox.com>
To: Johan Herland <johan@herland.net>
Cc: git@vger.kernel.org, "Shawn O. Pearce" <spearce@spearce.org>
Subject: Re: [PATCH 5/2] push -s: receiving end
Date: Thu, 08 Sep 2011 09:43:40 -0700 [thread overview]
Message-ID: <7vvct3x9vn.fsf@alter.siamese.dyndns.org> (raw)
In-Reply-To: <201109081131.58362.johan@herland.net> (Johan Herland's message of "Thu, 8 Sep 2011 11:31:58 +0200")
Johan Herland <johan@herland.net> writes:
>> +static void get_note_text(struct strbuf *buf, struct notes_tree *t,
>> + const unsigned char *object)
>> +{
>> + const unsigned char *sha1 = get_note(t, object);
>> + char *text;
>> + unsigned long len;
>> + enum object_type type;
>> +
>> + if (!sha1)
>> + return;
>> + text = read_sha1_file(sha1, &type, &len);
>> + if (text && len && type == OBJ_BLOB)
>> + strbuf_add(buf, text, len);
>> + free(text);
>> +}
>> +
>
> What about adding this function to notes.h as a convenience to other
> users of the notes API?
I actually was hoping to hear that I do not have to do this "check
existing and concatenate", and should let the add_note() function
run its default combine_notes method to do the concatenation.
I found a few things I wasn't quite sure in the notes/notes-merge API, by
the way.
- The combine_notes callback is run when a note is inserted into the
in-core notes tree. I felt that this is way too early if you want to
avoid racing with another process (and the patch tries to wrap
create-notes-commit with lock-ref/write-ref-sha1 pair), but perhaps
this is to deal with a case where the calling program calls add_notes()
on the same object multiple times.
- create_notes_commit() dies under a few conditions, but some callers
that are recording advisory/optional notes might want to get an error
and continue.
I think ideally this patch should handle notes like the following, which
is not quite how I coded it:
- initialize in-core notes tree;
- add bunch of notes, without regard to the existing ones, to in-core
notes tree by calling add_notes();
- lock the notes ref and read the "parent"; we may want to add "wait and
retry for a few times until we get the lock" support at lockfile API
level, but doing it at the application level would be fine.
- call create-notes-commit, which in turn merges the in-core
notes with what collides with those already in "parent" by
calling the combine-notes callback, merges and re-balances
the notes tree, and makes a notes commit object;
- update the notes ref with that notes commit, releasing the lock on
the ref.
next prev parent reply other threads:[~2011-09-08 23:01 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-09-07 20:56 [PATCH 1/2] send-pack: typofix error message Junio C Hamano
2011-09-07 20:57 ` [PATCH 2/2] push -s: skeleton Junio C Hamano
2011-09-07 21:18 ` Shawn Pearce
2011-09-07 22:21 ` Junio C Hamano
2011-09-07 23:23 ` Shawn Pearce
2011-09-08 16:24 ` Junio C Hamano
2011-09-07 22:21 ` Nguyen Thai Ngoc Duy
2011-09-07 22:40 ` Junio C Hamano
2011-09-07 23:55 ` Robin H. Johnson
2011-09-08 20:03 ` Jeff King
2011-09-09 1:30 ` Robin H. Johnson
2011-09-09 16:03 ` Joey Hess
2011-09-09 16:14 ` Drew Northup
2011-09-09 19:12 ` Jeff King
2011-09-08 4:37 ` [PATCH 3/2] Split GPG interface into its own helper library Junio C Hamano
2011-09-08 4:38 ` [PATCH 4/2] push -s: send signed push certificate Junio C Hamano
2011-09-08 5:38 ` [PATCH 5/2] push -s: receiving end Junio C Hamano
2011-09-08 9:31 ` Johan Herland
2011-09-08 16:43 ` Junio C Hamano [this message]
2011-09-08 19:35 ` [PATCH 2/2] push -s: skeleton Jeff King
2011-09-08 20:48 ` Junio C Hamano
2011-09-08 21:02 ` Jeff King
2011-09-08 22:19 ` Junio C Hamano
2011-09-09 15:34 ` Jeff King
2011-09-09 17:32 ` Junio C Hamano
[not found] ` <CAJo=hJsQvRN3Z0xJg9q37Km1g_1qUdJKNQ6n8=a9mv3YjugyVw@mail.gmail.com>
2011-09-09 15:22 ` Jeff King
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=7vvct3x9vn.fsf@alter.siamese.dyndns.org \
--to=gitster@pobox.com \
--cc=git@vger.kernel.org \
--cc=johan@herland.net \
--cc=spearce@spearce.org \
/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.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.