summaryrefslogtreecommitdiff
path: root/notes.h
diff options
context:
space:
mode:
authorJohan Herland <johan@herland.net>2010-02-13 22:28:23 +0100
committerJunio C Hamano <gitster@pobox.com>2010-02-13 19:36:13 -0800
commit851c2b3791f24e319c23331887d4b8150ca4d9ba (patch)
treef178c0cfacf7bbda0079d006da35a03dea9dfd12 /notes.h
parent048cdd4665efafde2902cb72376f2ca497254246 (diff)
downloadgit-851c2b3791f24e319c23331887d4b8150ca4d9ba.tar.gz
Teach notes code to properly preserve non-notes in the notes tree
The note tree structure allows for non-note entries to coexist with note entries in a notes tree. Although we certainly expect there to be very few non-notes in a notes tree, we should still support them to a certain degree. This patch teaches the notes code to preserve non-notes when updating the notes tree with write_notes_tree(). Non-notes are not affected by fanout restructuring. For non-notes to be handled correctly, we can no longer allow subtree entries that do not match the fanout structure produced by the notes code itself. This means that fanouts like 4/36, 6/34, 8/32, 4/4/32, etc. are no longer recognized as note subtrees; only 2-based fanouts are allowed (2/38, 2/2/36, 2/2/2/34, etc.). Since the notes code has never at any point _produced_ non-2-based fanouts, it is highly unlikely that this change will cause problems for anyone. The patch also adds some tests verifying the correct handling of non-notes in a notes tree. Signed-off-by: Johan Herland <johan@herland.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'notes.h')
-rw-r--r--notes.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/notes.h b/notes.h
index 20d6e171ff..f98578f91f 100644
--- a/notes.h
+++ b/notes.h
@@ -36,6 +36,7 @@ int combine_notes_ignore(unsigned char *cur_sha1, const unsigned char *new_sha1)
*/
extern struct notes_tree {
struct int_node *root;
+ struct non_note *first_non_note, *prev_non_note;
char *ref;
combine_notes_fn *combine_notes;
int initialized;