All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Nguyễn Thái Ngọc Duy" <pclouds@gmail.com>
To: Nicolas Pitre <nico@fluxnic.net>
Cc: git@vger.kernel.org, "Nguyễn Thái Ngọc Duy" <pclouds@gmail.com>
Subject: [PATCH v2 02/16] pack v4: stop using static/global variables in packv4-create.c
Date: Mon,  9 Sep 2013 20:57:53 +0700	[thread overview]
Message-ID: <1378735087-4813-3-git-send-email-pclouds@gmail.com> (raw)
In-Reply-To: <1378735087-4813-1-git-send-email-pclouds@gmail.com>


Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
---
 packv4-create.c       | 103 ++++++++++++++++++++++++++++----------------------
 packv4-create.h (new) |  11 ++++++
 2 files changed, 69 insertions(+), 45 deletions(-)
 create mode 100644 packv4-create.h

diff --git a/packv4-create.c b/packv4-create.c
index dbc2a03..920a0b4 100644
--- a/packv4-create.c
+++ b/packv4-create.c
@@ -15,6 +15,7 @@
 #include "pack-revindex.h"
 #include "progress.h"
 #include "varint.h"
+#include "packv4-create.h"
 
 
 static int pack_compression_seen;
@@ -145,9 +146,6 @@ static void sort_dict_entries_by_hits(struct dict_table *t)
 	rehash_entries(t);
 }
 
-static struct dict_table *commit_ident_table;
-static struct dict_table *tree_path_table;
-
 /*
  * Parse the author/committer line from a canonical commit object.
  * The 'from' argument points right after the "author " or "committer "
@@ -243,10 +241,10 @@ void dump_dict_table(struct dict_table *t)
 	}
 }
 
-static void dict_dump(void)
+static void dict_dump(struct packv4_tables *v4)
 {
-	dump_dict_table(commit_ident_table);
-	dump_dict_table(tree_path_table);
+	dump_dict_table(v4->commit_ident_table);
+	dump_dict_table(v4->tree_path_table);
 }
 
 /*
@@ -254,10 +252,12 @@ static void dict_dump(void)
  * pack SHA1 table incremented by 1, or the literal SHA1 value prefixed
  * with a zero byte if the needed SHA1 is not available in the table.
  */
