From 8e43a1d010e22a0e432de440b08cc4389d8370f9 Mon Sep 17 00:00:00 2001 From: Florian Achleitner Date: Wed, 19 Sep 2012 17:21:27 +0200 Subject: remote-svn: add incremental import Search for a note attached to the ref to update and read it's 'Revision-number:'-line. Start import from the next svn revision. If there is no next revision in the svn repo, svnrdump terminates with a message on stderr an non-zero return value. This looks a little weird, but there is no other way to know whether there is a new revision in the svn repo. On the start of an incremental import, the parent of the first commit in the fast-import stream is set to the branch name to update. All following commits specify their parent by a mark number. Previous mark files are currently not reused. Signed-off-by: Florian Achleitner Acked-by: David Michael Barr Signed-off-by: Junio C Hamano --- vcs-svn/fast_export.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'vcs-svn/fast_export.c') diff --git a/vcs-svn/fast_export.c b/vcs-svn/fast_export.c index df51c59ca..f2b23c81d 100644 --- a/vcs-svn/fast_export.c +++ b/vcs-svn/fast_export.c @@ -68,13 +68,19 @@ void fast_export_modify(const char *path, uint32_t mode, const char *dataref) } void fast_export_begin_note(uint32_t revision, const char *author, - const char *log, unsigned long timestamp) + const char *log, unsigned long timestamp, const char *note_ref) { + static int firstnote = 1; size_t loglen = strlen(log); - printf("commit refs/notes/svn/revs\n"); + printf("commit %s\n", note_ref); printf("committer %s <%s@%s> %ld +0000\n", author, author, "local", timestamp); printf("data %"PRIuMAX"\n", (uintmax_t)loglen); fwrite(log, loglen, 1, stdout); + if (firstnote) { + if (revision > 1) + printf("from %s^0", note_ref); + firstnote = 0; + } fputc('\n', stdout); } -- cgit v1.2.1