about summary refs log tree commit diff
path: root/third_party/git/resolve-undo.c
diff options
context:
space:
mode:
authorVincent Ambo <mail@tazj.in>2021-09-21T10·03+0300
committerVincent Ambo <mail@tazj.in>2021-09-21T11·29+0300
commit43b1791ec601732ac31195df96781a848360a9ac (patch)
treedaae8d638343295d2f1f7da955e556ef4c958864 /third_party/git/resolve-undo.c
parent2d8e7dc9d9c38127ec4ebd13aee8e8f586a43318 (diff)
chore(3p/git): Unvendor git and track patches instead r/2903
This was vendored a long time ago under the expectation that keeping
it in sync with cgit would be easier this way, but it has proven not
to be a big issue.

On the other hand, a vendored copy of git is an annoying maintenance
burden. It is much easier to rebase the single (dottime) patch that we
have.

This removes the vendored copy of git and instead passes the git
source code to cgit via `pkgs.srcOnly`, which includes the applied
patch so that cgit can continue rendering dottime.

Change-Id: If31f62dea7ce688fd1b9050204e9378019775f2b
Diffstat (limited to 'third_party/git/resolve-undo.c')
-rw-r--r--third_party/git/resolve-undo.c195
1 files changed, 0 insertions, 195 deletions
diff --git a/third_party/git/resolve-undo.c b/third_party/git/resolve-undo.c
deleted file mode 100644
index 236320f179cb..000000000000
--- a/third_party/git/resolve-undo.c
+++ /dev/null
@@ -1,195 +0,0 @@
-#include "cache.h"
-#include "dir.h"
-#include "resolve-undo.h"
-#include "string-list.h"
-
-/* The only error case is to run out of memory in string-list */
-void record_resolve_undo(struct index_state *istate, struct cache_entry *ce)
-{
-	struct string_list_item *lost;
-	struct resolve_undo_info *ui;
-	struct string_list *resolve_undo;
-	int stage = ce_stage(ce);
-
-	if (!stage)
-		return;
-
-	if (!istate->resolve_undo) {
-		resolve_undo = xcalloc(1, sizeof(*resolve_undo));
-		resolve_undo->strdup_strings = 1;
-		istate->resolve_undo = resolve_undo;
-	}
-	resolve_undo = istate->resolve_undo;
-	lost = string_list_insert(resolve_undo, ce->name);
-	if (!lost->util)
-		lost->util = xcalloc(1, sizeof(*ui));
-	ui = lost->util;
-	oidcpy(&ui->oid[stage - 1], &ce->oid);
-	ui->mode[stage - 1] = ce->ce_mode;
-}
-
-void resolve_undo_write(struct strbuf *sb, struct string_list *resolve_undo)
-{
-	struct string_list_item *item;
-	for_each_string_list_item(item, resolve_undo) {
-		struct resolve_undo_info *ui = item->util;
-		int i;
-
-		if (!ui)
-			continue;
-		strbuf_addstr(sb, item->string);
-		strbuf_addch(sb, 0);
-		for (i = 0; i < 3; i++)
-			strbuf_addf(sb, "%o%c", ui->mode[i], 0);
-		for (i = 0; i < 3; i++) {
-			if (!ui->mode[i])
-				continue;
-			strbuf_add(sb, ui->oid[i].hash, the_hash_algo->rawsz);
-		}
-	}
-}
-
-struct string_list *resolve_undo_read(const char *data, unsigned long size)
-{
-	struct string_list *resolve_undo;
-	size_t len;
-	char *endptr;
-	int i;
-	const unsigned rawsz = the_hash_algo->rawsz;
-
-	resolve_undo = xcalloc(1, sizeof(*resolve_undo));
-	resolve_undo->strdup_strings = 1;
-
-	while (size) {
-		struct string_list_item *lost;
-		struct resolve_undo_info *ui;
-
-		len = strlen(data) + 1;
-		if (size <= len)
-			goto error;
-		lost = string_list_insert(resolve_undo, data);
-		if (!lost->util)
-			lost->util = xcalloc(1, sizeof(*ui));
-		ui = lost->util;
-		size -= len;
-		data += len;
-
-		for (i = 0; i < 3; i++) {
-			ui->mode[i] = strtoul(data, &endptr, 8);
-			if (!endptr || endptr == data || *endptr)
-				goto error;
-			len = (endptr + 1) - (char*)data;
-			if (size <= len)
-				goto error;
-			size -= len;
-			data += len;
-		}
-
-		for (i = 0; i < 3; i++) {
-			if (!ui->mode[i])
-				continue;
-			if (size < rawsz)
-				goto error;
-			oidread(&ui->oid[i], (const unsigned char *)data);
-			size -= rawsz;
-			data += rawsz;
-		}
-	}
-	return resolve_undo;
-
-error:
-	string_list_clear(resolve_undo, 1);
-	error("Index records invalid resolve-undo information");
-	return NULL;
-}
-
-void resolve_undo_clear_index(struct index_state *istate)
-{
-	struct string_list *resolve_undo = istate->resolve_undo;
-	if (!resolve_undo)
-		return;
-	string_list_clear(resolve_undo, 1);
-	free(resolve_undo);
-	istate->resolve_undo = NULL;
-	istate->cache_changed |= RESOLVE_UNDO_CHANGED;
-}
-
-int unmerge_index_entry_at(struct index_state *istate, int pos)
-{
-	const struct cache_entry *ce;
-	struct string_list_item *item;
-	struct resolve_undo_info *ru;
-	int i, err = 0, matched;
-	char *name;
-
-	if (!istate->resolve_undo)
-		return pos;
-
-	ce = istate->cache[pos];
-	if (ce_stage(ce)) {
-		/* already unmerged */
-		while ((pos < istate->cache_nr) &&
-		       ! strcmp(istate->cache[pos]->name, ce->name))
-			pos++;
-		return pos - 1; /* return the last entry processed */
-	}
-	item = string_list_lookup(istate->resolve_undo, ce->name);
-	if (!item)
-		return pos;
-	ru = item->util;
-	if (!ru)
-		return pos;
-	matched = ce->ce_flags & CE_MATCHED;
-	name = xstrdup(ce->name);
-	remove_index_entry_at(istate, pos);
-	for (i = 0; i < 3; i++) {
-		struct cache_entry *nce;
-		if (!ru->mode[i])
-			continue;
-		nce = make_cache_entry(istate,
-				       ru->mode[i],
-				       &ru->oid[i],
-				       name, i + 1, 0);
-		if (matched)
-			nce->ce_flags |= CE_MATCHED;
-		if (add_index_entry(istate, nce, ADD_CACHE_OK_TO_ADD)) {
-			err = 1;
-			error("cannot unmerge '%s'", name);
-		}
-	}
-	free(name);
-	if (err)
-		return pos;
-	free(ru);
-	item->util = NULL;
-	return unmerge_index_entry_at(istate, pos);
-}
-
-void unmerge_marked_index(struct index_state *istate)
-{
-	int i;
-
-	if (!istate->resolve_undo)
-		return;
-
-	for (i = 0; i < istate->cache_nr; i++) {
-		const struct cache_entry *ce = istate->cache[i];
-		if (ce->ce_flags & CE_MATCHED)
-			i = unmerge_index_entry_at(istate, i);
-	}
-}
-
-void unmerge_index(struct index_state *istate, const struct pathspec *pathspec)
-{
-	int i;
-
-	if (!istate->resolve_undo)
-		return;
-
-	for (i = 0; i < istate->cache_nr; i++) {
-		const struct cache_entry *ce = istate->cache[i];
-		if (!ce_path_match(istate, ce, pathspec, NULL))
-			continue;
-		i = unmerge_index_entry_at(istate, i);
-	}
-}