-static struct pack_idx_entry *all_objs;
-static unsigned all_objs_nr;
-static int encode_sha1ref(const unsigned char *sha1, unsigned char *buf)
+
+int encode_sha1ref(const struct packv4_tables *v4,
+		   const unsigned char *sha1, unsigned char *buf)
 {
+	unsigned all_objs_nr = v4->all_objs_nr;
+	struct pack_idx_entry *all_objs = v4->all_objs;
 	unsigned lo = 0, hi = all_objs_nr;
 
 	do {
@@ -284,7 +284,8 @@ static int encode_sha1ref(const unsigned char *sha1, unsigned char *buf)
  * strict so to ensure the canonical version may always be
  * regenerated and produce the same hash.
  */
-void *pv4_encode_commit(void *buffer, unsigned long *sizep)
+void *pv4_encode_commit(const struct packv4_tables *v4,
+			void *buffer, unsigned long *sizep)
 {
 	unsigned long size = *sizep;
 	char *in, *tail, *end;
@@ -310,7 +311,7 @@ void *pv4_encode_commit(void *buffer, unsigned long *sizep)
 	if (get_sha1_lowhex(in + 5, sha1) < 0)
 		goto bad_data;
 	in += 46;
-	out += encode_sha1ref(sha1, out);
+	out += encode_sha1ref(v4, sha1, out);
 
 	/* count how many "parent" lines */
 	nb_parents = 0;
@@ -325,7 +326,7 @@ void *pv4_encode_commit(void *buffer, unsigned long *sizep)
 	while (nb_parents--) {
 		if (get_sha1_lowhex(in + 7, sha1))
 			goto bad_data;
-		out += encode_sha1ref(sha1, out);
+		out += encode_sha1ref(v4, sha1, out);
 		in += 48;
 	}
 
@@ -337,7 +338,7 @@ void *pv4_encode_commit(void *buffer, unsigned long *sizep)
 	end = get_nameend_and_tz(in, &tz_val);
 	if (!end)
 		goto bad_data;
-	author_index = dict_add_entry(commit_ident_table, tz_val, in, end - in);
+	author_index = dict_add_entry(v4->commit_ident_table, tz_val, in, end - in);
 	if (author_index < 0)
 		goto bad_dict;
 	author_time = strtoul(end, &end, 10);
@@ -353,7 +354,7 @@ void *pv4_encode_commit(void *buffer, unsigned long *sizep)
 	end = get_nameend_and_tz(in, &tz_val);
 	if (!end)
 		goto bad_data;
-	commit_index = dict_add_entry(commit_ident_table, tz_val, in, end - in);
+	commit_index = dict_add_entry(v4->commit_ident_table, tz_val, in, end - in);
 	if (commit_index < 0)
 		goto bad_dict;
 	commit_time = strtoul(end, &end, 10);
@@ -436,7 +437,8 @@ static int compare_tree_entries(struct name_entry *e1, struct name_entry *e2)
  * If a delta buffer is provided, we may encode multiple ranges of tree
  * entries against that buffer.
  */
-void *pv4_encode_tree(void *_buffer, unsigned long *sizep,
+void *pv4_encode_tree(const struct packv4_tables *v4,
+		      void *_buffer, unsigned long *sizep,
 		      void *delta, unsigned long delta_size,
 		      const unsigned char *delta_sha1)
 {
@@ -551,7 +553,7 @@ void *pv4_encode_tree(void *_buffer, unsigned long *sizep,
 			cp += encode_varint(copy_start, cp);
 			cp += encode_varint(copy_count, cp);
 			if (first_delta)
-				cp += encode_sha1ref(delta_sha1, cp);
+				cp += encode_sha1ref(v4, delta_sha1, cp);
 
 			/*
 			 * Now let's make sure this is going to take less
@@ -577,7 +579,7 @@ void *pv4_encode_tree(void *_buffer, unsigned long *sizep,
 		}
 
 		pathlen = tree_entry_len(&name_entry);
-		index = dict_add_entry(tree_path_table, name_entry.mode,
+		index = dict_add_entry(v4->tree_path_table, name_entry.mode,
 				       name_entry.path, pathlen);
 		if (index < 0) {
 			error("missing tree dict entry");
@@ -585,7 +587,7 @@ void *pv4_encode_tree(void *_buffer, unsigned long *sizep,
 			return NULL;
 		}
 		out += encode_varint(index << 1, out);
-		out += encode_sha1ref(name_entry.sha1, out);
+		out += encode_sha1ref(v4, name_entry.sha1, out);
 	}
 
 	if (copy_count) {
@@ -596,7 +598,7 @@ void *pv4_encode_tree(void *_buffer, unsigned long *sizep,
 		cp += encode_varint(copy_start, cp);
 		cp += encode_varint(copy_count, cp);
 		if (first_delta)
-			cp += encode_sha1ref(delta_sha1, cp);
+			cp += encode_sha1ref(v4, delta_sha1, cp);
 		if (copy_count >= min_tree_copy &&
 		    cp - copy_buf < out - &buffer[copy_pos]) {
 			out = buffer + copy_pos;
@@ -649,14 +651,15 @@ static struct pack_idx_entry **sort_objs_by_offset(struct pack_idx_entry *list,
 	return sorted;
 }
 
-static int create_pack_dictionaries(struct packed_git *p,
+static int create_pack_dictionaries(struct packv4_tables *v4,
+				    struct packed_git *p,
 				    struct pack_idx_entry **obj_list)
 {
 	struct progress *progress_state;
 	unsigned int i;
 
-	commit_ident_table = create_dict_table();
-	tree_path_table = create_dict_table();
+	v4->commit_ident_table = create_dict_table();
+	v4->tree_path_table = create_dict_table();
 
 	progress_state = start_progress("Scanning objects", p->num_objects);
 	for (i = 0; i < p->num_objects; i++) {
@@ -679,11 +682,11 @@ static int create_pack_dictionaries(struct packed_git *p,
 		switch (type) {
 		case OBJ_COMMIT:
 			add_dict_entries = add_commit_dict_entries;
-			dict = commit_ident_table;
+			dict = v4->commit_ident_table;
 			break;
 		case OBJ_TREE:
 			add_dict_entries = add_tree_dict_entries;
-			dict = tree_path_table;
+			dict = v4->tree_path_table;
 			break;
 		default:
 			continue;
@@ -776,9 +779,13 @@ static unsigned int packv4_write_header(struct sha1file *f, unsigned nr_objects)
 	return sizeof(hdr);
 }
 
-static unsigned long packv4_write_tables(struct sha1file *f, unsigned nr_objects,
-					 struct pack_idx_entry *objs)
+unsigned long packv4_write_tables(struct sha1file *f,
+				  const struct packv4_tables *v4)
 {
+	unsigned nr_objects = v4->all_objs_nr;
+	struct pack_idx_entry *objs = v4->all_objs;
+	struct dict_table *commit_ident_table = v4->commit_ident_table;
+	struct dict_table *tree_path_table = v4->tree_path_table;
 	unsigned i;
 	unsigned long written = 0;
 
@@ -823,7 +830,8 @@ static int write_object_header(struct sha1file *f, enum object_type type, unsign
 	return len;
 }
 
-static unsigned long copy_object_data(struct sha1file *f, struct packed_git *p,
+static unsigned long copy_object_data(struct packv4_tables *v4,
+				      struct sha1file *f, struct packed_git *p,
 				      off_t offset)
 {
 	struct pack_window *w_curs = NULL;
@@ -850,11 +858,13 @@ static unsigned long copy_object_data(struct sha1file *f, struct packed_git *p,
 		if (base_offset <= 0 || base_offset >= offset)
 			die("delta offset out of bound");
 		revidx = find_pack_revindex(p, base_offset);
-		reflen = encode_sha1ref(nth_packed_object_sha1(p, revidx->nr), buf);
+		reflen = encode_sha1ref(v4,
+					nth_packed_object_sha1(p, revidx->nr),
+					buf);
 		sha1write(f, buf, reflen);
 		written += reflen;
 	} else if (type == OBJ_REF_DELTA) {
-		reflen = encode_sha1ref(src + hdrlen, buf);
+		reflen = encode_sha1ref(v4, src + hdrlen, buf);
 		hdrlen += 20;
 		sha1write(f, buf, reflen);
 		written += reflen;
@@ -919,7 +929,8 @@ static unsigned char *get_delta_base(struct packed_git *p, off_t offset,
 	return sha1_buf;
 }
 
-static off_t packv4_write_object(struct sha1file *f, struct packed_git *p,
+static off_t packv4_write_object(struct packv4_tables *v4,
+				 struct sha1file *f, struct packed_git *p,
 				 struct pack_idx_entry *obj)
 {
 	void *src, *result;
@@ -941,7 +952,7 @@ static off_t packv4_write_object(struct sha1file *f, struct packed_git *p,
 	case OBJ_TREE:
 		break;
 	default:
-		return copy_object_data(f, p, obj->offset);
+		return copy_object_data(v4, f, p, obj->offset);
 	}
 
 	/* The rest is converted into their new format */
@@ -955,7 +966,7 @@ static off_t packv4_write_object(struct sha1file *f, struct packed_git *p,
 
 	switch (type) {
 	case OBJ_COMMIT:
-		result = pv4_encode_commit(src, &buf_size);
+		result = pv4_encode_commit(v4, src, &buf_size);
 		break;
 	case OBJ_TREE:
 		if (packed_type != OBJ_TREE) {
@@ -972,11 +983,12 @@ static off_t packv4_write_object(struct sha1file *f, struct packed_git *p,
 			if (!ref || ref_type != OBJ_TREE)
 				die("cannot obtain delta base for %s",
 						sha1_to_hex(obj->sha1));
-			result = pv4_encode_tree(src, &buf_size,
+			result = pv4_encode_tree(v4, src, &buf_size,
 						 ref, ref_size, ref_sha1);
 			free(ref);
 		} else {
-			result = pv4_encode_tree(src, &buf_size, NULL, 0, NULL);
+			result = pv4_encode_tree(v4, src, &buf_size,
+						 NULL, 0, NULL);
 		}
 		break;
 	default:
@@ -987,7 +999,7 @@ static off_t packv4_write_object(struct sha1file *f, struct packed_git *p,
 		warning("can't convert %s object %s",
 			typename(type), sha1_to_hex(obj->sha1));
 		/* fall back to copy the object in its original form */
-		return copy_object_data(f, p, obj->offset);
+		return copy_object_data(v4, f, p, obj->offset);
 	}
 
 	/* Use bit 3 to indicate a special type encoding */
@@ -1041,7 +1053,7 @@ static struct packed_git *open_pack(const char *path)
 	return p;
 }
 
-static void process_one_pack(char *src_pack, char *dst_pack)
+static void process_one_pack(struct packv4_tables *v4, char *src_pack, char *dst_pack)
 {
 	struct packed_git *p;
 	struct sha1file *f;
@@ -1061,26 +1073,26 @@ static void process_one_pack(char *src_pack, char *dst_pack)
 	objs = get_packed_object_list(p);
 	p_objs = sort_objs_by_offset(objs, nr_objects);
 
-	create_pack_dictionaries(p, p_objs);
-	sort_dict_entries_by_hits(commit_ident_table);
-	sort_dict_entries_by_hits(tree_path_table);
+	create_pack_dictionaries(v4, p, p_objs);
+	sort_dict_entries_by_hits(v4->commit_ident_table);
+	sort_dict_entries_by_hits(v4->tree_path_table);
 
 	packname = normalize_pack_name(dst_pack);
 	f = packv4_open(packname);
 	if (!f)
 		die("unable to open destination pack");
 	written += packv4_write_header(f, nr_objects);
-	written += packv4_write_tables(f, nr_objects, objs);
+	written += packv4_write_tables(f, v4);
 
 	/* Let's write objects out, updating the object index list in place */
 	progress_state = start_progress("Writing objects", nr_objects);
-	all_objs = objs;
-	all_objs_nr = nr_objects;
+	v4->all_objs = objs;
+	v4->all_objs_nr = nr_objects;
 	for (i = 0; i < nr_objects; i++) {
 		off_t obj_pos = written;
 		struct pack_idx_entry *obj = p_objs[i];
 		crc32_begin(f);
-		written += packv4_write_object(f, p, obj);
+		written += packv4_write_object(v4, f, p, obj);
 		obj->offset = obj_pos;
 		obj->crc32 = crc32_end(f);
 		display_progress(progress_state, i+1);
@@ -1114,6 +1126,7 @@ static int git_pack_config(const char *k, const char *v, void *cb)
 
 int main(int argc, char *argv[])
 {
+	struct packv4_tables v4;
 	char *src_pack, *dst_pack;
 
 	if (argc == 3) {
@@ -1131,8 +1144,8 @@ int main(int argc, char *argv[])
 	git_config(git_pack_config, NULL);
 	if (!pack_compression_seen && core_compression_seen)
 		pack_compression_level = core_compression_level;
-	process_one_pack(src_pack, dst_pack);
+	process_one_pack(&v4, src_pack, dst_pack);
 	if (0)
-		dict_dump();
+		dict_dump(&v4);
 	return 0;
 }
diff --git a/packv4-create.h b/packv4-create.h
new file mode 100644
index 0000000..0c8c77b
--- /dev/null
+++ b/packv4-create.h
@@ -0,0 +1,11 @@
+#ifndef PACKV4_CREATE_H
+#define PACKV4_CREATE_H
+
+struct packv4_tables {
+	struct pack_idx_entry *all_objs;
+	unsigned all_objs_nr;
+	struct dict_table *commit_ident_table;
+	struct dict_table *tree_path_table;
+};
+
+#endif
-- 
1.8.2.83.gc99314b

  parent reply	other threads:[~2013-09-09 13:55 UTC|newest]

Thread overview: 124+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-09-05  6:19 [PATCH 00/38] pack version 4 basic functionalities Nicolas Pitre
2013-09-05  6:19 ` [PATCH 01/38] pack v4: initial pack dictionary structure and code Nicolas Pitre
2013-09-05  6:19 ` [PATCH 02/38] export packed_object_info() Nicolas Pitre
2013-09-05  6:19 ` [PATCH 03/38] pack v4: scan tree objects Nicolas Pitre
2013-09-05  6:19 ` [PATCH 04/38] pack v4: add tree entry mode support to dictionary entries Nicolas Pitre
2013-09-05  6:19 ` [PATCH 05/38] pack v4: add commit object parsing Nicolas Pitre
2013-09-05 10:30   ` SZEDER Gábor
2013-09-05 17:30     ` Nicolas Pitre
2013-09-05  6:19 ` [PATCH 06/38] pack v4: split the object list and dictionary creation Nicolas Pitre
2013-09-05  6:19 ` [PATCH 07/38] pack v4: move to struct pack_idx_entry and get rid of our own struct idx_entry Nicolas Pitre
2013-09-05  6:19 ` [PATCH 08/38] pack v4: basic SHA1 reference encoding Nicolas Pitre
2013-09-05  6:19 ` [PATCH 09/38] introduce get_sha1_lowhex() Nicolas Pitre
2013-09-05  6:19 ` [PATCH 10/38] pack v4: commit object encoding Nicolas Pitre
2013-09-06  6:57   ` Junio C Hamano
2013-09-06 21:28     ` Nicolas Pitre
2013-09-06 22:08       ` Junio C Hamano
2013-09-07  4:41         ` Nicolas Pitre
2013-09-05  6:19 ` [PATCH 11/38] pack v4: tree " Nicolas Pitre
2013-09-05  6:19 ` [PATCH 12/38] pack v4: dictionary table output Nicolas Pitre
2013-09-05  6:19 ` [PATCH 13/38] pack v4: creation code Nicolas Pitre
2013-09-05  6:19 ` [PATCH 14/38] pack v4: object headers Nicolas Pitre
2013-09-05  6:19 ` [PATCH 15/38] pack v4: object data copy Nicolas Pitre
2013-09-05  6:19 ` [PATCH 16/38] pack v4: object writing Nicolas Pitre
2013-09-05  6:19 ` [PATCH 17/38] pack v4: tree object delta encoding Nicolas Pitre
2013-09-05  6:19 ` [PATCH 18/38] pack v4: load delta candidate for encoding tree objects Nicolas Pitre
2013-09-05  6:19 ` [PATCH 19/38] packv4-create: optimize delta encoding Nicolas Pitre
2013-09-05  6:19 ` [PATCH 20/38] pack v4: honor pack.compression config option Nicolas Pitre
2013-09-05  6:19 ` [PATCH 21/38] pack v4: relax commit parsing a bit Nicolas Pitre
2013-09-05  6:19 ` [PATCH 22/38] pack index v3 Nicolas Pitre
2013-09-05  6:19 ` [PATCH 23/38] packv4-create: normalize pack name to properly generate the pack index file name Nicolas Pitre
2013-09-05  6:19 ` [PATCH 24/38] packv4-create: add progress display Nicolas Pitre
2013-09-05  6:19 ` [PATCH 25/38] pack v4: initial pack index v3 support on the read side Nicolas Pitre
2013-09-05  6:19 ` [PATCH 26/38] pack v4: object header decode Nicolas Pitre
2013-09-05  6:19 ` [PATCH 27/38] pack v4: code to obtain a SHA1 from a sha1ref Nicolas Pitre
2013-09-05  6:19 ` [PATCH 28/38] pack v4: code to load and prepare a pack dictionary table for use Nicolas Pitre
2013-09-05  6:19 ` [PATCH 29/38] pack v4: code to retrieve a name Nicolas Pitre
2013-09-05  6:19 ` [PATCH 30/38] pack v4: code to recreate a canonical commit object Nicolas Pitre
2013-09-05  6:19 ` [PATCH 31/38] sha1_file.c: make use of decode_varint() Nicolas Pitre
2013-09-05  7:35   ` SZEDER Gábor
2013-09-05  6:19 ` [PATCH 32/38] pack v4: parse delta base reference Nicolas Pitre
2013-09-05  6:19 ` [PATCH 33/38] pack v4: we can read commit objects now Nicolas Pitre
2013-09-05  6:19 ` [PATCH 34/38] pack v4: code to retrieve a path component Nicolas Pitre
2013-09-05  6:19 ` [PATCH 35/38] pack v4: decode tree objects Nicolas Pitre
2013-09-05  6:19 ` [PATCH 36/38] pack v4: get " Nicolas Pitre
2013-09-05  6:20 ` [PATCH 37/38] pack v4: introduce "escape hatches" in the name and path indexes Nicolas Pitre
2013-09-05 19:02   ` Nicolas Pitre
2013-09-05 21:48     ` Nicolas Pitre
2013-09-05 23:57     ` Duy Nguyen
2013-09-05  6:20 ` [PATCH 38/38] packv4-create: add a command line argument to limit tree copy sequences Nicolas Pitre
2013-09-07 10:43 ` [PATCH 00/12] pack v4 support in index-pack Nguyễn Thái Ngọc Duy
2013-09-07 10:43   ` [PATCH 01/12] pack v4: split pv4_create_dict() out of load_dict() Nguyễn Thái Ngọc Duy
2013-09-07 10:43   ` [PATCH 02/12] index-pack: split out varint decoding code Nguyễn Thái Ngọc Duy
2013-09-07 10:43   ` [PATCH 03/12] index-pack: do not allocate buffer for unpacking deltas in the first pass Nguyễn Thái Ngọc Duy
2013-09-07 10:43   ` [PATCH 04/12] index-pack: split inflate/digest code out of unpack_entry_data Nguyễn Thái Ngọc Duy
2013-09-07 10:43   ` [PATCH 05/12] index-pack: parse v4 header and dictionaries Nguyễn Thái Ngọc Duy
2013-09-08  2:14     ` Nicolas Pitre
2013-09-07 10:43   ` [PATCH 06/12] index-pack: make sure all objects are registered in v4's SHA-1 table Nguyễn Thái Ngọc Duy
2013-09-07 10:43   ` [PATCH 07/12] index-pack: parse v4 commit format Nguyễn Thái Ngọc Duy
2013-09-07 10:43   ` [PATCH 08/12] index-pack: parse v4 tree format Nguyễn Thái Ngọc Duy
2013-09-08  2:52     ` Nicolas Pitre
2013-09-07 10:43   ` [PATCH 09/12] index-pack: move delta base queuing code to unpack_raw_entry Nguyễn Thái Ngọc Duy
2013-09-07 10:43   ` [PATCH 10/12] index-pack: record all delta bases in v4 (tree and ref-delta) Nguyễn Thái Ngọc Duy
2013-09-07 10:43   ` [PATCH 11/12] index-pack: skip looking for ofs-deltas in v4 as they are not allowed Nguyễn Thái Ngọc Duy
2013-09-07 10:43   ` [PATCH 12/12] index-pack: resolve v4 one-base trees Nguyễn Thái Ngọc Duy
2013-09-08  3:28     ` Nicolas Pitre
2013-09-08  3:44       ` Duy Nguyen
2013-09-08  7:22   ` [PATCH v2 00/14] pack v4 support in index-pack Nguyễn Thái Ngọc Duy
2013-09-08  7:22     ` [PATCH v2 01/14] pack v4: split pv4_create_dict() out of load_dict() Nguyễn Thái Ngọc Duy
2013-09-08  7:22     ` [PATCH v2 02/14] pack v4: add pv4_free_dict() Nguyễn Thái Ngọc Duy
2013-09-08  7:22     ` [PATCH v2 03/14] index-pack: add more comments on some big functions Nguyễn Thái Ngọc Duy
2013-09-08  7:22     ` [PATCH v2 04/14] index-pack: split out varint decoding code Nguyễn Thái Ngọc Duy
2013-09-08  7:22     ` [PATCH v2 05/14] index-pack: do not allocate buffer for unpacking deltas in the first pass Nguyễn Thái Ngọc Duy
2013-09-08  7:22     ` [PATCH v2 06/14] index-pack: split inflate/digest code out of unpack_entry_data Nguyễn Thái Ngọc Duy
2013-09-08  7:22     ` [PATCH v2 07/14] index-pack: parse v4 header and dictionaries Nguyễn Thái Ngọc Duy
2013-09-08  7:22     ` [PATCH v2 08/14] index-pack: make sure all objects are registered in v4's SHA-1 table Nguyễn Thái Ngọc Duy
2013-09-08  7:22     ` [PATCH v2 09/14] index-pack: parse v4 commit format Nguyễn Thái Ngọc Duy
2013-09-08  7:22     ` [PATCH v2 10/14] index-pack: parse v4 tree format Nguyễn Thái Ngọc Duy
2013-09-08  7:22     ` [PATCH v2 11/14] index-pack: move delta base queuing code to unpack_raw_entry Nguyễn Thái Ngọc Duy
2013-09-08  7:22     ` [PATCH v2 12/14] index-pack: record all delta bases in v4 (tree and ref-delta) Nguyễn Thái Ngọc Duy
2013-09-08  7:22     ` [PATCH v2 13/14] index-pack: skip looking for ofs-deltas in v4 as they are not allowed Nguyễn Thái Ngọc Duy
2013-09-08  7:22     ` [PATCH v2 14/14] index-pack: resolve v4 one-base trees Nguyễn Thái Ngọc Duy
2013-09-08 15:04 ` [PATCH 00/11] pack v4 support in pack-objects Nguyễn Thái Ngọc Duy
2013-09-08 15:04   ` [PATCH 01/11] pack v4: allocate dicts from the beginning Nguyễn Thái Ngọc Duy
2013-09-08 15:04   ` [PATCH 02/11] pack v4: stop using static/global variables in packv4-create.c Nguyễn Thái Ngọc Duy
2013-09-08 15:04   ` [PATCH 03/11] pack v4: move packv4-create.c to libgit.a Nguyễn Thái Ngọc Duy
2013-09-08 20:56     ` Nicolas Pitre
2013-09-08 15:04   ` [PATCH 04/11] pack v4: add version argument to write_pack_header Nguyễn Thái Ngọc Duy
2013-09-08 15:04   ` [PATCH 05/11] pack-write.c: add pv4_encode_in_pack_object_header Nguyễn Thái Ngọc Duy
2013-09-08 20:51     ` Nicolas Pitre
2013-09-08 15:04   ` [PATCH 06/11] pack-objects: add --version to specify written pack version Nguyễn Thái Ngọc Duy
2013-09-08 15:04   ` [PATCH 07/11] list-objects.c: add show_tree_entry callback to traverse_commit_list Nguyễn Thái Ngọc Duy
2013-09-08 15:04   ` [PATCH 08/11] pack-objects: create pack v4 tables Nguyễn Thái Ngọc Duy
2013-09-09 10:40     ` Duy Nguyen
2013-09-09 13:07       ` Nicolas Pitre
2013-09-09 15:21         ` Junio C Hamano
2013-09-08 15:04   ` [PATCH 09/11] pack-objects: do not cache delta for v4 trees Nguyễn Thái Ngọc Duy
2013-09-08 15:04   ` [PATCH 10/11] pack-objects: exclude commits out of delta objects in v4 Nguyễn Thái Ngọc Duy
2013-09-08 15:04   ` [PATCH 11/11] pack-objects: support writing pack v4 Nguyễn Thái Ngọc Duy
2013-09-09 13:57   ` [PATCH v2 00/16] pack v4 support in pack-objects Nguyễn Thái Ngọc Duy
2013-09-09 13:57     ` [PATCH v2 01/16] pack v4: allocate dicts from the beginning Nguyễn Thái Ngọc Duy
2013-09-09 13:57     ` Nguyễn Thái Ngọc Duy [this message]
2013-09-09 13:57     ` [PATCH v2 03/16] pack v4: move packv4-create.c to libgit.a Nguyễn Thái Ngọc Duy
2013-09-09 13:57     ` [PATCH v2 04/16] pack v4: add version argument to write_pack_header Nguyễn Thái Ngọc Duy
2013-09-09 13:57     ` [PATCH v2 05/16] pack_write: tighten valid object type check in encode_in_pack_object_header Nguyễn Thái Ngọc Duy
2013-09-09 13:57     ` [PATCH v2 06/16] pack-write.c: add pv4_encode_object_header Nguyễn Thái Ngọc Duy
2013-09-09 13:57     ` [PATCH v2 07/16] pack-objects: add --version to specify written pack version Nguyễn Thái Ngọc Duy
2013-09-09 13:57     ` [PATCH v2 08/16] list-objects.c: add show_tree_entry callback to traverse_commit_list Nguyễn Thái Ngọc Duy
2013-09-09 13:58     ` [PATCH v2 09/16] pack-objects: do not cache delta for v4 trees Nguyễn Thái Ngọc Duy
2013-09-09 13:58     ` [PATCH v2 10/16] pack-objects: exclude commits out of delta objects in v4 Nguyễn Thái Ngọc Duy
2013-09-09 13:58     ` [PATCH v2 11/16] pack-objects: create pack v4 tables Nguyễn Thái Ngọc Duy
2013-09-09 13:58     ` [PATCH v2 12/16] pack-objects: prepare SHA-1 table in v4 Nguyễn Thái Ngọc Duy
2013-09-09 13:58     ` [PATCH v2 13/16] pack-objects: support writing pack v4 Nguyễn Thái Ngọc Duy
2013-09-09 13:58     ` [PATCH v2 14/16] pack v4: support "end-of-pack" indicator in index-pack and pack-objects Nguyễn Thái Ngọc Duy
2013-09-09 13:58     ` [PATCH v2 15/16] index-pack: use nr_objects_final as sha1_table size Nguyễn Thái Ngọc Duy
2013-09-09 15:01       ` Nicolas Pitre
2013-09-09 18:34         ` Junio C Hamano
2013-09-09 18:46           ` Nicolas Pitre
2013-09-09 18:56             ` Junio C Hamano
2013-09-09 19:11               ` Nicolas Pitre
2013-09-09 19:30                 ` Junio C Hamano
2013-09-09 19:56                   ` Nicolas Pitre
2013-09-10  0:45         ` Duy Nguyen
2013-09-12 15:34           ` Nicolas Pitre
2013-09-09 13:58     ` [PATCH v2 16/16] index-pack: support completing thin packs v4 Nguyễn Thái Ngọc Duy

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=1378735087-4813-3-git-send-email-pclouds@gmail.com \
    --to=pclouds@gmail.com \
    --cc=git@vger.kernel.org \
    --cc=nico@fluxnic.net \
    /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.