From: Thomas Gummerer <t.gummerer@gmail.com>
To: git@vger.kernel.org
Cc: trast@student.ethz.ch, mhagger@alum.mit.edu, gitster@pobox.com,
pclouds@gmail.com, robin.rosenberg@dewire.com,
t.gummerer@gmail.com
Subject: [PATCH/RFC v3 07/13] Read resolve-undo data
Date: Wed, 8 Aug 2012 13:17:55 +0200 [thread overview]
Message-ID: <1344424681-31469-8-git-send-email-t.gummerer@gmail.com> (raw)
In-Reply-To: <1344424681-31469-1-git-send-email-t.gummerer@gmail.com>
Make git read the resolve-undo data from the index.
Since the resolve-undo data is joined with the conflicts in
the ondisk format of the index file version 5, conflicts and
resolved data is read at the same time, and the resolve-undo
data is then converted to the in-memory format.
Helped-by: Thomas Rast <trast@student.ethz.ch>
Signed-off-by: Thomas Gummerer <t.gummerer@gmail.com>
---
read-cache-v5.c | 1 +
resolve-undo.c | 36 ++++++++++++++++++++++++++++++++++++
resolve-undo.h | 2 ++
3 files changed, 39 insertions(+)
diff --git a/read-cache-v5.c b/read-cache-v5.c
index ec1201d..b47398d 100644
--- a/read-cache-v5.c
+++ b/read-cache-v5.c
@@ -494,6 +494,7 @@ static struct directory_entry *read_entries(struct index_state *istate,
int i;
conflict_queue = read_conflicts(de, mmap, mmap_size, fd);
+ resolve_undo_convert_v5(istate, conflict_queue);
for (i = 0; i < de->de_nfiles; i++) {
ce = read_entry(de,
entry_offset,
diff --git a/resolve-undo.c b/resolve-undo.c
index 72b4612..f96c6ba 100644
--- a/resolve-undo.c
+++ b/resolve-undo.c
@@ -170,3 +170,39 @@ void unmerge_index(struct index_state *istate, const char **pathspec)
i = unmerge_index_entry_at(istate, i);
}
}
+
+void resolve_undo_convert_v5(struct index_state *istate,
+ struct conflict_entry *ce)
+{
+ int i;
+
+ while (ce) {
+ struct string_list_item *lost;
+ struct resolve_undo_info *ui;
+ struct conflict_part *cp;
+
+ if (ce->entries && (ce->entries->flags & CONFLICT_CONFLICTED) != 0) {
+ ce = ce->next;
+ continue;
+ }
+ if (!istate->resolve_undo) {
+ istate->resolve_undo = xcalloc(1, sizeof(struct string_list));
+ istate->resolve_undo->strdup_strings = 1;
+ }
+
+ lost = string_list_insert(istate->resolve_undo, ce->name);
+ if (!lost->util)
+ lost->util = xcalloc(1, sizeof(*ui));
+ ui = lost->util;
+
+ cp = ce->entries;
+ for (i = 0; i < 3; i++)
+ ui->mode[i] = 0;
+ while (cp) {
+ ui->mode[conflict_stage(cp) - 1] = cp->entry_mode;
+ hashcpy(ui->sha1[conflict_stage(cp) - 1], cp->sha1);
+ cp = cp->next;
+ }
+ ce = ce->next;
+ }
+}
diff --git a/resolve-undo.h b/resolve-undo.h
index 8458769..ab660a6 100644
--- a/resolve-undo.h
+++ b/resolve-undo.h
@@ -13,4 +13,6 @@ extern void resolve_undo_clear_index(struct index_state *);
extern int unmerge_index_entry_at(struct index_state *, int);
extern void unmerge_index(struct index_state *, const char **);
+extern void resolve_undo_convert_v5(struct index_state *, struct conflict_entry *);
+
#endif
--
1.7.10.GIT
next prev parent reply other threads:[~2012-08-08 11:31 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-08-08 11:17 [PATCH/RFC v3 0/13] Introduce index file format version 5 Thomas Gummerer
2012-08-08 11:17 ` [PATCH/RFC v3 01/13] Move index v2 specific functions to their own file Thomas Gummerer
2012-08-08 12:04 ` Nguyen Thai Ngoc Duy
2012-08-08 19:21 ` Thomas Gummerer
2012-08-09 22:02 ` Junio C Hamano
2012-08-09 22:54 ` Thomas Gummerer
2012-08-10 0:13 ` Junio C Hamano
2012-08-10 2:23 ` Nguyen Thai Ngoc Duy
2012-08-10 14:24 ` Thomas Rast
2012-08-10 14:58 ` Junio C Hamano
2012-08-10 15:40 ` Thomas Gummerer
2012-08-08 11:17 ` [PATCH/RFC v3 02/13] t2104: Don't fail for index versions other than [23] Thomas Gummerer
2012-08-08 11:17 ` [PATCH/RFC v3 03/13] t3700: Avoid interfering with the racy code Thomas Gummerer
2012-08-08 11:17 ` [PATCH/RFC v3 04/13] Add documentation of the index-v5 file format Thomas Gummerer
2012-08-09 22:41 ` Junio C Hamano
2012-08-09 23:10 ` Thomas Gummerer
2012-08-09 23:13 ` Junio C Hamano
2012-08-08 11:17 ` [PATCH/RFC v3 05/13] Make in-memory format aware of stat_crc Thomas Gummerer
2012-08-08 11:17 ` [PATCH/RFC v3 06/13] Read index-v5 Thomas Gummerer
2012-08-08 12:05 ` Nguyen Thai Ngoc Duy
2012-08-08 12:18 ` Johannes Sixt
2012-08-08 17:05 ` Junio C Hamano
2012-08-08 19:29 ` Thomas Gummerer
2012-08-08 11:17 ` Thomas Gummerer [this message]
2012-08-09 22:51 ` [PATCH/RFC v3 07/13] Read resolve-undo data Junio C Hamano
2012-08-09 23:23 ` Thomas Gummerer
2012-08-10 0:02 ` Junio C Hamano
2012-08-10 9:27 ` Thomas Gummerer
2012-08-08 11:17 ` [PATCH/RFC v3 08/13] Read cache-tree in index-v5 Thomas Gummerer
2012-08-08 11:17 ` [PATCH/RFC v3 09/13] Write index-v5 Thomas Gummerer
2012-08-08 11:17 ` [PATCH/RFC v3 10/13] Write index-v5 cache-tree data Thomas Gummerer
2012-08-08 11:17 ` [PATCH/RFC v3 11/13] Write resolve-undo data for index-v5 Thomas Gummerer
2012-08-08 11:18 ` [PATCH/RFC v3 12/13] update-index.c: always rewrite the index when index-version is given Thomas Gummerer
2012-08-08 11:18 ` [PATCH/RFC v3 13/13] p0002-index.sh: add perf test for the index formats Thomas Gummerer
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=1344424681-31469-8-git-send-email-t.gummerer@gmail.com \
--to=t.gummerer@gmail.com \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=mhagger@alum.mit.edu \
--cc=pclouds@gmail.com \
--cc=robin.rosenberg@dewire.com \
--cc=trast@student.ethz.ch \
/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.