RE: [PATCH v6 15/16] remote-svn: add marks-file regeneration

From: Joachim Schmitz <hidden>
Date: 2016-06-15 22:54:34

From: Joachim Schmitz [mailto:jojo@schmitz-digital.de]
Sent: Saturday, August 25, 2012 5:55 PM
To: 'florian.achleitner.2.6.31@gmail.com'
Cc: git@vger.kernel.org
Subject: Re: [PATCH v6 15/16] remote-svn: add marks-file regeneration

"Florian Achleitner" [off-list ref] schrieb im Newsbeitrag news:<1345662961-9587-16-git-send-email-
florian.achleitner.2.6.31@gmail.com>...
quoted
fast-import mark files are stored outside the object database and are
therefore not fetched and can be lost somehow else.  marks provide a
svn revision --> git sha1 mapping, while the notes that are attached
to each commit when it is imported provide a git sha1 --> svn revision
mapping.

If the marks file is not available or not plausible, regenerate it by
walking through the notes tree.  , i.e.  The plausibility check tests
if the highest revision in the marks file matches the revision of the
top ref. It doesn't ensure that the mark file is completely correct.
This could only be done with an effort equal to unconditional
regeneration.

Signed-off-by: Florian Achleitner <redacted>
Signed-off-by: Junio C Hamano <redacted>
---
 remote-testsvn.c |   68 ++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 68 insertions(+)
diff --git a/remote-testsvn.c b/remote-testsvn.c
index e90d221..09dc304 100644
--- a/remote-testsvn.c
+++ b/remote-testsvn.c
...
quoted
+static void check_or_regenerate_marks(int latestrev) {
+	FILE *marksfile;
+	char *line = NULL;
+	size_t linelen = 0;
+	struct strbuf sb = STRBUF_INIT;
+	int found = 0;
+
+	if (latestrev < 1)
+		return;
+
+	init_notes(NULL, notes_ref, NULL, 0);
+	marksfile = fopen(marksfilename, "r");
+	if (!marksfile) {
+		regenerate_marks();
+		marksfile = fopen(marksfilename, "r");
+		if (!marksfile)
+			die_errno("cannot read marks file %s!", marksfilename);
+		fclose(marksfile);
+	} else {
+		strbuf_addf(&sb, ":%d ", latestrev);
+		while (getline(&line, &linelen, marksfile) != -1) {
getline() is not available to anybody, e.g. it is not in HP NonStop.
I'd like to confirm that Ramsey's patch works for me too, so I second his request.
(Subject: [PATCH 1/3] remote-testsvn.c: Avoid the getline() GNU extension function)

Bye, Jojo
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help