@matheusbsbs / matheus-bagliano / commits / e605164d1d
Fork 0

Add a sample user for the svndump library

The svn-fe tool takes a Subversion dump file as input and produces a fast-import stream as output. This can be useful as a low-level tool in building other importers, or for debugging the vcs-svn library. make svn-fe make svn-fe.1 to test. Signed-off-by: Jonathan Nieder <jrnieder@gmail.com> Signed-off-by: Ramkumar Ramachandra <artagnon@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Jonathan Nieder committed Jul 15, 2010 at 18:25 UTC e605164d1da51087882a468bcf3f5d36d3a9d4ba
4 files changed +147
contrib/svn-fe/.gitignore new
+3
@@ -0,0 +1,3 @@
1 +/*.xml
2 +/*.1
3 +/*.html
contrib/svn-fe/Makefile new
+63
@@ -0,0 +1,63 @@
1 +all:: svn-fe$X
2 +
3 +CC = gcc
4 +RM = rm -f
5 +MV = mv
6 +
7 +CFLAGS = -g -O2 -Wall
8 +LDFLAGS =
9 +ALL_CFLAGS = $(CFLAGS)
10 +ALL_LDFLAGS = $(LDFLAGS)
11 +EXTLIBS =
12 +
13 +GIT_LIB = ../../libgit.a
14 +VCSSVN_LIB = ../../vcs-svn/lib.a
15 +LIBS = $(VCSSVN_LIB) $(GIT_LIB) $(EXTLIBS)
16 +
17 +QUIET_SUBDIR0 = +$(MAKE) -C # space to separate -C and subdir
18 +QUIET_SUBDIR1 =
19 +
20 +ifneq ($(findstring $(MAKEFLAGS),w),w)
21 +PRINT_DIR = --no-print-directory
22 +else # "make -w"
23 +NO_SUBDIR = :
24 +endif
25 +
26 +ifneq ($(findstring $(MAKEFLAGS),s),s)
27 +ifndef V
28 + QUIET_CC = @echo ' ' CC $@;
29 + QUIET_LINK = @echo ' ' LINK $@;
30 + QUIET_SUBDIR0 = +@subdir=
31 + QUIET_SUBDIR1 = ;$(NO_SUBDIR) echo ' ' SUBDIR $$subdir; \
32 + $(MAKE) $(PRINT_DIR) -C $$subdir
33 +endif
34 +endif
35 +
36 +svn-fe$X: svn-fe.o $(VCSSVN_LIB) $(GIT_LIB)
37 + $(QUIET_LINK)$(CC) $(ALL_CFLAGS) -o $@ svn-fe.o \
38 + $(ALL_LDFLAGS) $(LIBS)
39 +
40 +svn-fe.o: svn-fe.c ../../vcs-svn/svndump.h
41 + $(QUIET_CC)$(CC) -o $*.o -c $(ALL_CFLAGS) $<
42 +
43 +svn-fe.html: svn-fe.txt
44 + $(QUIET_SUBDIR0)../../Documentation $(QUIET_SUBDIR1) \
45 + MAN_TXT=../contrib/svn-fe/svn-fe.txt \
46 + ../contrib/svn-fe/$@
47 +
48 +svn-fe.1: svn-fe.txt
49 + $(QUIET_SUBDIR0)../../Documentation $(QUIET_SUBDIR1) \
50 + MAN_TXT=../contrib/svn-fe/svn-fe.txt \
51 + ../contrib/svn-fe/$@
52 + $(MV) ../../Documentation/svn-fe.1 .
53 +
54 +../../vcs-svn/lib.a: FORCE
55 + $(QUIET_SUBDIR0)../.. $(QUIET_SUBDIR1) vcs-svn/lib.a
56 +
57 +../../libgit.a: FORCE
58 + $(QUIET_SUBDIR0)../.. $(QUIET_SUBDIR1) libgit.a
59 +
60 +clean:
61 + $(RM) svn-fe$X svn-fe.o svn-fe.html svn-fe.xml svn-fe.1
62 +
63 +.PHONY: all clean FORCE
contrib/svn-fe/svn-fe.c new
+15
@@ -0,0 +1,15 @@
1 +/*
2 + * This file is in the public domain.
3 + * You may freely use, modify, distribute, and relicense it.
4 + */
5 +
6 +#include <stdlib.h>
7 +#include "vcs-svn/svndump.h"
8 +
9 +int main(int argc, char **argv)
10 +{
11 + svndump_init(NULL);
12 + svndump_read((argc > 1) ? argv[1] : NULL);
13 + svndump_reset();
14 + return 0;
15 +}
contrib/svn-fe/svn-fe.txt new
+66
@@ -0,0 +1,66 @@
1 +svn-fe(1)
2 +=========
3 +
4 +NAME
5 +----
6 +svn-fe - convert an SVN "dumpfile" to a fast-import stream
7 +
8 +SYNOPSIS
9 +--------
10 +svnadmin dump --incremental REPO | svn-fe [url] | git fast-import
11 +
12 +DESCRIPTION
13 +-----------
14 +
15 +Converts a Subversion dumpfile (version: 2) into input suitable for
16 +git-fast-import(1) and similar importers. REPO is a path to a
17 +Subversion repository mirrored on the local disk. Remote Subversion
18 +repositories can be mirrored on local disk using the `svnsync`
19 +command.
20 +
21 +INPUT FORMAT
22 +------------
23 +Subversion's repository dump format is documented in full in
24 +`notes/dump-load-format.txt` from the Subversion source tree.
25 +Files in this format can be generated using the 'svnadmin dump' or
26 +'svk admin dump' command.
27 +
28 +OUTPUT FORMAT
29 +-------------
30 +The fast-import format is documented by the git-fast-import(1)
31 +manual page.
32 +
33 +NOTES
34 +-----
35 +Subversion dumps do not record a separate author and committer for
36 +each revision, nor a separate display name and email address for
37 +each author. Like git-svn(1), 'svn-fe' will use the name
38 +
39 +---------
40 +user <user@UUID>
41 +---------
42 +
43 +as committer, where 'user' is the value of the `svn:author` property
44 +and 'UUID' the repository's identifier.
45 +
46 +To support incremental imports, 'svn-fe' will put a `git-svn-id`
47 +line at the end of each commit log message if passed an url on the
48 +command line. This line has the form `git-svn-id: URL@REVNO UUID`.
49 +
50 +Empty directories and unknown properties are silently discarded.
51 +
52 +The resulting repository will generally require further processing
53 +to put each project in its own repository and to separate the history
54 +of each branch. The 'git filter-branch --subdirectory-filter' command
55 +may be useful for this purpose.
56 +
57 +BUGS
58 +----
59 +Litters the current working directory with .bin files for
60 +persistence. Will be fixed when the svn-fe infrastructure is aware of
61 +a Git working directory.
62 +
63 +SEE ALSO
64 +--------
65 +git-svn(1), svn2git(1), svk(1), git-filter-branch(1), git-fast-import(1),
66 +https://svn.apache.org/repos/asf/subversion/trunk/notes/dump-load-format.txt